\hypertarget{a01165}{\section{A\+C\+G\+:\+:Shader\+Modifier\+File Class Reference}
\label{a01165}\index{A\+C\+G\+::\+Shader\+Modifier\+File@{A\+C\+G\+::\+Shader\+Modifier\+File}}
}
Inheritance diagram for A\+C\+G\+:\+:Shader\+Modifier\+File\+:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=2.000000cm]{a01165}
\end{center}
\end{figure}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
void \hyperlink{a01165_ac07111d99ecb297d0472d3903819716d}{modify\+Vertex\+I\+O} (\hyperlink{a01160}{Shader\+Generator} $\ast$\+\_\+shader)
\begin{DoxyCompactList}\small\item\em Add your own inputs/outputs to the vertex shader. \end{DoxyCompactList}\item 
void \hyperlink{a01165_abaf389f03e0d93a05c047dfa1374a82d}{modify\+Tess\+Control\+I\+O} (\hyperlink{a01160}{Shader\+Generator} $\ast$\+\_\+shader)
\begin{DoxyCompactList}\small\item\em Add your own inputs/outputs to the tessellation control shader. \end{DoxyCompactList}\item 
void \hyperlink{a01165_a6c93242b747ff60aa7155ef091994f88}{modify\+Tess\+Eval\+I\+O} (\hyperlink{a01160}{Shader\+Generator} $\ast$\+\_\+shader)
\begin{DoxyCompactList}\small\item\em Add your own inputs/outputs to the tessellation evaluation shader. \end{DoxyCompactList}\item 
void \hyperlink{a01165_a0feda1c48cdda26ab4aedf931498a8e3}{modify\+Geometry\+I\+O} (\hyperlink{a01160}{Shader\+Generator} $\ast$\+\_\+shader)
\begin{DoxyCompactList}\small\item\em Add your own inputs/outputs to the geometry shader. \end{DoxyCompactList}\item 
void \hyperlink{a01165_adc1e1f9267d357bf62dce59b51030490}{modify\+Fragment\+I\+O} (\hyperlink{a01160}{Shader\+Generator} $\ast$\+\_\+shader)
\begin{DoxyCompactList}\small\item\em Add your own inputs/outputs to the fragment shader. \end{DoxyCompactList}\item 
void \hyperlink{a01165_ac959d207bd23ecdb252887b54aa5111c}{modify\+Vertex\+Begin\+Code} (Q\+String\+List $\ast$\+\_\+code)
\begin{DoxyCompactList}\small\item\em Append code the the vertex shader. \end{DoxyCompactList}\item 
void \hyperlink{a01165_a0bd734e571045e10426f5657a01dff09}{modify\+Vertex\+End\+Code} (Q\+String\+List $\ast$\+\_\+code)
\begin{DoxyCompactList}\small\item\em Append code the the vertex shader. \end{DoxyCompactList}\item 
void \hyperlink{a01165_add200998400c987dd92e4a7ef85c34eb}{modify\+Fragment\+Begin\+Code} (Q\+String\+List $\ast$\+\_\+code)
\begin{DoxyCompactList}\small\item\em Append code the the fragment shader. \end{DoxyCompactList}\item 
void \hyperlink{a01165_a527fe83a0d4737fe0f70809149922a64}{modify\+Fragment\+End\+Code} (Q\+String\+List $\ast$\+\_\+code)
\begin{DoxyCompactList}\small\item\em Append code the the fragment shader. \end{DoxyCompactList}\item 
\hypertarget{a01165_a5131452e745d7901846c0aba9433e089}{const Q\+String \& {\bfseries filename} () const }\label{a01165_a5131452e745d7901846c0aba9433e089}

\item 
\hypertarget{a01165_a392f44df9d4cbb7ad7f44f85bbf9cecf}{const Q\+Date\+Time \& {\bfseries filetime} () const }\label{a01165_a392f44df9d4cbb7ad7f44f85bbf9cecf}

\item 
\hypertarget{a01165_a89e0d0b322480d0a0b700034dfa63194}{void {\bfseries filetime} (const Q\+Date\+Time \&\+\_\+newtime)}\label{a01165_a89e0d0b322480d0a0b700034dfa63194}

\item 
\hypertarget{a01165_a86836e3b5bce03fb1ced45c0ccb083e6}{void {\bfseries clear} ()}\label{a01165_a86836e3b5bce03fb1ced45c0ccb083e6}

\end{DoxyCompactItemize}
\subsection*{Static Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a01165_aa0b56adb7764159913aec3c27cd95f97}{static \hyperlink{a01165}{Shader\+Modifier\+File} $\ast$ {\bfseries load\+From\+File} (Q\+String \+\_\+filename)}\label{a01165_aa0b56adb7764159913aec3c27cd95f97}

\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a01165_a46d76fd76e67c47b17c30f9adee17b77}{void {\bfseries load\+Blocks} (const Q\+String\+List \&\+\_\+lines)}\label{a01165_a46d76fd76e67c47b17c30f9adee17b77}

\item 
\hypertarget{a01165_a1ba60c313d9eac5379f215214354ee97}{void {\bfseries modify\+I\+O} (int \+\_\+stage, \hyperlink{a01160}{Shader\+Generator} $\ast$\+\_\+shader)}\label{a01165_a1ba60c313d9eac5379f215214354ee97}

\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a01165_a702c4dea089e697229510a7b2ae10c79}{Q\+String {\bfseries filename\+\_\+}}\label{a01165_a702c4dea089e697229510a7b2ae10c79}

\item 
\hypertarget{a01165_a553cbcc2058133636891cfdb65f903d7}{Q\+Date\+Time {\bfseries filetime\+\_\+}}\label{a01165_a553cbcc2058133636891cfdb65f903d7}

\item 
\hypertarget{a01165_ac183d8c0df1d38f9c4e7951580288f0a}{int {\bfseries version\+\_\+}}\label{a01165_ac183d8c0df1d38f9c4e7951580288f0a}

\item 
\hypertarget{a01165_a1c4de46f0305b32798e1c2ac6789e063}{Q\+String\+List {\bfseries io\+\_\+} \mbox{[}5\mbox{]}}\label{a01165_a1c4de46f0305b32798e1c2ac6789e063}

\item 
\hypertarget{a01165_a67810c556f75f33a127ad0cdeefc2719}{Q\+String\+List {\bfseries vertex\+Begin\+Code\+\_\+}}\label{a01165_a67810c556f75f33a127ad0cdeefc2719}

\item 
\hypertarget{a01165_ad6d5d7ceb43296a1c51fee4b3fb6f694}{Q\+String\+List {\bfseries vertex\+End\+Code\+\_\+}}\label{a01165_ad6d5d7ceb43296a1c51fee4b3fb6f694}

\item 
\hypertarget{a01165_a60c645444f2c3b3c6eab804aa9367dd7}{Q\+String\+List {\bfseries fragment\+Begin\+Code\+\_\+}}\label{a01165_a60c645444f2c3b3c6eab804aa9367dd7}

\item 
\hypertarget{a01165_aa98303dde52ee16b3cf3ef0cc3a1eb1c}{Q\+String\+List {\bfseries fragment\+End\+Code\+\_\+}}\label{a01165_aa98303dde52ee16b3cf3ef0cc3a1eb1c}

\end{DoxyCompactItemize}
\subsection*{Static Private Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a01165_acc0d4797b7c19ff2e41af91fd7a53c03}{static Q\+Hash$<$ Q\+String, \\*
\hyperlink{a01165}{Shader\+Modifier\+File} $>$ {\bfseries file\+Cache\+\_\+}}\label{a01165_acc0d4797b7c19ff2e41af91fd7a53c03}

\end{DoxyCompactItemize}


\subsection{Detailed Description}


Definition at line 2473 of file Shader\+Generator.\+cc.



\subsection{Member Function Documentation}
\hypertarget{a01165_add200998400c987dd92e4a7ef85c34eb}{\index{A\+C\+G\+::\+Shader\+Modifier\+File@{A\+C\+G\+::\+Shader\+Modifier\+File}!modify\+Fragment\+Begin\+Code@{modify\+Fragment\+Begin\+Code}}
\index{modify\+Fragment\+Begin\+Code@{modify\+Fragment\+Begin\+Code}!A\+C\+G\+::\+Shader\+Modifier\+File@{A\+C\+G\+::\+Shader\+Modifier\+File}}
\subsubsection[{modify\+Fragment\+Begin\+Code}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Shader\+Modifier\+File\+::modify\+Fragment\+Begin\+Code (
\begin{DoxyParamCaption}
\item[{Q\+String\+List $\ast$}]{\+\_\+code}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}}\label{a01165_add200998400c987dd92e4a7ef85c34eb}


Append code the the fragment shader. 

Refer to the generation structure (\hyperlink{ShaderGenerator_page}{Shader Generator} ) to see where your code is added and which variables you can modify. Use


\begin{DoxyCode}
\_code->push\_back(\textcolor{stringliteral}{"..."});
\end{DoxyCode}


to insert your code here


\begin{DoxyParams}{Parameters}
{\em \+\_\+code} & string list of shader code. \\
\hline
\end{DoxyParams}


Reimplemented from \hyperlink{a01163_a70fe99b722072abb212f210b75e11b4b}{A\+C\+G\+::\+Shader\+Modifier}.



Definition at line 2493 of file Shader\+Generator.\+cc.

\hypertarget{a01165_a527fe83a0d4737fe0f70809149922a64}{\index{A\+C\+G\+::\+Shader\+Modifier\+File@{A\+C\+G\+::\+Shader\+Modifier\+File}!modify\+Fragment\+End\+Code@{modify\+Fragment\+End\+Code}}
\index{modify\+Fragment\+End\+Code@{modify\+Fragment\+End\+Code}!A\+C\+G\+::\+Shader\+Modifier\+File@{A\+C\+G\+::\+Shader\+Modifier\+File}}
\subsubsection[{modify\+Fragment\+End\+Code}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Shader\+Modifier\+File\+::modify\+Fragment\+End\+Code (
\begin{DoxyParamCaption}
\item[{Q\+String\+List $\ast$}]{\+\_\+code}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}}\label{a01165_a527fe83a0d4737fe0f70809149922a64}


Append code the the fragment shader. 

Refer to the generation structure (\hyperlink{ShaderGenerator_page}{Shader Generator} ) to see where your code is added and which variables you can modify. Use


\begin{DoxyCode}
\_code->push\_back(\textcolor{stringliteral}{"..."});
\end{DoxyCode}


to insert your code here.


\begin{DoxyParams}{Parameters}
{\em \+\_\+code} & string list of shader code. \\
\hline
\end{DoxyParams}


Reimplemented from \hyperlink{a01163_a25b1e0be6dd4a8365ecb1c72da21d310}{A\+C\+G\+::\+Shader\+Modifier}.



Definition at line 2494 of file Shader\+Generator.\+cc.

\hypertarget{a01165_adc1e1f9267d357bf62dce59b51030490}{\index{A\+C\+G\+::\+Shader\+Modifier\+File@{A\+C\+G\+::\+Shader\+Modifier\+File}!modify\+Fragment\+I\+O@{modify\+Fragment\+I\+O}}
\index{modify\+Fragment\+I\+O@{modify\+Fragment\+I\+O}!A\+C\+G\+::\+Shader\+Modifier\+File@{A\+C\+G\+::\+Shader\+Modifier\+File}}
\subsubsection[{modify\+Fragment\+I\+O}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Shader\+Modifier\+File\+::modify\+Fragment\+I\+O (
\begin{DoxyParamCaption}
\item[{{\bf Shader\+Generator} $\ast$}]{\+\_\+shader}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}}\label{a01165_adc1e1f9267d357bf62dce59b51030490}


Add your own inputs/outputs to the fragment shader. 

your implementation may look like this\+:


\begin{DoxyCode}
\_shader->addInput(\textcolor{stringliteral}{"sampler2D depthSampler"});
\_shader->addUniform(\textcolor{stringliteral}{"vec4 shaderParam"});
\end{DoxyCode}



\begin{DoxyParams}{Parameters}
{\em \+\_\+shader} & shader interface \\
\hline
\end{DoxyParams}


Reimplemented from \hyperlink{a01163_ae720c7104306f1e696e690760b928048}{A\+C\+G\+::\+Shader\+Modifier}.



Definition at line 2488 of file Shader\+Generator.\+cc.

\hypertarget{a01165_a0feda1c48cdda26ab4aedf931498a8e3}{\index{A\+C\+G\+::\+Shader\+Modifier\+File@{A\+C\+G\+::\+Shader\+Modifier\+File}!modify\+Geometry\+I\+O@{modify\+Geometry\+I\+O}}
\index{modify\+Geometry\+I\+O@{modify\+Geometry\+I\+O}!A\+C\+G\+::\+Shader\+Modifier\+File@{A\+C\+G\+::\+Shader\+Modifier\+File}}
\subsubsection[{modify\+Geometry\+I\+O}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Shader\+Modifier\+File\+::modify\+Geometry\+I\+O (
\begin{DoxyParamCaption}
\item[{{\bf Shader\+Generator} $\ast$}]{\+\_\+shader}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}}\label{a01165_a0feda1c48cdda26ab4aedf931498a8e3}


Add your own inputs/outputs to the geometry shader. 

your implementation may look like this\+:


\begin{DoxyCode}
\_shader->addInput(\textcolor{stringliteral}{"sampler2D depthSampler"});
\_shader->addUniform(\textcolor{stringliteral}{"vec4 shaderParam"});
\end{DoxyCode}



\begin{DoxyParams}{Parameters}
{\em \+\_\+shader} & shader interface \\
\hline
\end{DoxyParams}


Reimplemented from \hyperlink{a01163_a18ccb497e9e46b32a10824c9409c9666}{A\+C\+G\+::\+Shader\+Modifier}.



Definition at line 2487 of file Shader\+Generator.\+cc.

\hypertarget{a01165_abaf389f03e0d93a05c047dfa1374a82d}{\index{A\+C\+G\+::\+Shader\+Modifier\+File@{A\+C\+G\+::\+Shader\+Modifier\+File}!modify\+Tess\+Control\+I\+O@{modify\+Tess\+Control\+I\+O}}
\index{modify\+Tess\+Control\+I\+O@{modify\+Tess\+Control\+I\+O}!A\+C\+G\+::\+Shader\+Modifier\+File@{A\+C\+G\+::\+Shader\+Modifier\+File}}
\subsubsection[{modify\+Tess\+Control\+I\+O}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Shader\+Modifier\+File\+::modify\+Tess\+Control\+I\+O (
\begin{DoxyParamCaption}
\item[{{\bf Shader\+Generator} $\ast$}]{\+\_\+shader}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}}\label{a01165_abaf389f03e0d93a05c047dfa1374a82d}


Add your own inputs/outputs to the tessellation control shader. 

your implementation may look like this\+:


\begin{DoxyCode}
\_shader->addInput(\textcolor{stringliteral}{"sampler2D depthSampler"});
\_shader->addUniform(\textcolor{stringliteral}{"vec4 shaderParam"});
\end{DoxyCode}



\begin{DoxyParams}{Parameters}
{\em \+\_\+shader} & shader interface \\
\hline
\end{DoxyParams}


Reimplemented from \hyperlink{a01163_a5258b3fadeb7e34345aabe87aaa5479c}{A\+C\+G\+::\+Shader\+Modifier}.



Definition at line 2485 of file Shader\+Generator.\+cc.

\hypertarget{a01165_a6c93242b747ff60aa7155ef091994f88}{\index{A\+C\+G\+::\+Shader\+Modifier\+File@{A\+C\+G\+::\+Shader\+Modifier\+File}!modify\+Tess\+Eval\+I\+O@{modify\+Tess\+Eval\+I\+O}}
\index{modify\+Tess\+Eval\+I\+O@{modify\+Tess\+Eval\+I\+O}!A\+C\+G\+::\+Shader\+Modifier\+File@{A\+C\+G\+::\+Shader\+Modifier\+File}}
\subsubsection[{modify\+Tess\+Eval\+I\+O}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Shader\+Modifier\+File\+::modify\+Tess\+Eval\+I\+O (
\begin{DoxyParamCaption}
\item[{{\bf Shader\+Generator} $\ast$}]{\+\_\+shader}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}}\label{a01165_a6c93242b747ff60aa7155ef091994f88}


Add your own inputs/outputs to the tessellation evaluation shader. 

your implementation may look like this\+:


\begin{DoxyCode}
\_shader->addInput(\textcolor{stringliteral}{"sampler2D depthSampler"});
\_shader->addUniform(\textcolor{stringliteral}{"vec4 shaderParam"});
\end{DoxyCode}



\begin{DoxyParams}{Parameters}
{\em \+\_\+shader} & shader interface \\
\hline
\end{DoxyParams}


Reimplemented from \hyperlink{a01163_a4bf90e17e6b02ae7d9fdffc96a890e07}{A\+C\+G\+::\+Shader\+Modifier}.



Definition at line 2486 of file Shader\+Generator.\+cc.

\hypertarget{a01165_ac959d207bd23ecdb252887b54aa5111c}{\index{A\+C\+G\+::\+Shader\+Modifier\+File@{A\+C\+G\+::\+Shader\+Modifier\+File}!modify\+Vertex\+Begin\+Code@{modify\+Vertex\+Begin\+Code}}
\index{modify\+Vertex\+Begin\+Code@{modify\+Vertex\+Begin\+Code}!A\+C\+G\+::\+Shader\+Modifier\+File@{A\+C\+G\+::\+Shader\+Modifier\+File}}
\subsubsection[{modify\+Vertex\+Begin\+Code}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Shader\+Modifier\+File\+::modify\+Vertex\+Begin\+Code (
\begin{DoxyParamCaption}
\item[{Q\+String\+List $\ast$}]{\+\_\+code}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}}\label{a01165_ac959d207bd23ecdb252887b54aa5111c}


Append code the the vertex shader. 

Refer to the generation structure (\hyperlink{ShaderGenerator_page}{Shader Generator} ) to see where your code is added and which variables you can modify. Use 
\begin{DoxyCode}
\_code->push\_back(\textcolor{stringliteral}{"..."});
\end{DoxyCode}
 to insert your code here.


\begin{DoxyParams}{Parameters}
{\em \+\_\+code} & string list of shader code. \\
\hline
\end{DoxyParams}


Reimplemented from \hyperlink{a01163_a501dd2d58dd6427bc91e39d89c94b94e}{A\+C\+G\+::\+Shader\+Modifier}.



Definition at line 2491 of file Shader\+Generator.\+cc.

\hypertarget{a01165_a0bd734e571045e10426f5657a01dff09}{\index{A\+C\+G\+::\+Shader\+Modifier\+File@{A\+C\+G\+::\+Shader\+Modifier\+File}!modify\+Vertex\+End\+Code@{modify\+Vertex\+End\+Code}}
\index{modify\+Vertex\+End\+Code@{modify\+Vertex\+End\+Code}!A\+C\+G\+::\+Shader\+Modifier\+File@{A\+C\+G\+::\+Shader\+Modifier\+File}}
\subsubsection[{modify\+Vertex\+End\+Code}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Shader\+Modifier\+File\+::modify\+Vertex\+End\+Code (
\begin{DoxyParamCaption}
\item[{Q\+String\+List $\ast$}]{\+\_\+code}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}}\label{a01165_a0bd734e571045e10426f5657a01dff09}


Append code the the vertex shader. 

Refer to the generation structure (\hyperlink{ShaderGenerator_page}{Shader Generator} ) to see where your code is added and which variables you can modify. Use


\begin{DoxyCode}
\_code->push\_back(\textcolor{stringliteral}{"..."});
\end{DoxyCode}
 to insert your code here


\begin{DoxyParams}{Parameters}
{\em \+\_\+code} & string list of shader code. \\
\hline
\end{DoxyParams}


Reimplemented from \hyperlink{a01163_a5f7d792c06eff3a8dda3656825db1691}{A\+C\+G\+::\+Shader\+Modifier}.



Definition at line 2492 of file Shader\+Generator.\+cc.

\hypertarget{a01165_ac07111d99ecb297d0472d3903819716d}{\index{A\+C\+G\+::\+Shader\+Modifier\+File@{A\+C\+G\+::\+Shader\+Modifier\+File}!modify\+Vertex\+I\+O@{modify\+Vertex\+I\+O}}
\index{modify\+Vertex\+I\+O@{modify\+Vertex\+I\+O}!A\+C\+G\+::\+Shader\+Modifier\+File@{A\+C\+G\+::\+Shader\+Modifier\+File}}
\subsubsection[{modify\+Vertex\+I\+O}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Shader\+Modifier\+File\+::modify\+Vertex\+I\+O (
\begin{DoxyParamCaption}
\item[{{\bf Shader\+Generator} $\ast$}]{\+\_\+shader}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}}\label{a01165_ac07111d99ecb297d0472d3903819716d}


Add your own inputs/outputs to the vertex shader. 

Your implementation may look like this\+:


\begin{DoxyCode}
\_shader->addInput(\textcolor{stringliteral}{"vec4 inTangent"});
\_shader->addUniform(\textcolor{stringliteral}{"vec4 shaderParam"});
\end{DoxyCode}



\begin{DoxyParams}{Parameters}
{\em \+\_\+shader} & shader interface \\
\hline
\end{DoxyParams}


Reimplemented from \hyperlink{a01163_a0692498de2b752b70b8ac3afcbfb5212}{A\+C\+G\+::\+Shader\+Modifier}.



Definition at line 2484 of file Shader\+Generator.\+cc.



The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
\item 
A\+C\+G/\+G\+L/Shader\+Generator.\+cc\end{DoxyCompactItemize}
