\hypertarget{classACG_1_1ShaderModifierFile}{}\section{A\+CG\+:\+:Shader\+Modifier\+File Class Reference}
\label{classACG_1_1ShaderModifierFile}\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]{classACG_1_1ShaderModifierFile}
\end{center}
\end{figure}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
void \hyperlink{classACG_1_1ShaderModifierFile_a88fa99947d0ed32259eac641943f7387}{modify\+Vertex\+IO} (\hyperlink{classACG_1_1ShaderGenerator}{Shader\+Generator} $\ast$\+\_\+shader) override
\begin{DoxyCompactList}\small\item\em Add your own inputs/outputs to the vertex shader. \end{DoxyCompactList}\item 
void \hyperlink{classACG_1_1ShaderModifierFile_ae4e73507f71ee7f5d974f79ca88f5529}{modify\+Tess\+Control\+IO} (\hyperlink{classACG_1_1ShaderGenerator}{Shader\+Generator} $\ast$\+\_\+shader) override
\begin{DoxyCompactList}\small\item\em Add your own inputs/outputs to the tessellation control shader. \end{DoxyCompactList}\item 
void \hyperlink{classACG_1_1ShaderModifierFile_a31407e8f2583f7dd00f2ccdf14a318ad}{modify\+Tess\+Eval\+IO} (\hyperlink{classACG_1_1ShaderGenerator}{Shader\+Generator} $\ast$\+\_\+shader) override
\begin{DoxyCompactList}\small\item\em Add your own inputs/outputs to the tessellation evaluation shader. \end{DoxyCompactList}\item 
void \hyperlink{classACG_1_1ShaderModifierFile_a67aa376b99dabf7ce06891f9d0541034}{modify\+Geometry\+IO} (\hyperlink{classACG_1_1ShaderGenerator}{Shader\+Generator} $\ast$\+\_\+shader) override
\begin{DoxyCompactList}\small\item\em Add your own inputs/outputs to the geometry shader. \end{DoxyCompactList}\item 
void \hyperlink{classACG_1_1ShaderModifierFile_ab2640975cfda9dab4bd4608204cbb151}{modify\+Fragment\+IO} (\hyperlink{classACG_1_1ShaderGenerator}{Shader\+Generator} $\ast$\+\_\+shader) override
\begin{DoxyCompactList}\small\item\em Add your own inputs/outputs to the fragment shader. \end{DoxyCompactList}\item 
void \hyperlink{classACG_1_1ShaderModifierFile_ab8c8036a65dfa6074eadecd304b65ecb}{modify\+Vertex\+Begin\+Code} (Q\+String\+List $\ast$\+\_\+code) override
\begin{DoxyCompactList}\small\item\em Append code the the vertex shader. \end{DoxyCompactList}\item 
void \hyperlink{classACG_1_1ShaderModifierFile_a6e8c1df9d191cba2b6afb9ca777dbe38}{modify\+Vertex\+End\+Code} (Q\+String\+List $\ast$\+\_\+code) override
\begin{DoxyCompactList}\small\item\em Append code the the vertex shader. \end{DoxyCompactList}\item 
void \hyperlink{classACG_1_1ShaderModifierFile_a408ec2b79a8bb3ab28cc26fbad98bb02}{modify\+Fragment\+Begin\+Code} (Q\+String\+List $\ast$\+\_\+code) override
\begin{DoxyCompactList}\small\item\em Append code the the fragment shader. \end{DoxyCompactList}\item 
void \hyperlink{classACG_1_1ShaderModifierFile_ab0d6bf678ebe2da837d89f1110bfdaf6}{modify\+Fragment\+End\+Code} (Q\+String\+List $\ast$\+\_\+code) override
\begin{DoxyCompactList}\small\item\em Append code the the fragment shader. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1ShaderModifierFile_a8c0cdfeffdc50d40a32b2b43688f6219}\label{classACG_1_1ShaderModifierFile_a8c0cdfeffdc50d40a32b2b43688f6219}} 
const Q\+String \& {\bfseries filename} () const
\item 
\mbox{\Hypertarget{classACG_1_1ShaderModifierFile_a85b3a1683b590f7864aae199388c7ffa}\label{classACG_1_1ShaderModifierFile_a85b3a1683b590f7864aae199388c7ffa}} 
const Q\+Date\+Time \& {\bfseries filetime} () const
\item 
\mbox{\Hypertarget{classACG_1_1ShaderModifierFile_a89e0d0b322480d0a0b700034dfa63194}\label{classACG_1_1ShaderModifierFile_a89e0d0b322480d0a0b700034dfa63194}} 
void {\bfseries filetime} (const Q\+Date\+Time \&\+\_\+newtime)
\item 
\mbox{\Hypertarget{classACG_1_1ShaderModifierFile_a86836e3b5bce03fb1ced45c0ccb083e6}\label{classACG_1_1ShaderModifierFile_a86836e3b5bce03fb1ced45c0ccb083e6}} 
void {\bfseries clear} ()
\end{DoxyCompactItemize}
\subsection*{Static Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classACG_1_1ShaderModifierFile_aa0b56adb7764159913aec3c27cd95f97}\label{classACG_1_1ShaderModifierFile_aa0b56adb7764159913aec3c27cd95f97}} 
static \hyperlink{classACG_1_1ShaderModifierFile}{Shader\+Modifier\+File} $\ast$ {\bfseries load\+From\+File} (Q\+String \+\_\+filename)
\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classACG_1_1ShaderModifierFile_a46d76fd76e67c47b17c30f9adee17b77}\label{classACG_1_1ShaderModifierFile_a46d76fd76e67c47b17c30f9adee17b77}} 
void {\bfseries load\+Blocks} (const Q\+String\+List \&\+\_\+lines)
\item 
\mbox{\Hypertarget{classACG_1_1ShaderModifierFile_a1ba60c313d9eac5379f215214354ee97}\label{classACG_1_1ShaderModifierFile_a1ba60c313d9eac5379f215214354ee97}} 
void {\bfseries modify\+IO} (int \+\_\+stage, \hyperlink{classACG_1_1ShaderGenerator}{Shader\+Generator} $\ast$\+\_\+shader)
\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classACG_1_1ShaderModifierFile_a702c4dea089e697229510a7b2ae10c79}\label{classACG_1_1ShaderModifierFile_a702c4dea089e697229510a7b2ae10c79}} 
Q\+String {\bfseries filename\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1ShaderModifierFile_a553cbcc2058133636891cfdb65f903d7}\label{classACG_1_1ShaderModifierFile_a553cbcc2058133636891cfdb65f903d7}} 
Q\+Date\+Time {\bfseries filetime\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1ShaderModifierFile_ac183d8c0df1d38f9c4e7951580288f0a}\label{classACG_1_1ShaderModifierFile_ac183d8c0df1d38f9c4e7951580288f0a}} 
int {\bfseries version\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1ShaderModifierFile_a1c4de46f0305b32798e1c2ac6789e063}\label{classACG_1_1ShaderModifierFile_a1c4de46f0305b32798e1c2ac6789e063}} 
Q\+String\+List {\bfseries io\+\_\+} \mbox{[}5\mbox{]}
\item 
\mbox{\Hypertarget{classACG_1_1ShaderModifierFile_a67810c556f75f33a127ad0cdeefc2719}\label{classACG_1_1ShaderModifierFile_a67810c556f75f33a127ad0cdeefc2719}} 
Q\+String\+List {\bfseries vertex\+Begin\+Code\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1ShaderModifierFile_ad6d5d7ceb43296a1c51fee4b3fb6f694}\label{classACG_1_1ShaderModifierFile_ad6d5d7ceb43296a1c51fee4b3fb6f694}} 
Q\+String\+List {\bfseries vertex\+End\+Code\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1ShaderModifierFile_a60c645444f2c3b3c6eab804aa9367dd7}\label{classACG_1_1ShaderModifierFile_a60c645444f2c3b3c6eab804aa9367dd7}} 
Q\+String\+List {\bfseries fragment\+Begin\+Code\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1ShaderModifierFile_aa98303dde52ee16b3cf3ef0cc3a1eb1c}\label{classACG_1_1ShaderModifierFile_aa98303dde52ee16b3cf3ef0cc3a1eb1c}} 
Q\+String\+List {\bfseries fragment\+End\+Code\+\_\+}
\end{DoxyCompactItemize}
\subsection*{Static Private Attributes}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classACG_1_1ShaderModifierFile_acc0d4797b7c19ff2e41af91fd7a53c03}\label{classACG_1_1ShaderModifierFile_acc0d4797b7c19ff2e41af91fd7a53c03}} 
static Q\+Hash$<$ Q\+String, \hyperlink{classACG_1_1ShaderModifierFile}{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{classACG_1_1ShaderModifierFile_a408ec2b79a8bb3ab28cc26fbad98bb02}\label{classACG_1_1ShaderModifierFile_a408ec2b79a8bb3ab28cc26fbad98bb02}} 
\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 [override]}, {\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{classACG_1_1ShaderModifier_a70fe99b722072abb212f210b75e11b4b}{A\+C\+G\+::\+Shader\+Modifier}.



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

\mbox{\Hypertarget{classACG_1_1ShaderModifierFile_ab0d6bf678ebe2da837d89f1110bfdaf6}\label{classACG_1_1ShaderModifierFile_ab0d6bf678ebe2da837d89f1110bfdaf6}} 
\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 [override]}, {\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{classACG_1_1ShaderModifier_a25b1e0be6dd4a8365ecb1c72da21d310}{A\+C\+G\+::\+Shader\+Modifier}.



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

\mbox{\Hypertarget{classACG_1_1ShaderModifierFile_ab2640975cfda9dab4bd4608204cbb151}\label{classACG_1_1ShaderModifierFile_ab2640975cfda9dab4bd4608204cbb151}} 
\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{classACG_1_1ShaderGenerator}{Shader\+Generator} $\ast$}]{\+\_\+shader }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\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{classACG_1_1ShaderModifier_ae720c7104306f1e696e690760b928048}{A\+C\+G\+::\+Shader\+Modifier}.



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

\mbox{\Hypertarget{classACG_1_1ShaderModifierFile_a67aa376b99dabf7ce06891f9d0541034}\label{classACG_1_1ShaderModifierFile_a67aa376b99dabf7ce06891f9d0541034}} 
\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{classACG_1_1ShaderGenerator}{Shader\+Generator} $\ast$}]{\+\_\+shader }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\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{classACG_1_1ShaderModifier_a18ccb497e9e46b32a10824c9409c9666}{A\+C\+G\+::\+Shader\+Modifier}.



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

\mbox{\Hypertarget{classACG_1_1ShaderModifierFile_ae4e73507f71ee7f5d974f79ca88f5529}\label{classACG_1_1ShaderModifierFile_ae4e73507f71ee7f5d974f79ca88f5529}} 
\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{classACG_1_1ShaderGenerator}{Shader\+Generator} $\ast$}]{\+\_\+shader }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\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{classACG_1_1ShaderModifier_a5258b3fadeb7e34345aabe87aaa5479c}{A\+C\+G\+::\+Shader\+Modifier}.



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

\mbox{\Hypertarget{classACG_1_1ShaderModifierFile_a31407e8f2583f7dd00f2ccdf14a318ad}\label{classACG_1_1ShaderModifierFile_a31407e8f2583f7dd00f2ccdf14a318ad}} 
\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{classACG_1_1ShaderGenerator}{Shader\+Generator} $\ast$}]{\+\_\+shader }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\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{classACG_1_1ShaderModifier_a4bf90e17e6b02ae7d9fdffc96a890e07}{A\+C\+G\+::\+Shader\+Modifier}.



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

\mbox{\Hypertarget{classACG_1_1ShaderModifierFile_ab8c8036a65dfa6074eadecd304b65ecb}\label{classACG_1_1ShaderModifierFile_ab8c8036a65dfa6074eadecd304b65ecb}} 
\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 [override]}, {\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{classACG_1_1ShaderModifier_a501dd2d58dd6427bc91e39d89c94b94e}{A\+C\+G\+::\+Shader\+Modifier}.



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

\mbox{\Hypertarget{classACG_1_1ShaderModifierFile_a6e8c1df9d191cba2b6afb9ca777dbe38}\label{classACG_1_1ShaderModifierFile_a6e8c1df9d191cba2b6afb9ca777dbe38}} 
\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 [override]}, {\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{classACG_1_1ShaderModifier_a5f7d792c06eff3a8dda3656825db1691}{A\+C\+G\+::\+Shader\+Modifier}.



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

\mbox{\Hypertarget{classACG_1_1ShaderModifierFile_a88fa99947d0ed32259eac641943f7387}\label{classACG_1_1ShaderModifierFile_a88fa99947d0ed32259eac641943f7387}} 
\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{classACG_1_1ShaderGenerator}{Shader\+Generator} $\ast$}]{\+\_\+shader }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\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{classACG_1_1ShaderModifier_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}
