\hypertarget{a01164}{\section{A\+C\+G\+:\+:Scene\+Graph\+:\+:A\+C\+G\+:\+:Shader\+Modifier Class Reference}
\label{a01164}\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier}}
}
Inheritance diagram for A\+C\+G\+:\+:Scene\+Graph\+:\+:A\+C\+G\+:\+:Shader\+Modifier\+:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=2.000000cm]{a01164}
\end{center}
\end{figure}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
virtual void \hyperlink{a01164_aa6bc802c1c0f3e5c2cdc6cfba7d625ac}{modify\+Vertex\+I\+O} (\hyperlink{a01159}{Shader\+Generator} $\ast$\+\_\+shader)
\begin{DoxyCompactList}\small\item\em Add your own inputs/outputs to the vertex shader. \end{DoxyCompactList}\item 
virtual void \hyperlink{a01164_a69501c917261b9910db36c2423449dad}{modify\+Vertex\+Begin\+Code} (Q\+String\+List $\ast$\+\_\+code)
\begin{DoxyCompactList}\small\item\em Append code the the vertex shader. \end{DoxyCompactList}\item 
virtual void \hyperlink{a01164_a63558e2ec557343fb04b8d1e12c47540}{modify\+Vertex\+End\+Code} (Q\+String\+List $\ast$\+\_\+code)
\begin{DoxyCompactList}\small\item\em Append code the the vertex shader. \end{DoxyCompactList}\item 
virtual void \hyperlink{a01164_af1d73cc52881c8e56330d67cc5779a75}{modify\+Geometry\+I\+O} (\hyperlink{a01159}{Shader\+Generator} $\ast$\+\_\+shader)
\begin{DoxyCompactList}\small\item\em Add your own inputs/outputs to the geometry shader. \end{DoxyCompactList}\item 
virtual void \hyperlink{a01164_afe8aa5efa51e7c1bb1228e68e82a2f62}{modify\+Tess\+Control\+I\+O} (\hyperlink{a01159}{Shader\+Generator} $\ast$\+\_\+shader)
\begin{DoxyCompactList}\small\item\em Add your own inputs/outputs to the tessellation control shader. \end{DoxyCompactList}\item 
virtual void \hyperlink{a01164_a63c2a69858fa32b87132aec7fcfb66af}{modify\+Tess\+Eval\+I\+O} (\hyperlink{a01159}{Shader\+Generator} $\ast$\+\_\+shader)
\begin{DoxyCompactList}\small\item\em Add your own inputs/outputs to the tessellation evaluation shader. \end{DoxyCompactList}\item 
virtual void \hyperlink{a01164_a34816a1f7236c46bded358c4a615946c}{modify\+Fragment\+I\+O} (\hyperlink{a01159}{Shader\+Generator} $\ast$\+\_\+shader)
\begin{DoxyCompactList}\small\item\em Add your own inputs/outputs to the fragment shader. \end{DoxyCompactList}\item 
virtual void \hyperlink{a01164_a6f5730d2cde1def34dfbedc83d674e7e}{modify\+Fragment\+Begin\+Code} (Q\+String\+List $\ast$\+\_\+code)
\begin{DoxyCompactList}\small\item\em Append code the the fragment shader. \end{DoxyCompactList}\item 
virtual void \hyperlink{a01164_a0719b50714550a841ae283cf8d20e505}{modify\+Fragment\+End\+Code} (Q\+String\+List $\ast$\+\_\+code)
\begin{DoxyCompactList}\small\item\em Append code the the fragment shader. \end{DoxyCompactList}\item 
virtual void \hyperlink{a01164_a7cf90bb5e896bf08ea47eb83dcfc1802}{modify\+Lighting\+Code} (Q\+String\+List $\ast$\+\_\+code, int \+\_\+light\+Id, Shader\+Gen\+Light\+Type \+\_\+light\+Type)
\begin{DoxyCompactList}\small\item\em Modify the default lighting code of the shader generator. \end{DoxyCompactList}\item 
virtual bool \hyperlink{a01164_a3c7068c03c7a933e7148ab6124092dd1}{replace\+Default\+Lighting\+Code} ()
\begin{DoxyCompactList}\small\item\em Specify whether this modifier replaces or extends the default lighting code. \end{DoxyCompactList}\item 
unsigned int \hyperlink{a01164_af665680247710a74a4b7b5686ba143ea}{get\+I\+D} ()
\begin{DoxyCompactList}\small\item\em Returns the modifier I\+D. \end{DoxyCompactList}\item 
\hypertarget{a01164_adec2f4752a3bf7f4d886f476e80458da}{{\bfseries operator std\+::vector$<$ unsigned int $>$} () const }\label{a01164_adec2f4752a3bf7f4d886f476e80458da}

\item 
\hypertarget{a01164_a93098bca71501f40fb341181b5b73c97}{std\+::vector$<$ unsigned int $>$ {\bfseries operator$\vert$} (const std\+::vector$<$ unsigned int $>$ \&\+\_\+v) const }\label{a01164_a93098bca71501f40fb341181b5b73c97}

\item 
virtual void \hyperlink{a01164_aa6bc802c1c0f3e5c2cdc6cfba7d625ac}{modify\+Vertex\+I\+O} (\hyperlink{a01159}{Shader\+Generator} $\ast$\+\_\+shader)
\begin{DoxyCompactList}\small\item\em Add your own inputs/outputs to the vertex shader. \end{DoxyCompactList}\item 
virtual void \hyperlink{a01164_a69501c917261b9910db36c2423449dad}{modify\+Vertex\+Begin\+Code} (Q\+String\+List $\ast$\+\_\+code)
\begin{DoxyCompactList}\small\item\em Append code the the vertex shader. \end{DoxyCompactList}\item 
virtual void \hyperlink{a01164_a63558e2ec557343fb04b8d1e12c47540}{modify\+Vertex\+End\+Code} (Q\+String\+List $\ast$\+\_\+code)
\begin{DoxyCompactList}\small\item\em Append code the the vertex shader. \end{DoxyCompactList}\item 
virtual void \hyperlink{a01164_af1d73cc52881c8e56330d67cc5779a75}{modify\+Geometry\+I\+O} (\hyperlink{a01159}{Shader\+Generator} $\ast$\+\_\+shader)
\begin{DoxyCompactList}\small\item\em Add your own inputs/outputs to the geometry shader. \end{DoxyCompactList}\item 
virtual void \hyperlink{a01164_afe8aa5efa51e7c1bb1228e68e82a2f62}{modify\+Tess\+Control\+I\+O} (\hyperlink{a01159}{Shader\+Generator} $\ast$\+\_\+shader)
\begin{DoxyCompactList}\small\item\em Add your own inputs/outputs to the tessellation control shader. \end{DoxyCompactList}\item 
virtual void \hyperlink{a01164_a63c2a69858fa32b87132aec7fcfb66af}{modify\+Tess\+Eval\+I\+O} (\hyperlink{a01159}{Shader\+Generator} $\ast$\+\_\+shader)
\begin{DoxyCompactList}\small\item\em Add your own inputs/outputs to the tessellation evaluation shader. \end{DoxyCompactList}\item 
virtual void \hyperlink{a01164_a34816a1f7236c46bded358c4a615946c}{modify\+Fragment\+I\+O} (\hyperlink{a01159}{Shader\+Generator} $\ast$\+\_\+shader)
\begin{DoxyCompactList}\small\item\em Add your own inputs/outputs to the fragment shader. \end{DoxyCompactList}\item 
virtual void \hyperlink{a01164_a6f5730d2cde1def34dfbedc83d674e7e}{modify\+Fragment\+Begin\+Code} (Q\+String\+List $\ast$\+\_\+code)
\begin{DoxyCompactList}\small\item\em Append code the the fragment shader. \end{DoxyCompactList}\item 
virtual void \hyperlink{a01164_a0719b50714550a841ae283cf8d20e505}{modify\+Fragment\+End\+Code} (Q\+String\+List $\ast$\+\_\+code)
\begin{DoxyCompactList}\small\item\em Append code the the fragment shader. \end{DoxyCompactList}\item 
virtual void \hyperlink{a01164_a7cf90bb5e896bf08ea47eb83dcfc1802}{modify\+Lighting\+Code} (Q\+String\+List $\ast$\+\_\+code, int \+\_\+light\+Id, Shader\+Gen\+Light\+Type \+\_\+light\+Type)
\begin{DoxyCompactList}\small\item\em Modify the default lighting code of the shader generator. \end{DoxyCompactList}\item 
virtual bool \hyperlink{a01164_a3c7068c03c7a933e7148ab6124092dd1}{replace\+Default\+Lighting\+Code} ()
\begin{DoxyCompactList}\small\item\em Specify whether this modifier replaces or extends the default lighting code. \end{DoxyCompactList}\item 
unsigned int \hyperlink{a01164_af665680247710a74a4b7b5686ba143ea}{get\+I\+D} ()
\begin{DoxyCompactList}\small\item\em Returns the modifier I\+D. \end{DoxyCompactList}\item 
\hypertarget{a01164_adec2f4752a3bf7f4d886f476e80458da}{{\bfseries operator std\+::vector$<$ unsigned int $>$} () const }\label{a01164_adec2f4752a3bf7f4d886f476e80458da}

\item 
\hypertarget{a01164_a93098bca71501f40fb341181b5b73c97}{std\+::vector$<$ unsigned int $>$ {\bfseries operator$\vert$} (const std\+::vector$<$ unsigned int $>$ \&\+\_\+v) const }\label{a01164_a93098bca71501f40fb341181b5b73c97}

\item 
virtual void \hyperlink{a01164_aa6bc802c1c0f3e5c2cdc6cfba7d625ac}{modify\+Vertex\+I\+O} (\hyperlink{a01159}{Shader\+Generator} $\ast$\+\_\+shader)
\begin{DoxyCompactList}\small\item\em Add your own inputs/outputs to the vertex shader. \end{DoxyCompactList}\item 
virtual void \hyperlink{a01164_a69501c917261b9910db36c2423449dad}{modify\+Vertex\+Begin\+Code} (Q\+String\+List $\ast$\+\_\+code)
\begin{DoxyCompactList}\small\item\em Append code the the vertex shader. \end{DoxyCompactList}\item 
virtual void \hyperlink{a01164_a63558e2ec557343fb04b8d1e12c47540}{modify\+Vertex\+End\+Code} (Q\+String\+List $\ast$\+\_\+code)
\begin{DoxyCompactList}\small\item\em Append code the the vertex shader. \end{DoxyCompactList}\item 
virtual void \hyperlink{a01164_af1d73cc52881c8e56330d67cc5779a75}{modify\+Geometry\+I\+O} (\hyperlink{a01159}{Shader\+Generator} $\ast$\+\_\+shader)
\begin{DoxyCompactList}\small\item\em Add your own inputs/outputs to the geometry shader. \end{DoxyCompactList}\item 
virtual void \hyperlink{a01164_afe8aa5efa51e7c1bb1228e68e82a2f62}{modify\+Tess\+Control\+I\+O} (\hyperlink{a01159}{Shader\+Generator} $\ast$\+\_\+shader)
\begin{DoxyCompactList}\small\item\em Add your own inputs/outputs to the tessellation control shader. \end{DoxyCompactList}\item 
virtual void \hyperlink{a01164_a63c2a69858fa32b87132aec7fcfb66af}{modify\+Tess\+Eval\+I\+O} (\hyperlink{a01159}{Shader\+Generator} $\ast$\+\_\+shader)
\begin{DoxyCompactList}\small\item\em Add your own inputs/outputs to the tessellation evaluation shader. \end{DoxyCompactList}\item 
virtual void \hyperlink{a01164_a34816a1f7236c46bded358c4a615946c}{modify\+Fragment\+I\+O} (\hyperlink{a01159}{Shader\+Generator} $\ast$\+\_\+shader)
\begin{DoxyCompactList}\small\item\em Add your own inputs/outputs to the fragment shader. \end{DoxyCompactList}\item 
virtual void \hyperlink{a01164_a6f5730d2cde1def34dfbedc83d674e7e}{modify\+Fragment\+Begin\+Code} (Q\+String\+List $\ast$\+\_\+code)
\begin{DoxyCompactList}\small\item\em Append code the the fragment shader. \end{DoxyCompactList}\item 
virtual void \hyperlink{a01164_a0719b50714550a841ae283cf8d20e505}{modify\+Fragment\+End\+Code} (Q\+String\+List $\ast$\+\_\+code)
\begin{DoxyCompactList}\small\item\em Append code the the fragment shader. \end{DoxyCompactList}\item 
virtual void \hyperlink{a01164_a7cf90bb5e896bf08ea47eb83dcfc1802}{modify\+Lighting\+Code} (Q\+String\+List $\ast$\+\_\+code, int \+\_\+light\+Id, Shader\+Gen\+Light\+Type \+\_\+light\+Type)
\begin{DoxyCompactList}\small\item\em Modify the default lighting code of the shader generator. \end{DoxyCompactList}\item 
virtual bool \hyperlink{a01164_a3c7068c03c7a933e7148ab6124092dd1}{replace\+Default\+Lighting\+Code} ()
\begin{DoxyCompactList}\small\item\em Specify whether this modifier replaces or extends the default lighting code. \end{DoxyCompactList}\item 
unsigned int \hyperlink{a01164_af665680247710a74a4b7b5686ba143ea}{get\+I\+D} ()
\begin{DoxyCompactList}\small\item\em Returns the modifier I\+D. \end{DoxyCompactList}\item 
\hypertarget{a01164_adec2f4752a3bf7f4d886f476e80458da}{{\bfseries operator std\+::vector$<$ unsigned int $>$} () const }\label{a01164_adec2f4752a3bf7f4d886f476e80458da}

\item 
\hypertarget{a01164_a93098bca71501f40fb341181b5b73c97}{std\+::vector$<$ unsigned int $>$ {\bfseries operator$\vert$} (const std\+::vector$<$ unsigned int $>$ \&\+\_\+v) const }\label{a01164_a93098bca71501f40fb341181b5b73c97}

\end{DoxyCompactItemize}
\subsection*{Static Public Member Functions}
\begin{DoxyCompactItemize}
\item 
static \hyperlink{a01164}{Shader\+Modifier} $\ast$ \hyperlink{a01164_a3c7c1ec9140856d43ff3d7050f66cd8b}{load\+From\+File} (Q\+String \+\_\+filename)
\begin{DoxyCompactList}\small\item\em Load a modifier from file. \end{DoxyCompactList}\item 
static \hyperlink{a01164}{Shader\+Modifier} $\ast$ \hyperlink{a01164_a3c7c1ec9140856d43ff3d7050f66cd8b}{load\+From\+File} (Q\+String \+\_\+filename)
\begin{DoxyCompactList}\small\item\em Load a modifier from file. \end{DoxyCompactList}\item 
static \hyperlink{a01164}{Shader\+Modifier} $\ast$ \hyperlink{a01164_a3c7c1ec9140856d43ff3d7050f66cd8b}{load\+From\+File} (Q\+String \+\_\+filename)
\begin{DoxyCompactList}\small\item\em Load a modifier from file. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a01164_ace870e44ee20345c4b7f3a7229004a74}{unsigned int {\bfseries modifier\+I\+D\+\_\+}}\label{a01164_ace870e44ee20345c4b7f3a7229004a74}

\end{DoxyCompactItemize}
\subsection*{Friends}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a01164_a1600ddac74d0563070ccc634265ce019}{class {\bfseries Shader\+Prog\+Generator}}\label{a01164_a1600ddac74d0563070ccc634265ce019}

\end{DoxyCompactItemize}


\subsection{Detailed Description}
A shader modifier can modify uniforms, in/outputs and glsl code of vertex and fragment shaders. This is useful for global effects like shadow mapping and depth peeling, where only little changes in code are necessary.

Usage\+:
\begin{DoxyEnumerate}
\item Derive a new subclass of \hyperlink{a01164}{Shader\+Modifier} and implement necessary modify functions.
\item Allocate a static instance of your modifier and register it to \hyperlink{a01167}{Shader\+Prog\+Generator} to get it's modifier-\/\+I\+D
\item Create \hyperlink{a01167}{Shader\+Prog\+Generator} with a bitwise combination of modifier I\+Ds to activate them.
\end{DoxyEnumerate}

Example\+: 
\begin{DoxyCode}
\textcolor{comment}{// First modifier}
\textcolor{keyword}{class }VertexShaderModifier1 : \textcolor{keyword}{public} \hyperlink{a01163}{ACG::ShaderModifier} \{
\textcolor{keyword}{public}:
  \textcolor{keywordtype}{void} \hyperlink{a01164_a63558e2ec557343fb04b8d1e12c47540}{modifyVertexEndCode}(QStringList* \_code) \{
    \_code->push\_back(\textcolor{stringliteral}{"// Vertex End Code Modifier begin"});
    \_code->push\_back(\textcolor{stringliteral}{"< Some glsl code >  "});
    \_code->push\_back(\textcolor{stringliteral}{"// Vertex End Code Modifier end"});
  \}

  \textcolor{keyword}{static} VertexShaderModifier1 instance;
\};

\textcolor{comment}{// Static instance required!}
VertexShaderModifier YarnVertexShaderModifier::instance;


\textcolor{keyword}{class }VertexShaderModifier2 : \textcolor{keyword}{public} \hyperlink{a01163}{ACG::ShaderModifier} \{
\textcolor{keyword}{public}:
  \textcolor{keywordtype}{void} \hyperlink{a01164_a63558e2ec557343fb04b8d1e12c47540}{modifyVertexEndCode}(QStringList* \_code) \{
    \_code->push\_back(\textcolor{stringliteral}{"// Vertex End Code Modifier 2 begin"});
    \_code->push\_back(\textcolor{stringliteral}{"< Some glsl code >  "});
    \_code->push\_back(\textcolor{stringliteral}{"// Vertex End Code Modifier 2 end"});
  \}

  \textcolor{keyword}{static} VertexShaderModifier2 instance;
\};

VertexShaderModifier2 VertexShaderModifier2::instance;
\end{DoxyCode}


To use the modifiers, you have to register them to the shader generator\+: 
\begin{DoxyCode}
\textcolor{comment}{// Register the modifiers}
\hyperlink{a01167_a0fef3ce1c55d8118020b6ab4930278b4}{ACG::ShaderProgGenerator::registerModifier}(&
      VertexShaderModifier::instance);
\hyperlink{a01167_a0fef3ce1c55d8118020b6ab4930278b4}{ACG::ShaderProgGenerator::registerModifier}(&
      VertexShaderModifier2::instance);

\textcolor{comment}{// Use them via the shader cache}
\hyperlink{a01020}{GLSL::Program}* prog = \hyperlink{a01156_a25db1fcdf5081ab345e27732e0d07d56}{ACG::ShaderCache::getInstance}()->
      \hyperlink{a01156_af7e74e2c97dcea1fb3c482ea5d8560d0}{getProgram}(&shDesc,(VertexShaderModifier::instance.\hyperlink{a01164_af665680247710a74a4b7b5686ba143ea}{getID}() | VertexShaderModifier2::instance
      .\hyperlink{a01164_af665680247710a74a4b7b5686ba143ea}{getID}() ));
\end{DoxyCode}
 

Definition at line 932 of file Mesh\+Node2\+T.\+cc.



\subsection{Member Function Documentation}
\hypertarget{a01164_af665680247710a74a4b7b5686ba143ea}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier}!get\+I\+D@{get\+I\+D}}
\index{get\+I\+D@{get\+I\+D}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier}}
\subsubsection[{get\+I\+D}]{\setlength{\rightskip}{0pt plus 5cm}unsigned int A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier\+::get\+I\+D (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{a01164_af665680247710a74a4b7b5686ba143ea}


Returns the modifier I\+D. 

\begin{DoxyReturn}{Returns}
Id of the modifier 
\end{DoxyReturn}


Definition at line 1095 of file Mesh\+Node2\+T.\+cc.

\hypertarget{a01164_af665680247710a74a4b7b5686ba143ea}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier}!get\+I\+D@{get\+I\+D}}
\index{get\+I\+D@{get\+I\+D}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier}}
\subsubsection[{get\+I\+D}]{\setlength{\rightskip}{0pt plus 5cm}unsigned int A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier\+::get\+I\+D (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{a01164_af665680247710a74a4b7b5686ba143ea}


Returns the modifier I\+D. 

\begin{DoxyReturn}{Returns}
Id of the modifier 
\end{DoxyReturn}


Definition at line 1095 of file Mesh\+Node2\+T.\+cc.

\hypertarget{a01164_af665680247710a74a4b7b5686ba143ea}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier}!get\+I\+D@{get\+I\+D}}
\index{get\+I\+D@{get\+I\+D}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier}}
\subsubsection[{get\+I\+D}]{\setlength{\rightskip}{0pt plus 5cm}unsigned int A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier\+::get\+I\+D (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{a01164_af665680247710a74a4b7b5686ba143ea}


Returns the modifier I\+D. 

\begin{DoxyReturn}{Returns}
Id of the modifier 
\end{DoxyReturn}


Definition at line 1095 of file Mesh\+Node2\+T.\+cc.

\hypertarget{a01164_a3c7c1ec9140856d43ff3d7050f66cd8b}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier}!load\+From\+File@{load\+From\+File}}
\index{load\+From\+File@{load\+From\+File}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier}}
\subsubsection[{load\+From\+File}]{\setlength{\rightskip}{0pt plus 5cm}static {\bf Shader\+Modifier}$\ast$ A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier\+::load\+From\+File (
\begin{DoxyParamCaption}
\item[{Q\+String}]{\+\_\+filename}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}}\label{a01164_a3c7c1ec9140856d43ff3d7050f66cd8b}


Load a modifier from file. 

Shader Mod text file format\+:

The file can begin with a glsl version directive (optionally)\+: \#version glsl\+\_\+version

The rest of the file contains glsl code blocks, which are separated by keywords. Each keyword must be at the beginning of a line. Furthermore they end on a colon '\+:'. The keyword defines the meaning of the following code block.

I\+O code blocks are specified by the keywords\+: Vertex\+I\+O\+:, Tess\+Control\+I\+O\+:, Tess\+Eval\+I\+O\+:, Geometry\+I\+O\+: and Fragment\+I\+O\+:

example

Vertex\+I\+O\+: in vec3 custom\+Input\+Name; out vec3 custum\+Output\+Name; uniform vec4 param0;

Shader code modifications are done via the keywords\+: Vertex\+Begin\+Code\+:, Vertex\+End\+Code\+:, Fragment\+Begin\+Code\+: and Fragment\+End\+Code\+:

The returned modifier should not be deleted manually.


\begin{DoxyParams}{Parameters}
{\em \+\_\+filename} & absolute or relative (from shaderdir) file name \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
pointer to shader modifier, 0 if loading failed 
\end{DoxyReturn}
\hypertarget{a01164_a3c7c1ec9140856d43ff3d7050f66cd8b}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier}!load\+From\+File@{load\+From\+File}}
\index{load\+From\+File@{load\+From\+File}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier}}
\subsubsection[{load\+From\+File}]{\setlength{\rightskip}{0pt plus 5cm}static {\bf Shader\+Modifier}$\ast$ A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier\+::load\+From\+File (
\begin{DoxyParamCaption}
\item[{Q\+String}]{\+\_\+filename}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}}\label{a01164_a3c7c1ec9140856d43ff3d7050f66cd8b}


Load a modifier from file. 

Shader Mod text file format\+:

The file can begin with a glsl version directive (optionally)\+: \#version glsl\+\_\+version

The rest of the file contains glsl code blocks, which are separated by keywords. Each keyword must be at the beginning of a line. Furthermore they end on a colon '\+:'. The keyword defines the meaning of the following code block.

I\+O code blocks are specified by the keywords\+: Vertex\+I\+O\+:, Tess\+Control\+I\+O\+:, Tess\+Eval\+I\+O\+:, Geometry\+I\+O\+: and Fragment\+I\+O\+:

example

Vertex\+I\+O\+: in vec3 custom\+Input\+Name; out vec3 custum\+Output\+Name; uniform vec4 param0;

Shader code modifications are done via the keywords\+: Vertex\+Begin\+Code\+:, Vertex\+End\+Code\+:, Fragment\+Begin\+Code\+: and Fragment\+End\+Code\+:

The returned modifier should not be deleted manually.


\begin{DoxyParams}{Parameters}
{\em \+\_\+filename} & absolute or relative (from shaderdir) file name \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
pointer to shader modifier, 0 if loading failed 
\end{DoxyReturn}
\hypertarget{a01164_a3c7c1ec9140856d43ff3d7050f66cd8b}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier}!load\+From\+File@{load\+From\+File}}
\index{load\+From\+File@{load\+From\+File}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier}}
\subsubsection[{load\+From\+File}]{\setlength{\rightskip}{0pt plus 5cm}static {\bf Shader\+Modifier}$\ast$ A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier\+::load\+From\+File (
\begin{DoxyParamCaption}
\item[{Q\+String}]{\+\_\+filename}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}}\label{a01164_a3c7c1ec9140856d43ff3d7050f66cd8b}


Load a modifier from file. 

Shader Mod text file format\+:

The file can begin with a glsl version directive (optionally)\+: \#version glsl\+\_\+version

The rest of the file contains glsl code blocks, which are separated by keywords. Each keyword must be at the beginning of a line. Furthermore they end on a colon '\+:'. The keyword defines the meaning of the following code block.

I\+O code blocks are specified by the keywords\+: Vertex\+I\+O\+:, Tess\+Control\+I\+O\+:, Tess\+Eval\+I\+O\+:, Geometry\+I\+O\+: and Fragment\+I\+O\+:

example

Vertex\+I\+O\+: in vec3 custom\+Input\+Name; out vec3 custum\+Output\+Name; uniform vec4 param0;

Shader code modifications are done via the keywords\+: Vertex\+Begin\+Code\+:, Vertex\+End\+Code\+:, Fragment\+Begin\+Code\+: and Fragment\+End\+Code\+:

The returned modifier should not be deleted manually.


\begin{DoxyParams}{Parameters}
{\em \+\_\+filename} & absolute or relative (from shaderdir) file name \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
pointer to shader modifier, 0 if loading failed 
\end{DoxyReturn}
\hypertarget{a01164_a6f5730d2cde1def34dfbedc83d674e7e}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier}!modify\+Fragment\+Begin\+Code@{modify\+Fragment\+Begin\+Code}}
\index{modify\+Fragment\+Begin\+Code@{modify\+Fragment\+Begin\+Code}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier}}
\subsubsection[{modify\+Fragment\+Begin\+Code}]{\setlength{\rightskip}{0pt plus 5cm}virtual void A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier\+::modify\+Fragment\+Begin\+Code (
\begin{DoxyParamCaption}
\item[{Q\+String\+List $\ast$}]{\+\_\+code}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}}\label{a01164_a6f5730d2cde1def34dfbedc83d674e7e}


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}


Definition at line 1048 of file Mesh\+Node2\+T.\+cc.

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


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}


Definition at line 1048 of file Mesh\+Node2\+T.\+cc.

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


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}


Definition at line 1048 of file Mesh\+Node2\+T.\+cc.

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


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 in \hyperlink{a00493_a684cba1461a48c8dedadcd3aa6b66433}{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer\+::\+Depth\+Map\+Pass}.



Definition at line 1064 of file Mesh\+Node2\+T.\+cc.

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


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 in \hyperlink{a00493_a684cba1461a48c8dedadcd3aa6b66433}{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer\+::\+Depth\+Map\+Pass}.



Definition at line 1064 of file Mesh\+Node2\+T.\+cc.

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


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 in \hyperlink{a00493_a684cba1461a48c8dedadcd3aa6b66433}{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+I\+Renderer\+::\+Depth\+Map\+Pass}.



Definition at line 1064 of file Mesh\+Node2\+T.\+cc.

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


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}


Definition at line 1032 of file Mesh\+Node2\+T.\+cc.

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


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}


Definition at line 1032 of file Mesh\+Node2\+T.\+cc.

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


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}


Definition at line 1032 of file Mesh\+Node2\+T.\+cc.

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


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}


Definition at line 993 of file Mesh\+Node2\+T.\+cc.

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


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}


Definition at line 993 of file Mesh\+Node2\+T.\+cc.

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


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}


Definition at line 993 of file Mesh\+Node2\+T.\+cc.

\hypertarget{a01164_a7cf90bb5e896bf08ea47eb83dcfc1802}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier}!modify\+Lighting\+Code@{modify\+Lighting\+Code}}
\index{modify\+Lighting\+Code@{modify\+Lighting\+Code}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier}}
\subsubsection[{modify\+Lighting\+Code}]{\setlength{\rightskip}{0pt plus 5cm}virtual void A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier\+::modify\+Lighting\+Code (
\begin{DoxyParamCaption}
\item[{Q\+String\+List $\ast$}]{\+\_\+code, }
\item[{int}]{\+\_\+light\+Id, }
\item[{Shader\+Gen\+Light\+Type}]{\+\_\+light\+Type}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}}\label{a01164_a7cf90bb5e896bf08ea47eb83dcfc1802}


Modify the default lighting code of the shader generator. 

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
{\em \+\_\+light\+Id} & light index, use g\+\_\+v\+Light\+Dir\+\_\+\+\_\+\{\+\_\+light\+Id\}, etc. in shader code to use light parameters \\
\hline
{\em \+\_\+light\+Type} & light type\+: point, spot or directional light \\
\hline
\end{DoxyParams}


Definition at line 1083 of file Mesh\+Node2\+T.\+cc.

\hypertarget{a01164_a7cf90bb5e896bf08ea47eb83dcfc1802}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier}!modify\+Lighting\+Code@{modify\+Lighting\+Code}}
\index{modify\+Lighting\+Code@{modify\+Lighting\+Code}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier}}
\subsubsection[{modify\+Lighting\+Code}]{\setlength{\rightskip}{0pt plus 5cm}virtual void A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier\+::modify\+Lighting\+Code (
\begin{DoxyParamCaption}
\item[{Q\+String\+List $\ast$}]{\+\_\+code, }
\item[{int}]{\+\_\+light\+Id, }
\item[{Shader\+Gen\+Light\+Type}]{\+\_\+light\+Type}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}}\label{a01164_a7cf90bb5e896bf08ea47eb83dcfc1802}


Modify the default lighting code of the shader generator. 

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
{\em \+\_\+light\+Id} & light index, use g\+\_\+v\+Light\+Dir\+\_\+\+\_\+\{\+\_\+light\+Id\}, etc. in shader code to use light parameters \\
\hline
{\em \+\_\+light\+Type} & light type\+: point, spot or directional light \\
\hline
\end{DoxyParams}


Definition at line 1083 of file Mesh\+Node2\+T.\+cc.

\hypertarget{a01164_a7cf90bb5e896bf08ea47eb83dcfc1802}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier}!modify\+Lighting\+Code@{modify\+Lighting\+Code}}
\index{modify\+Lighting\+Code@{modify\+Lighting\+Code}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier}}
\subsubsection[{modify\+Lighting\+Code}]{\setlength{\rightskip}{0pt plus 5cm}virtual void A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier\+::modify\+Lighting\+Code (
\begin{DoxyParamCaption}
\item[{Q\+String\+List $\ast$}]{\+\_\+code, }
\item[{int}]{\+\_\+light\+Id, }
\item[{Shader\+Gen\+Light\+Type}]{\+\_\+light\+Type}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}}\label{a01164_a7cf90bb5e896bf08ea47eb83dcfc1802}


Modify the default lighting code of the shader generator. 

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
{\em \+\_\+light\+Id} & light index, use g\+\_\+v\+Light\+Dir\+\_\+\+\_\+\{\+\_\+light\+Id\}, etc. in shader code to use light parameters \\
\hline
{\em \+\_\+light\+Type} & light type\+: point, spot or directional light \\
\hline
\end{DoxyParams}


Definition at line 1083 of file Mesh\+Node2\+T.\+cc.

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


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}


Definition at line 1006 of file Mesh\+Node2\+T.\+cc.

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


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}


Definition at line 1006 of file Mesh\+Node2\+T.\+cc.

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


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}


Definition at line 1006 of file Mesh\+Node2\+T.\+cc.

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


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}


Definition at line 1019 of file Mesh\+Node2\+T.\+cc.

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


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}


Definition at line 1019 of file Mesh\+Node2\+T.\+cc.

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


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}


Definition at line 1019 of file Mesh\+Node2\+T.\+cc.

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


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}


Definition at line 965 of file Mesh\+Node2\+T.\+cc.

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


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}


Definition at line 965 of file Mesh\+Node2\+T.\+cc.

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


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}


Definition at line 965 of file Mesh\+Node2\+T.\+cc.

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


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}


Definition at line 980 of file Mesh\+Node2\+T.\+cc.

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


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}


Definition at line 980 of file Mesh\+Node2\+T.\+cc.

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


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}


Definition at line 980 of file Mesh\+Node2\+T.\+cc.

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


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}


Definition at line 951 of file Mesh\+Node2\+T.\+cc.

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


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}


Definition at line 951 of file Mesh\+Node2\+T.\+cc.

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


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}


Definition at line 951 of file Mesh\+Node2\+T.\+cc.

\hypertarget{a01164_a3c7068c03c7a933e7148ab6124092dd1}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier}!replace\+Default\+Lighting\+Code@{replace\+Default\+Lighting\+Code}}
\index{replace\+Default\+Lighting\+Code@{replace\+Default\+Lighting\+Code}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier}}
\subsubsection[{replace\+Default\+Lighting\+Code}]{\setlength{\rightskip}{0pt plus 5cm}virtual bool A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier\+::replace\+Default\+Lighting\+Code (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}}\label{a01164_a3c7068c03c7a933e7148ab6124092dd1}


Specify whether this modifier replaces or extends the default lighting code. 

\begin{DoxyReturn}{Returns}
return false if this modifier modifies an already computed lighting color, return true if this modifier replaces the default lighting color 
\end{DoxyReturn}


Definition at line 1089 of file Mesh\+Node2\+T.\+cc.

\hypertarget{a01164_a3c7068c03c7a933e7148ab6124092dd1}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier}!replace\+Default\+Lighting\+Code@{replace\+Default\+Lighting\+Code}}
\index{replace\+Default\+Lighting\+Code@{replace\+Default\+Lighting\+Code}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier}}
\subsubsection[{replace\+Default\+Lighting\+Code}]{\setlength{\rightskip}{0pt plus 5cm}virtual bool A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier\+::replace\+Default\+Lighting\+Code (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}}\label{a01164_a3c7068c03c7a933e7148ab6124092dd1}


Specify whether this modifier replaces or extends the default lighting code. 

\begin{DoxyReturn}{Returns}
return false if this modifier modifies an already computed lighting color, return true if this modifier replaces the default lighting color 
\end{DoxyReturn}


Definition at line 1089 of file Mesh\+Node2\+T.\+cc.

\hypertarget{a01164_a3c7068c03c7a933e7148ab6124092dd1}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier}!replace\+Default\+Lighting\+Code@{replace\+Default\+Lighting\+Code}}
\index{replace\+Default\+Lighting\+Code@{replace\+Default\+Lighting\+Code}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier}}
\subsubsection[{replace\+Default\+Lighting\+Code}]{\setlength{\rightskip}{0pt plus 5cm}virtual bool A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Modifier\+::replace\+Default\+Lighting\+Code (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}}\label{a01164_a3c7068c03c7a933e7148ab6124092dd1}


Specify whether this modifier replaces or extends the default lighting code. 

\begin{DoxyReturn}{Returns}
return false if this modifier modifies an already computed lighting color, return true if this modifier replaces the default lighting color 
\end{DoxyReturn}


Definition at line 1089 of file Mesh\+Node2\+T.\+cc.



The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
\item 
A\+C\+G/\+Scenegraph/Mesh\+Node2\+T.\+cc\end{DoxyCompactItemize}
