\hypertarget{a07556}{}\section{A\+CG\+:\+:Shader\+Modifier\+File Class Reference}
\label{a07556}\index{A\+C\+G\+::\+Shader\+Modifier\+File@{A\+C\+G\+::\+Shader\+Modifier\+File}}
Inheritance diagram for A\+CG\+:\+:Shader\+Modifier\+File\+:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=2.000000cm]{a07556}
\end{center}
\end{figure}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
void \hyperlink{a07556_ac07111d99ecb297d0472d3903819716d}{modify\+Vertex\+IO} (\hyperlink{a07568}{Shader\+Generator} $\ast$\+\_\+shader)
\begin{DoxyCompactList}\small\item\em Add your own inputs/outputs to the vertex shader. \end{DoxyCompactList}\item 
void \hyperlink{a07556_abaf389f03e0d93a05c047dfa1374a82d}{modify\+Tess\+Control\+IO} (\hyperlink{a07568}{Shader\+Generator} $\ast$\+\_\+shader)
\begin{DoxyCompactList}\small\item\em Add your own inputs/outputs to the tessellation control shader. \end{DoxyCompactList}\item 
void \hyperlink{a07556_a6c93242b747ff60aa7155ef091994f88}{modify\+Tess\+Eval\+IO} (\hyperlink{a07568}{Shader\+Generator} $\ast$\+\_\+shader)
\begin{DoxyCompactList}\small\item\em Add your own inputs/outputs to the tessellation evaluation shader. \end{DoxyCompactList}\item 
void \hyperlink{a07556_a0feda1c48cdda26ab4aedf931498a8e3}{modify\+Geometry\+IO} (\hyperlink{a07568}{Shader\+Generator} $\ast$\+\_\+shader)
\begin{DoxyCompactList}\small\item\em Add your own inputs/outputs to the geometry shader. \end{DoxyCompactList}\item 
void \hyperlink{a07556_adc1e1f9267d357bf62dce59b51030490}{modify\+Fragment\+IO} (\hyperlink{a07568}{Shader\+Generator} $\ast$\+\_\+shader)
\begin{DoxyCompactList}\small\item\em Add your own inputs/outputs to the fragment shader. \end{DoxyCompactList}\item 
void \hyperlink{a07556_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{a07556_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{a07556_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{a07556_a527fe83a0d4737fe0f70809149922a64}{modify\+Fragment\+End\+Code} (Q\+String\+List $\ast$\+\_\+code)
\begin{DoxyCompactList}\small\item\em Append code the the fragment shader. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{a07556_a8c0cdfeffdc50d40a32b2b43688f6219}\label{a07556_a8c0cdfeffdc50d40a32b2b43688f6219}} 
const Q\+String \& {\bfseries filename} () const
\item 
\mbox{\Hypertarget{a07556_a85b3a1683b590f7864aae199388c7ffa}\label{a07556_a85b3a1683b590f7864aae199388c7ffa}} 
const Q\+Date\+Time \& {\bfseries filetime} () const
\item 
\mbox{\Hypertarget{a07556_a89e0d0b322480d0a0b700034dfa63194}\label{a07556_a89e0d0b322480d0a0b700034dfa63194}} 
void {\bfseries filetime} (const Q\+Date\+Time \&\+\_\+newtime)
\item 
\mbox{\Hypertarget{a07556_a86836e3b5bce03fb1ced45c0ccb083e6}\label{a07556_a86836e3b5bce03fb1ced45c0ccb083e6}} 
void {\bfseries clear} ()
\end{DoxyCompactItemize}
\subsection*{Static Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{a07556_aa0b56adb7764159913aec3c27cd95f97}\label{a07556_aa0b56adb7764159913aec3c27cd95f97}} 
static \hyperlink{a07556}{Shader\+Modifier\+File} $\ast$ {\bfseries load\+From\+File} (Q\+String \+\_\+filename)
\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{a07556_a46d76fd76e67c47b17c30f9adee17b77}\label{a07556_a46d76fd76e67c47b17c30f9adee17b77}} 
void {\bfseries load\+Blocks} (const Q\+String\+List \&\+\_\+lines)
\item 
\mbox{\Hypertarget{a07556_a1ba60c313d9eac5379f215214354ee97}\label{a07556_a1ba60c313d9eac5379f215214354ee97}} 
void {\bfseries modify\+IO} (int \+\_\+stage, \hyperlink{a07568}{Shader\+Generator} $\ast$\+\_\+shader)
\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{a07556_a702c4dea089e697229510a7b2ae10c79}\label{a07556_a702c4dea089e697229510a7b2ae10c79}} 
Q\+String {\bfseries filename\+\_\+}
\item 
\mbox{\Hypertarget{a07556_a553cbcc2058133636891cfdb65f903d7}\label{a07556_a553cbcc2058133636891cfdb65f903d7}} 
Q\+Date\+Time {\bfseries filetime\+\_\+}
\item 
\mbox{\Hypertarget{a07556_ac183d8c0df1d38f9c4e7951580288f0a}\label{a07556_ac183d8c0df1d38f9c4e7951580288f0a}} 
int {\bfseries version\+\_\+}
\item 
\mbox{\Hypertarget{a07556_a1c4de46f0305b32798e1c2ac6789e063}\label{a07556_a1c4de46f0305b32798e1c2ac6789e063}} 
Q\+String\+List {\bfseries io\+\_\+} \mbox{[}5\mbox{]}
\item 
\mbox{\Hypertarget{a07556_a67810c556f75f33a127ad0cdeefc2719}\label{a07556_a67810c556f75f33a127ad0cdeefc2719}} 
Q\+String\+List {\bfseries vertex\+Begin\+Code\+\_\+}
\item 
\mbox{\Hypertarget{a07556_ad6d5d7ceb43296a1c51fee4b3fb6f694}\label{a07556_ad6d5d7ceb43296a1c51fee4b3fb6f694}} 
Q\+String\+List {\bfseries vertex\+End\+Code\+\_\+}
\item 
\mbox{\Hypertarget{a07556_a60c645444f2c3b3c6eab804aa9367dd7}\label{a07556_a60c645444f2c3b3c6eab804aa9367dd7}} 
Q\+String\+List {\bfseries fragment\+Begin\+Code\+\_\+}
\item 
\mbox{\Hypertarget{a07556_aa98303dde52ee16b3cf3ef0cc3a1eb1c}\label{a07556_aa98303dde52ee16b3cf3ef0cc3a1eb1c}} 
Q\+String\+List {\bfseries fragment\+End\+Code\+\_\+}
\end{DoxyCompactItemize}
\subsection*{Static Private Attributes}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{a07556_acc0d4797b7c19ff2e41af91fd7a53c03}\label{a07556_acc0d4797b7c19ff2e41af91fd7a53c03}} 
static Q\+Hash$<$ Q\+String, \hyperlink{a07556}{Shader\+Modifier\+File} $>$ {\bfseries file\+Cache\+\_\+}
\end{DoxyCompactItemize}


\subsection{Detailed Description}


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



\subsection{Member Function Documentation}
\mbox{\Hypertarget{a07556_add200998400c987dd92e4a7ef85c34eb}\label{a07556_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{\texorpdfstring{modify\+Fragment\+Begin\+Code()}{modifyFragmentBeginCode()}}
{\footnotesize\ttfamily 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]}}



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{a07580_a70fe99b722072abb212f210b75e11b4b}{A\+C\+G\+::\+Shader\+Modifier}.



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

\mbox{\Hypertarget{a07556_a527fe83a0d4737fe0f70809149922a64}\label{a07556_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{\texorpdfstring{modify\+Fragment\+End\+Code()}{modifyFragmentEndCode()}}
{\footnotesize\ttfamily 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]}}



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{a07580_a25b1e0be6dd4a8365ecb1c72da21d310}{A\+C\+G\+::\+Shader\+Modifier}.



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

\mbox{\Hypertarget{a07556_adc1e1f9267d357bf62dce59b51030490}\label{a07556_adc1e1f9267d357bf62dce59b51030490}} 
\index{A\+C\+G\+::\+Shader\+Modifier\+File@{A\+C\+G\+::\+Shader\+Modifier\+File}!modify\+Fragment\+IO@{modify\+Fragment\+IO}}
\index{modify\+Fragment\+IO@{modify\+Fragment\+IO}!A\+C\+G\+::\+Shader\+Modifier\+File@{A\+C\+G\+::\+Shader\+Modifier\+File}}
\subsubsection{\texorpdfstring{modify\+Fragment\+I\+O()}{modifyFragmentIO()}}
{\footnotesize\ttfamily void A\+C\+G\+::\+Shader\+Modifier\+File\+::modify\+Fragment\+IO (\begin{DoxyParamCaption}\item[{\hyperlink{a07568}{Shader\+Generator} $\ast$}]{\+\_\+shader }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}



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{a07580_ae720c7104306f1e696e690760b928048}{A\+C\+G\+::\+Shader\+Modifier}.



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

\mbox{\Hypertarget{a07556_a0feda1c48cdda26ab4aedf931498a8e3}\label{a07556_a0feda1c48cdda26ab4aedf931498a8e3}} 
\index{A\+C\+G\+::\+Shader\+Modifier\+File@{A\+C\+G\+::\+Shader\+Modifier\+File}!modify\+Geometry\+IO@{modify\+Geometry\+IO}}
\index{modify\+Geometry\+IO@{modify\+Geometry\+IO}!A\+C\+G\+::\+Shader\+Modifier\+File@{A\+C\+G\+::\+Shader\+Modifier\+File}}
\subsubsection{\texorpdfstring{modify\+Geometry\+I\+O()}{modifyGeometryIO()}}
{\footnotesize\ttfamily void A\+C\+G\+::\+Shader\+Modifier\+File\+::modify\+Geometry\+IO (\begin{DoxyParamCaption}\item[{\hyperlink{a07568}{Shader\+Generator} $\ast$}]{\+\_\+shader }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}



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{a07580_a18ccb497e9e46b32a10824c9409c9666}{A\+C\+G\+::\+Shader\+Modifier}.



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

\mbox{\Hypertarget{a07556_abaf389f03e0d93a05c047dfa1374a82d}\label{a07556_abaf389f03e0d93a05c047dfa1374a82d}} 
\index{A\+C\+G\+::\+Shader\+Modifier\+File@{A\+C\+G\+::\+Shader\+Modifier\+File}!modify\+Tess\+Control\+IO@{modify\+Tess\+Control\+IO}}
\index{modify\+Tess\+Control\+IO@{modify\+Tess\+Control\+IO}!A\+C\+G\+::\+Shader\+Modifier\+File@{A\+C\+G\+::\+Shader\+Modifier\+File}}
\subsubsection{\texorpdfstring{modify\+Tess\+Control\+I\+O()}{modifyTessControlIO()}}
{\footnotesize\ttfamily void A\+C\+G\+::\+Shader\+Modifier\+File\+::modify\+Tess\+Control\+IO (\begin{DoxyParamCaption}\item[{\hyperlink{a07568}{Shader\+Generator} $\ast$}]{\+\_\+shader }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}



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{a07580_a5258b3fadeb7e34345aabe87aaa5479c}{A\+C\+G\+::\+Shader\+Modifier}.



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

\mbox{\Hypertarget{a07556_a6c93242b747ff60aa7155ef091994f88}\label{a07556_a6c93242b747ff60aa7155ef091994f88}} 
\index{A\+C\+G\+::\+Shader\+Modifier\+File@{A\+C\+G\+::\+Shader\+Modifier\+File}!modify\+Tess\+Eval\+IO@{modify\+Tess\+Eval\+IO}}
\index{modify\+Tess\+Eval\+IO@{modify\+Tess\+Eval\+IO}!A\+C\+G\+::\+Shader\+Modifier\+File@{A\+C\+G\+::\+Shader\+Modifier\+File}}
\subsubsection{\texorpdfstring{modify\+Tess\+Eval\+I\+O()}{modifyTessEvalIO()}}
{\footnotesize\ttfamily void A\+C\+G\+::\+Shader\+Modifier\+File\+::modify\+Tess\+Eval\+IO (\begin{DoxyParamCaption}\item[{\hyperlink{a07568}{Shader\+Generator} $\ast$}]{\+\_\+shader }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}



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{a07580_a4bf90e17e6b02ae7d9fdffc96a890e07}{A\+C\+G\+::\+Shader\+Modifier}.



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

\mbox{\Hypertarget{a07556_ac959d207bd23ecdb252887b54aa5111c}\label{a07556_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{\texorpdfstring{modify\+Vertex\+Begin\+Code()}{modifyVertexBeginCode()}}
{\footnotesize\ttfamily 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]}}



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{a07580_a501dd2d58dd6427bc91e39d89c94b94e}{A\+C\+G\+::\+Shader\+Modifier}.



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

\mbox{\Hypertarget{a07556_a0bd734e571045e10426f5657a01dff09}\label{a07556_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{\texorpdfstring{modify\+Vertex\+End\+Code()}{modifyVertexEndCode()}}
{\footnotesize\ttfamily 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]}}



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{a07580_a5f7d792c06eff3a8dda3656825db1691}{A\+C\+G\+::\+Shader\+Modifier}.



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

\mbox{\Hypertarget{a07556_ac07111d99ecb297d0472d3903819716d}\label{a07556_ac07111d99ecb297d0472d3903819716d}} 
\index{A\+C\+G\+::\+Shader\+Modifier\+File@{A\+C\+G\+::\+Shader\+Modifier\+File}!modify\+Vertex\+IO@{modify\+Vertex\+IO}}
\index{modify\+Vertex\+IO@{modify\+Vertex\+IO}!A\+C\+G\+::\+Shader\+Modifier\+File@{A\+C\+G\+::\+Shader\+Modifier\+File}}
\subsubsection{\texorpdfstring{modify\+Vertex\+I\+O()}{modifyVertexIO()}}
{\footnotesize\ttfamily void A\+C\+G\+::\+Shader\+Modifier\+File\+::modify\+Vertex\+IO (\begin{DoxyParamCaption}\item[{\hyperlink{a07568}{Shader\+Generator} $\ast$}]{\+\_\+shader }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}



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{a07580_a0692498de2b752b70b8ac3afcbfb5212}{A\+C\+G\+::\+Shader\+Modifier}.



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



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