\hypertarget{a01167}{\section{A\+C\+G\+:\+:Scene\+Graph\+:\+:A\+C\+G\+:\+:Shader\+Prog\+Generator Class Reference}
\label{a01167}\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}}
}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{a01167_a66d2289362fde960fd35475593822b0c}{Shader\+Prog\+Generator} (const \hyperlink{a01157}{Shader\+Gen\+Desc} $\ast$\+\_\+desc)
\item 
\hyperlink{a01167_a8ff5266b5057a37ae524447bf97abae0}{Shader\+Prog\+Generator} (const \hyperlink{a01157}{Shader\+Gen\+Desc} $\ast$\+\_\+desc, const std\+::vector$<$ unsigned int $>$ \&\+\_\+modifier\+I\+Ds)
\item 
\hyperlink{a01167_ab2ad1a50753d47ad291dd8518ca3ff11}{Shader\+Prog\+Generator} (const \hyperlink{a01157}{Shader\+Gen\+Desc} $\ast$\+\_\+desc, const std\+::vector$<$ unsigned int $>$ $\ast$\+\_\+modifier\+I\+Ds)
\item 
\hyperlink{a01167_a77ef039da60b23c92ba9d9933efa30fe}{Shader\+Prog\+Generator} (const \hyperlink{a01157}{Shader\+Gen\+Desc} $\ast$\+\_\+desc, const unsigned int $\ast$\+\_\+modifier\+I\+Ds, unsigned int \+\_\+num\+Modifiers)
\item 
\hyperlink{a01167_aa47b2d19b07fd2b5869c49314179b280}{Shader\+Prog\+Generator} (const \hyperlink{a01157}{Shader\+Gen\+Desc} $\ast$\+\_\+desc, \hyperlink{a01164}{Shader\+Modifier} $\ast$const $\ast$\+\_\+modifiers, unsigned int \+\_\+num\+Modifiers)
\item 
\hyperlink{a01167_a8cb91075df9926dc568f8d87421a2d2a}{Shader\+Prog\+Generator} (const \hyperlink{a01157}{Shader\+Gen\+Desc} $\ast$\+\_\+desc, const std\+::vector$<$ \hyperlink{a01164}{Shader\+Modifier} $\ast$ $>$ \&\+\_\+modifiers)
\item 
\hyperlink{a01167_ae2acbb0a56211d0ec213a16196599044}{Shader\+Prog\+Generator} (const \hyperlink{a01157}{Shader\+Gen\+Desc} $\ast$\+\_\+desc, const std\+::vector$<$ \hyperlink{a01164}{Shader\+Modifier} $\ast$ $>$ $\ast$\+\_\+modifiers)
\item 
\hypertarget{a01167_a5a9e7e9fdecc75032af13d3017db9e49}{void {\bfseries save\+Vertex\+Sh\+To\+File} (const char $\ast$\+\_\+file\+Name)}\label{a01167_a5a9e7e9fdecc75032af13d3017db9e49}

\item 
\hypertarget{a01167_ab9b0c4ae252a6e9454a425647a97e04c}{void {\bfseries save\+Geometry\+Sh\+To\+File} (const char $\ast$\+\_\+file\+Name)}\label{a01167_ab9b0c4ae252a6e9454a425647a97e04c}

\item 
\hypertarget{a01167_a5ed48b5fa2c4043cd59b32f2f62f0ae3}{void {\bfseries save\+Fragment\+Sh\+To\+File} (const char $\ast$\+\_\+file\+Name)}\label{a01167_a5ed48b5fa2c4043cd59b32f2f62f0ae3}

\item 
\hypertarget{a01167_a18a3daa1e59bd5185421412e9d124593}{const Q\+String\+List \& \hyperlink{a01167_a18a3daa1e59bd5185421412e9d124593}{get\+Vertex\+Shader\+Code} ()}\label{a01167_a18a3daa1e59bd5185421412e9d124593}

\begin{DoxyCompactList}\small\item\em Returns generated vertex shader code. \end{DoxyCompactList}\item 
\hypertarget{a01167_a60c544e643d160ca8c909d62294b3ee1}{const Q\+String\+List \& \hyperlink{a01167_a60c544e643d160ca8c909d62294b3ee1}{get\+Tess\+Control\+Shader\+Code} ()}\label{a01167_a60c544e643d160ca8c909d62294b3ee1}

\begin{DoxyCompactList}\small\item\em Returns generated vertex shader code. \end{DoxyCompactList}\item 
\hypertarget{a01167_a5c900b824e67cdc33653d2ee482e3324}{const Q\+String\+List \& \hyperlink{a01167_a5c900b824e67cdc33653d2ee482e3324}{get\+Tess\+Evaluation\+Shader\+Code} ()}\label{a01167_a5c900b824e67cdc33653d2ee482e3324}

\begin{DoxyCompactList}\small\item\em Returns generated tessellation control shader code. \end{DoxyCompactList}\item 
\hypertarget{a01167_a59ac5356cbc56ddb84f1eb69385ce55a}{const Q\+String\+List \& \hyperlink{a01167_a59ac5356cbc56ddb84f1eb69385ce55a}{get\+Geometry\+Shader\+Code} ()}\label{a01167_a59ac5356cbc56ddb84f1eb69385ce55a}

\begin{DoxyCompactList}\small\item\em Returns generated tessellation evaluation shader code. \end{DoxyCompactList}\item 
\hypertarget{a01167_a99a7b6bcc6f9e460e96df6dc1eeda65e}{const Q\+String\+List \& \hyperlink{a01167_a99a7b6bcc6f9e460e96df6dc1eeda65e}{get\+Fragment\+Shader\+Code} ()}\label{a01167_a99a7b6bcc6f9e460e96df6dc1eeda65e}

\begin{DoxyCompactList}\small\item\em Returns generated fragment shader code. \end{DoxyCompactList}\item 
\hypertarget{a01167_ae5096cd2a508239580a333ea95ea9e03}{int \hyperlink{a01167_ae5096cd2a508239580a333ea95ea9e03}{get\+Num\+Active\+Modifiers} () const }\label{a01167_ae5096cd2a508239580a333ea95ea9e03}

\begin{DoxyCompactList}\small\item\em Get the number of active modifiers. \end{DoxyCompactList}\item 
\hypertarget{a01167_ae49bdbb42c3501ec8049dde1fb382788}{\hyperlink{a01164}{Shader\+Modifier} $\ast$ \hyperlink{a01167_ae49bdbb42c3501ec8049dde1fb382788}{get\+Active\+Modifier} (int \+\_\+i)}\label{a01167_ae49bdbb42c3501ec8049dde1fb382788}

\begin{DoxyCompactList}\small\item\em Get active modfiers for this program. \end{DoxyCompactList}\item 
\hypertarget{a01167_af4163d67826e79bff5add48dcc9d623c}{bool \hyperlink{a01167_af4163d67826e79bff5add48dcc9d623c}{has\+Geometry\+Shader} () const }\label{a01167_af4163d67826e79bff5add48dcc9d623c}

\begin{DoxyCompactList}\small\item\em check whether there is a geometry shader present \end{DoxyCompactList}\item 
\hypertarget{a01167_a1575babdd3c9cabf43da9cfb64e9786c}{bool \hyperlink{a01167_a1575babdd3c9cabf43da9cfb64e9786c}{has\+Tess\+Control\+Shader} () const }\label{a01167_a1575babdd3c9cabf43da9cfb64e9786c}

\begin{DoxyCompactList}\small\item\em check whether there is a tess-\/control shader present \end{DoxyCompactList}\item 
\hypertarget{a01167_a4c3a7153111afd76cf41a5a3b6baa348}{bool \hyperlink{a01167_a4c3a7153111afd76cf41a5a3b6baa348}{has\+Tess\+Evaluation\+Shader} () const }\label{a01167_a4c3a7153111afd76cf41a5a3b6baa348}

\begin{DoxyCompactList}\small\item\em check whether there is a tess-\/evaluation shader present \end{DoxyCompactList}\item 
\hypertarget{a01167_a68164040c357008d9a745df479a03b6a}{void \hyperlink{a01167_a68164040c357008d9a745df479a03b6a}{generate\+Shaders} ()}\label{a01167_a68164040c357008d9a745df479a03b6a}

\begin{DoxyCompactList}\small\item\em Generates the shader code. \end{DoxyCompactList}\item 
\hyperlink{a01167_a66d2289362fde960fd35475593822b0c}{Shader\+Prog\+Generator} (const \hyperlink{a01157}{Shader\+Gen\+Desc} $\ast$\+\_\+desc)
\item 
\hyperlink{a01167_a8ff5266b5057a37ae524447bf97abae0}{Shader\+Prog\+Generator} (const \hyperlink{a01157}{Shader\+Gen\+Desc} $\ast$\+\_\+desc, const std\+::vector$<$ unsigned int $>$ \&\+\_\+modifier\+I\+Ds)
\item 
\hyperlink{a01167_ab2ad1a50753d47ad291dd8518ca3ff11}{Shader\+Prog\+Generator} (const \hyperlink{a01157}{Shader\+Gen\+Desc} $\ast$\+\_\+desc, const std\+::vector$<$ unsigned int $>$ $\ast$\+\_\+modifier\+I\+Ds)
\item 
\hyperlink{a01167_a77ef039da60b23c92ba9d9933efa30fe}{Shader\+Prog\+Generator} (const \hyperlink{a01157}{Shader\+Gen\+Desc} $\ast$\+\_\+desc, const unsigned int $\ast$\+\_\+modifier\+I\+Ds, unsigned int \+\_\+num\+Modifiers)
\item 
\hyperlink{a01167_aa47b2d19b07fd2b5869c49314179b280}{Shader\+Prog\+Generator} (const \hyperlink{a01157}{Shader\+Gen\+Desc} $\ast$\+\_\+desc, \hyperlink{a01164}{Shader\+Modifier} $\ast$const $\ast$\+\_\+modifiers, unsigned int \+\_\+num\+Modifiers)
\item 
\hyperlink{a01167_a8cb91075df9926dc568f8d87421a2d2a}{Shader\+Prog\+Generator} (const \hyperlink{a01157}{Shader\+Gen\+Desc} $\ast$\+\_\+desc, const std\+::vector$<$ \hyperlink{a01164}{Shader\+Modifier} $\ast$ $>$ \&\+\_\+modifiers)
\item 
\hyperlink{a01167_ae2acbb0a56211d0ec213a16196599044}{Shader\+Prog\+Generator} (const \hyperlink{a01157}{Shader\+Gen\+Desc} $\ast$\+\_\+desc, const std\+::vector$<$ \hyperlink{a01164}{Shader\+Modifier} $\ast$ $>$ $\ast$\+\_\+modifiers)
\item 
\hypertarget{a01167_a5a9e7e9fdecc75032af13d3017db9e49}{void {\bfseries save\+Vertex\+Sh\+To\+File} (const char $\ast$\+\_\+file\+Name)}\label{a01167_a5a9e7e9fdecc75032af13d3017db9e49}

\item 
\hypertarget{a01167_ab9b0c4ae252a6e9454a425647a97e04c}{void {\bfseries save\+Geometry\+Sh\+To\+File} (const char $\ast$\+\_\+file\+Name)}\label{a01167_ab9b0c4ae252a6e9454a425647a97e04c}

\item 
\hypertarget{a01167_a5ed48b5fa2c4043cd59b32f2f62f0ae3}{void {\bfseries save\+Fragment\+Sh\+To\+File} (const char $\ast$\+\_\+file\+Name)}\label{a01167_a5ed48b5fa2c4043cd59b32f2f62f0ae3}

\item 
\hypertarget{a01167_a18a3daa1e59bd5185421412e9d124593}{const Q\+String\+List \& \hyperlink{a01167_a18a3daa1e59bd5185421412e9d124593}{get\+Vertex\+Shader\+Code} ()}\label{a01167_a18a3daa1e59bd5185421412e9d124593}

\begin{DoxyCompactList}\small\item\em Returns generated vertex shader code. \end{DoxyCompactList}\item 
\hypertarget{a01167_a60c544e643d160ca8c909d62294b3ee1}{const Q\+String\+List \& \hyperlink{a01167_a60c544e643d160ca8c909d62294b3ee1}{get\+Tess\+Control\+Shader\+Code} ()}\label{a01167_a60c544e643d160ca8c909d62294b3ee1}

\begin{DoxyCompactList}\small\item\em Returns generated vertex shader code. \end{DoxyCompactList}\item 
\hypertarget{a01167_a5c900b824e67cdc33653d2ee482e3324}{const Q\+String\+List \& \hyperlink{a01167_a5c900b824e67cdc33653d2ee482e3324}{get\+Tess\+Evaluation\+Shader\+Code} ()}\label{a01167_a5c900b824e67cdc33653d2ee482e3324}

\begin{DoxyCompactList}\small\item\em Returns generated tessellation control shader code. \end{DoxyCompactList}\item 
\hypertarget{a01167_a59ac5356cbc56ddb84f1eb69385ce55a}{const Q\+String\+List \& \hyperlink{a01167_a59ac5356cbc56ddb84f1eb69385ce55a}{get\+Geometry\+Shader\+Code} ()}\label{a01167_a59ac5356cbc56ddb84f1eb69385ce55a}

\begin{DoxyCompactList}\small\item\em Returns generated tessellation evaluation shader code. \end{DoxyCompactList}\item 
\hypertarget{a01167_a99a7b6bcc6f9e460e96df6dc1eeda65e}{const Q\+String\+List \& \hyperlink{a01167_a99a7b6bcc6f9e460e96df6dc1eeda65e}{get\+Fragment\+Shader\+Code} ()}\label{a01167_a99a7b6bcc6f9e460e96df6dc1eeda65e}

\begin{DoxyCompactList}\small\item\em Returns generated fragment shader code. \end{DoxyCompactList}\item 
\hypertarget{a01167_ae5096cd2a508239580a333ea95ea9e03}{int \hyperlink{a01167_ae5096cd2a508239580a333ea95ea9e03}{get\+Num\+Active\+Modifiers} () const }\label{a01167_ae5096cd2a508239580a333ea95ea9e03}

\begin{DoxyCompactList}\small\item\em Get the number of active modifiers. \end{DoxyCompactList}\item 
\hypertarget{a01167_ae49bdbb42c3501ec8049dde1fb382788}{\hyperlink{a01164}{Shader\+Modifier} $\ast$ \hyperlink{a01167_ae49bdbb42c3501ec8049dde1fb382788}{get\+Active\+Modifier} (int \+\_\+i)}\label{a01167_ae49bdbb42c3501ec8049dde1fb382788}

\begin{DoxyCompactList}\small\item\em Get active modfiers for this program. \end{DoxyCompactList}\item 
\hypertarget{a01167_af4163d67826e79bff5add48dcc9d623c}{bool \hyperlink{a01167_af4163d67826e79bff5add48dcc9d623c}{has\+Geometry\+Shader} () const }\label{a01167_af4163d67826e79bff5add48dcc9d623c}

\begin{DoxyCompactList}\small\item\em check whether there is a geometry shader present \end{DoxyCompactList}\item 
\hypertarget{a01167_a1575babdd3c9cabf43da9cfb64e9786c}{bool \hyperlink{a01167_a1575babdd3c9cabf43da9cfb64e9786c}{has\+Tess\+Control\+Shader} () const }\label{a01167_a1575babdd3c9cabf43da9cfb64e9786c}

\begin{DoxyCompactList}\small\item\em check whether there is a tess-\/control shader present \end{DoxyCompactList}\item 
\hypertarget{a01167_a4c3a7153111afd76cf41a5a3b6baa348}{bool \hyperlink{a01167_a4c3a7153111afd76cf41a5a3b6baa348}{has\+Tess\+Evaluation\+Shader} () const }\label{a01167_a4c3a7153111afd76cf41a5a3b6baa348}

\begin{DoxyCompactList}\small\item\em check whether there is a tess-\/evaluation shader present \end{DoxyCompactList}\item 
\hypertarget{a01167_a68164040c357008d9a745df479a03b6a}{void \hyperlink{a01167_a68164040c357008d9a745df479a03b6a}{generate\+Shaders} ()}\label{a01167_a68164040c357008d9a745df479a03b6a}

\begin{DoxyCompactList}\small\item\em Generates the shader code. \end{DoxyCompactList}\item 
\hyperlink{a01167_a66d2289362fde960fd35475593822b0c}{Shader\+Prog\+Generator} (const \hyperlink{a01157}{Shader\+Gen\+Desc} $\ast$\+\_\+desc)
\item 
\hyperlink{a01167_a8ff5266b5057a37ae524447bf97abae0}{Shader\+Prog\+Generator} (const \hyperlink{a01157}{Shader\+Gen\+Desc} $\ast$\+\_\+desc, const std\+::vector$<$ unsigned int $>$ \&\+\_\+modifier\+I\+Ds)
\item 
\hyperlink{a01167_ab2ad1a50753d47ad291dd8518ca3ff11}{Shader\+Prog\+Generator} (const \hyperlink{a01157}{Shader\+Gen\+Desc} $\ast$\+\_\+desc, const std\+::vector$<$ unsigned int $>$ $\ast$\+\_\+modifier\+I\+Ds)
\item 
\hyperlink{a01167_a77ef039da60b23c92ba9d9933efa30fe}{Shader\+Prog\+Generator} (const \hyperlink{a01157}{Shader\+Gen\+Desc} $\ast$\+\_\+desc, const unsigned int $\ast$\+\_\+modifier\+I\+Ds, unsigned int \+\_\+num\+Modifiers)
\item 
\hyperlink{a01167_aa47b2d19b07fd2b5869c49314179b280}{Shader\+Prog\+Generator} (const \hyperlink{a01157}{Shader\+Gen\+Desc} $\ast$\+\_\+desc, \hyperlink{a01164}{Shader\+Modifier} $\ast$const $\ast$\+\_\+modifiers, unsigned int \+\_\+num\+Modifiers)
\item 
\hyperlink{a01167_a8cb91075df9926dc568f8d87421a2d2a}{Shader\+Prog\+Generator} (const \hyperlink{a01157}{Shader\+Gen\+Desc} $\ast$\+\_\+desc, const std\+::vector$<$ \hyperlink{a01164}{Shader\+Modifier} $\ast$ $>$ \&\+\_\+modifiers)
\item 
\hyperlink{a01167_ae2acbb0a56211d0ec213a16196599044}{Shader\+Prog\+Generator} (const \hyperlink{a01157}{Shader\+Gen\+Desc} $\ast$\+\_\+desc, const std\+::vector$<$ \hyperlink{a01164}{Shader\+Modifier} $\ast$ $>$ $\ast$\+\_\+modifiers)
\item 
\hypertarget{a01167_a5a9e7e9fdecc75032af13d3017db9e49}{void {\bfseries save\+Vertex\+Sh\+To\+File} (const char $\ast$\+\_\+file\+Name)}\label{a01167_a5a9e7e9fdecc75032af13d3017db9e49}

\item 
\hypertarget{a01167_ab9b0c4ae252a6e9454a425647a97e04c}{void {\bfseries save\+Geometry\+Sh\+To\+File} (const char $\ast$\+\_\+file\+Name)}\label{a01167_ab9b0c4ae252a6e9454a425647a97e04c}

\item 
\hypertarget{a01167_a5ed48b5fa2c4043cd59b32f2f62f0ae3}{void {\bfseries save\+Fragment\+Sh\+To\+File} (const char $\ast$\+\_\+file\+Name)}\label{a01167_a5ed48b5fa2c4043cd59b32f2f62f0ae3}

\item 
\hypertarget{a01167_a18a3daa1e59bd5185421412e9d124593}{const Q\+String\+List \& \hyperlink{a01167_a18a3daa1e59bd5185421412e9d124593}{get\+Vertex\+Shader\+Code} ()}\label{a01167_a18a3daa1e59bd5185421412e9d124593}

\begin{DoxyCompactList}\small\item\em Returns generated vertex shader code. \end{DoxyCompactList}\item 
\hypertarget{a01167_a60c544e643d160ca8c909d62294b3ee1}{const Q\+String\+List \& \hyperlink{a01167_a60c544e643d160ca8c909d62294b3ee1}{get\+Tess\+Control\+Shader\+Code} ()}\label{a01167_a60c544e643d160ca8c909d62294b3ee1}

\begin{DoxyCompactList}\small\item\em Returns generated vertex shader code. \end{DoxyCompactList}\item 
\hypertarget{a01167_a5c900b824e67cdc33653d2ee482e3324}{const Q\+String\+List \& \hyperlink{a01167_a5c900b824e67cdc33653d2ee482e3324}{get\+Tess\+Evaluation\+Shader\+Code} ()}\label{a01167_a5c900b824e67cdc33653d2ee482e3324}

\begin{DoxyCompactList}\small\item\em Returns generated tessellation control shader code. \end{DoxyCompactList}\item 
\hypertarget{a01167_a59ac5356cbc56ddb84f1eb69385ce55a}{const Q\+String\+List \& \hyperlink{a01167_a59ac5356cbc56ddb84f1eb69385ce55a}{get\+Geometry\+Shader\+Code} ()}\label{a01167_a59ac5356cbc56ddb84f1eb69385ce55a}

\begin{DoxyCompactList}\small\item\em Returns generated tessellation evaluation shader code. \end{DoxyCompactList}\item 
\hypertarget{a01167_a99a7b6bcc6f9e460e96df6dc1eeda65e}{const Q\+String\+List \& \hyperlink{a01167_a99a7b6bcc6f9e460e96df6dc1eeda65e}{get\+Fragment\+Shader\+Code} ()}\label{a01167_a99a7b6bcc6f9e460e96df6dc1eeda65e}

\begin{DoxyCompactList}\small\item\em Returns generated fragment shader code. \end{DoxyCompactList}\item 
\hypertarget{a01167_ae5096cd2a508239580a333ea95ea9e03}{int \hyperlink{a01167_ae5096cd2a508239580a333ea95ea9e03}{get\+Num\+Active\+Modifiers} () const }\label{a01167_ae5096cd2a508239580a333ea95ea9e03}

\begin{DoxyCompactList}\small\item\em Get the number of active modifiers. \end{DoxyCompactList}\item 
\hypertarget{a01167_ae49bdbb42c3501ec8049dde1fb382788}{\hyperlink{a01164}{Shader\+Modifier} $\ast$ \hyperlink{a01167_ae49bdbb42c3501ec8049dde1fb382788}{get\+Active\+Modifier} (int \+\_\+i)}\label{a01167_ae49bdbb42c3501ec8049dde1fb382788}

\begin{DoxyCompactList}\small\item\em Get active modfiers for this program. \end{DoxyCompactList}\item 
\hypertarget{a01167_af4163d67826e79bff5add48dcc9d623c}{bool \hyperlink{a01167_af4163d67826e79bff5add48dcc9d623c}{has\+Geometry\+Shader} () const }\label{a01167_af4163d67826e79bff5add48dcc9d623c}

\begin{DoxyCompactList}\small\item\em check whether there is a geometry shader present \end{DoxyCompactList}\item 
\hypertarget{a01167_a1575babdd3c9cabf43da9cfb64e9786c}{bool \hyperlink{a01167_a1575babdd3c9cabf43da9cfb64e9786c}{has\+Tess\+Control\+Shader} () const }\label{a01167_a1575babdd3c9cabf43da9cfb64e9786c}

\begin{DoxyCompactList}\small\item\em check whether there is a tess-\/control shader present \end{DoxyCompactList}\item 
\hypertarget{a01167_a4c3a7153111afd76cf41a5a3b6baa348}{bool \hyperlink{a01167_a4c3a7153111afd76cf41a5a3b6baa348}{has\+Tess\+Evaluation\+Shader} () const }\label{a01167_a4c3a7153111afd76cf41a5a3b6baa348}

\begin{DoxyCompactList}\small\item\em check whether there is a tess-\/evaluation shader present \end{DoxyCompactList}\item 
\hypertarget{a01167_a68164040c357008d9a745df479a03b6a}{void \hyperlink{a01167_a68164040c357008d9a745df479a03b6a}{generate\+Shaders} ()}\label{a01167_a68164040c357008d9a745df479a03b6a}

\begin{DoxyCompactList}\small\item\em Generates the shader code. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Static Public Member Functions}
\begin{DoxyCompactItemize}
\item 
static void \hyperlink{a01167_ad298e66e037f3e6ec41957615ef5d2e8}{set\+Shader\+Dir} (Q\+String \+\_\+dir)
\item 
static Q\+String \hyperlink{a01167_a49b39a53a0dca21da77721d3cac781d2}{get\+Shader\+Dir} ()
\item 
static unsigned int \hyperlink{a01167_a0fef3ce1c55d8118020b6ab4930278b4}{register\+Modifier} (\hyperlink{a01164}{Shader\+Modifier} $\ast$\+\_\+modifier)
\begin{DoxyCompactList}\small\item\em Shader modifiers have to be registered before they can be used. They also must remain allocated for the rest of the applications runtime. Use a combination of modifier-\/\+I\+Ds in the constructor of Shader\+Prog\+Gen to active them. \end{DoxyCompactList}\item 
static bool \hyperlink{a01167_ab8fa5285aaf564bbd8d300a24010a95e}{load\+String\+List\+From\+File} (Q\+String \+\_\+file\+Name, Q\+String\+List $\ast$\+\_\+out)
\begin{DoxyCompactList}\small\item\em Load a text file as string list. \end{DoxyCompactList}\item 
static Q\+String \hyperlink{a01167_aa335644f71022caaded883c5f525a639}{get\+Abs\+File\+Path} (Q\+String \+\_\+file\+Name)
\begin{DoxyCompactList}\small\item\em Convert a filename to an absolute filename. \end{DoxyCompactList}\item 
static void \hyperlink{a01167_ad298e66e037f3e6ec41957615ef5d2e8}{set\+Shader\+Dir} (Q\+String \+\_\+dir)
\item 
static Q\+String \hyperlink{a01167_a49b39a53a0dca21da77721d3cac781d2}{get\+Shader\+Dir} ()
\item 
static unsigned int \hyperlink{a01167_a0fef3ce1c55d8118020b6ab4930278b4}{register\+Modifier} (\hyperlink{a01164}{Shader\+Modifier} $\ast$\+\_\+modifier)
\begin{DoxyCompactList}\small\item\em Shader modifiers have to be registered before they can be used. They also must remain allocated for the rest of the applications runtime. Use a combination of modifier-\/\+I\+Ds in the constructor of Shader\+Prog\+Gen to active them. \end{DoxyCompactList}\item 
static bool \hyperlink{a01167_ab8fa5285aaf564bbd8d300a24010a95e}{load\+String\+List\+From\+File} (Q\+String \+\_\+file\+Name, Q\+String\+List $\ast$\+\_\+out)
\begin{DoxyCompactList}\small\item\em Load a text file as string list. \end{DoxyCompactList}\item 
static Q\+String \hyperlink{a01167_aa335644f71022caaded883c5f525a639}{get\+Abs\+File\+Path} (Q\+String \+\_\+file\+Name)
\begin{DoxyCompactList}\small\item\em Convert a filename to an absolute filename. \end{DoxyCompactList}\item 
static void \hyperlink{a01167_ad298e66e037f3e6ec41957615ef5d2e8}{set\+Shader\+Dir} (Q\+String \+\_\+dir)
\item 
static Q\+String \hyperlink{a01167_a49b39a53a0dca21da77721d3cac781d2}{get\+Shader\+Dir} ()
\item 
static unsigned int \hyperlink{a01167_a0fef3ce1c55d8118020b6ab4930278b4}{register\+Modifier} (\hyperlink{a01164}{Shader\+Modifier} $\ast$\+\_\+modifier)
\begin{DoxyCompactList}\small\item\em Shader modifiers have to be registered before they can be used. They also must remain allocated for the rest of the applications runtime. Use a combination of modifier-\/\+I\+Ds in the constructor of Shader\+Prog\+Gen to active them. \end{DoxyCompactList}\item 
static bool \hyperlink{a01167_ab8fa5285aaf564bbd8d300a24010a95e}{load\+String\+List\+From\+File} (Q\+String \+\_\+file\+Name, Q\+String\+List $\ast$\+\_\+out)
\begin{DoxyCompactList}\small\item\em Load a text file as string list. \end{DoxyCompactList}\item 
static Q\+String \hyperlink{a01167_aa335644f71022caaded883c5f525a639}{get\+Abs\+File\+Path} (Q\+String \+\_\+file\+Name)
\begin{DoxyCompactList}\small\item\em Convert a filename to an absolute filename. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a01167_a0d40c12ccc3b530bf621fb6c657a1e5c}{void \hyperlink{a01167_a0d40c12ccc3b530bf621fb6c657a1e5c}{load\+Shader\+Template\+From\+File} ()}\label{a01167_a0d40c12ccc3b530bf621fb6c657a1e5c}

\begin{DoxyCompactList}\small\item\em Loads external shader templates. \end{DoxyCompactList}\item 
\hypertarget{a01167_aa2ae9b634692d15b88c5e9a4a0ad3013}{void \hyperlink{a01167_aa2ae9b634692d15b88c5e9a4a0ad3013}{scan\+Shader\+Template} (Q\+String\+List \&\+\_\+template\+Src, Q\+String \+\_\+template\+Filename, Q\+String\+List $\ast$\+\_\+out\+Layout\+Directives=0)}\label{a01167_aa2ae9b634692d15b88c5e9a4a0ad3013}

\begin{DoxyCompactList}\small\item\em Scans loaded shader template for requested inputs, glsl version or includes. \end{DoxyCompactList}\item 
\hypertarget{a01167_afab2abc1de677a82cdde78be529abaf4}{void \hyperlink{a01167_afab2abc1de677a82cdde78be529abaf4}{init} (const \hyperlink{a01157}{Shader\+Gen\+Desc} $\ast$\+\_\+desc, \hyperlink{a01164}{Shader\+Modifier} $\ast$const $\ast$\+\_\+modifiers, unsigned int \+\_\+num\+Active\+Mods)}\label{a01167_afab2abc1de677a82cdde78be529abaf4}

\begin{DoxyCompactList}\small\item\em Called in constructor. \end{DoxyCompactList}\item 
\hypertarget{a01167_a691de3d845748a0a1871c6f063a84f97}{void {\bfseries init} (const \hyperlink{a01157}{Shader\+Gen\+Desc} $\ast$\+\_\+desc, const unsigned int $\ast$\+\_\+modifiers, unsigned int \+\_\+num\+Active\+Mods)}\label{a01167_a691de3d845748a0a1871c6f063a84f97}

\item 
\hypertarget{a01167_ac1173c741ba2191e0069baee5ccb8e65}{void {\bfseries build\+Vertex\+Shader} ()}\label{a01167_ac1173c741ba2191e0069baee5ccb8e65}

\item 
\hypertarget{a01167_a88ed983e4670aaabd9f5ca78c98854e7}{void {\bfseries build\+Tess\+Control\+Shader} ()}\label{a01167_a88ed983e4670aaabd9f5ca78c98854e7}

\item 
\hypertarget{a01167_a20fc98a37292cddaa2a307674dadca3e}{void {\bfseries build\+Tess\+Eval\+Shader} ()}\label{a01167_a20fc98a37292cddaa2a307674dadca3e}

\item 
\hypertarget{a01167_a2ac7b2829e26940b937a7cac17b56c8f}{void {\bfseries build\+Geometry\+Shader} ()}\label{a01167_a2ac7b2829e26940b937a7cac17b56c8f}

\item 
\hypertarget{a01167_a46c727af1fe2dc110cd419e5e2da498f}{void {\bfseries build\+Fragment\+Shader} ()}\label{a01167_a46c727af1fe2dc110cd419e5e2da498f}

\item 
\hypertarget{a01167_a6a2e9e08173a3efdff2a40af8b2345df}{void {\bfseries add\+Vertex\+Begin\+Code} (Q\+String\+List $\ast$\+\_\+code)}\label{a01167_a6a2e9e08173a3efdff2a40af8b2345df}

\item 
\hypertarget{a01167_ad8ec429b417afa412828573706d0323d}{void {\bfseries add\+Vertex\+End\+Code} (Q\+String\+List $\ast$\+\_\+code)}\label{a01167_ad8ec429b417afa412828573706d0323d}

\item 
\hypertarget{a01167_abaf79f8a8968a91ad97e358d6f3788a1}{void {\bfseries add\+Fragment\+Begin\+Code} (Q\+String\+List $\ast$\+\_\+code)}\label{a01167_abaf79f8a8968a91ad97e358d6f3788a1}

\item 
\hypertarget{a01167_a9f961fa288529fbda86d6799ada2cd88}{void {\bfseries add\+Fragment\+End\+Code} (Q\+String\+List $\ast$\+\_\+code)}\label{a01167_a9f961fa288529fbda86d6799ada2cd88}

\item 
void \hyperlink{a01167_a0e3dc696d6b40f57be2f2c9dded8be67}{add\+Lighting\+Functions} (Q\+String\+List $\ast$\+\_\+code)
\begin{DoxyCompactList}\small\item\em Adds lighting definition functions. \end{DoxyCompactList}\item 
\hypertarget{a01167_a8e547fd2b5702b3c55a4671ca21f2d74}{void \hyperlink{a01167_a8e547fd2b5702b3c55a4671ca21f2d74}{add\+Lighting\+Code} (Q\+String\+List $\ast$\+\_\+code)}\label{a01167_a8e547fd2b5702b3c55a4671ca21f2d74}

\begin{DoxyCompactList}\small\item\em Adds lighting function calls to code. \end{DoxyCompactList}\item 
\hypertarget{a01167_a4262762309e5b97cbc3a0ecaeb81b474}{void \hyperlink{a01167_a4262762309e5b97cbc3a0ecaeb81b474}{modify\+Lighting\+Code} (Q\+String\+List $\ast$\+\_\+code, \hyperlink{a01164}{Shader\+Modifier} $\ast$\+\_\+modifier)}\label{a01167_a4262762309e5b97cbc3a0ecaeb81b474}

\begin{DoxyCompactList}\small\item\em Calls lighting modifier for each light. \end{DoxyCompactList}\item 
\hypertarget{a01167_a595893cfb1a8c710f3dd472fd88b676e}{void \hyperlink{a01167_a595893cfb1a8c710f3dd472fd88b676e}{add\+Tex\+Gen\+Code} (Q\+String\+List $\ast$\+\_\+code, bool \+\_\+fragment\+Shader)}\label{a01167_a595893cfb1a8c710f3dd472fd88b676e}

\begin{DoxyCompactList}\small\item\em Add texture coordinate generation code. \end{DoxyCompactList}\item 
int \hyperlink{a01167_a11d4d22f27cc711c03908088a838b66f}{check\+For\+Includes} (Q\+String \+\_\+str, \hyperlink{a01159}{Shader\+Generator} $\ast$\+\_\+gen, Q\+String \+\_\+include\+Path)
\item 
int \hyperlink{a01167_a6352619dffeb651975d5b5e8ec188c31}{check\+For\+Includes} (Q\+String \+\_\+str, Q\+String\+List $\ast$\+\_\+out\+Import, Q\+String \+\_\+include\+Path)
\item 
\hypertarget{a01167_a79654edc9167d09398d2bb6a46c04450}{void \hyperlink{a01167_a79654edc9167d09398d2bb6a46c04450}{init\+Gen\+Defines} (\hyperlink{a01159}{Shader\+Generator} $\ast$\+\_\+gen)}\label{a01167_a79654edc9167d09398d2bb6a46c04450}

\begin{DoxyCompactList}\small\item\em provide generated defines to shader \end{DoxyCompactList}\item 
\hypertarget{a01167_a0d40c12ccc3b530bf621fb6c657a1e5c}{void \hyperlink{a01167_a0d40c12ccc3b530bf621fb6c657a1e5c}{load\+Shader\+Template\+From\+File} ()}\label{a01167_a0d40c12ccc3b530bf621fb6c657a1e5c}

\begin{DoxyCompactList}\small\item\em Loads external shader templates. \end{DoxyCompactList}\item 
\hypertarget{a01167_aa2ae9b634692d15b88c5e9a4a0ad3013}{void \hyperlink{a01167_aa2ae9b634692d15b88c5e9a4a0ad3013}{scan\+Shader\+Template} (Q\+String\+List \&\+\_\+template\+Src, Q\+String \+\_\+template\+Filename, Q\+String\+List $\ast$\+\_\+out\+Layout\+Directives=0)}\label{a01167_aa2ae9b634692d15b88c5e9a4a0ad3013}

\begin{DoxyCompactList}\small\item\em Scans loaded shader template for requested inputs, glsl version or includes. \end{DoxyCompactList}\item 
\hypertarget{a01167_afab2abc1de677a82cdde78be529abaf4}{void \hyperlink{a01167_afab2abc1de677a82cdde78be529abaf4}{init} (const \hyperlink{a01157}{Shader\+Gen\+Desc} $\ast$\+\_\+desc, \hyperlink{a01164}{Shader\+Modifier} $\ast$const $\ast$\+\_\+modifiers, unsigned int \+\_\+num\+Active\+Mods)}\label{a01167_afab2abc1de677a82cdde78be529abaf4}

\begin{DoxyCompactList}\small\item\em Called in constructor. \end{DoxyCompactList}\item 
\hypertarget{a01167_a691de3d845748a0a1871c6f063a84f97}{void {\bfseries init} (const \hyperlink{a01157}{Shader\+Gen\+Desc} $\ast$\+\_\+desc, const unsigned int $\ast$\+\_\+modifiers, unsigned int \+\_\+num\+Active\+Mods)}\label{a01167_a691de3d845748a0a1871c6f063a84f97}

\item 
\hypertarget{a01167_ac1173c741ba2191e0069baee5ccb8e65}{void {\bfseries build\+Vertex\+Shader} ()}\label{a01167_ac1173c741ba2191e0069baee5ccb8e65}

\item 
\hypertarget{a01167_a88ed983e4670aaabd9f5ca78c98854e7}{void {\bfseries build\+Tess\+Control\+Shader} ()}\label{a01167_a88ed983e4670aaabd9f5ca78c98854e7}

\item 
\hypertarget{a01167_a20fc98a37292cddaa2a307674dadca3e}{void {\bfseries build\+Tess\+Eval\+Shader} ()}\label{a01167_a20fc98a37292cddaa2a307674dadca3e}

\item 
\hypertarget{a01167_a2ac7b2829e26940b937a7cac17b56c8f}{void {\bfseries build\+Geometry\+Shader} ()}\label{a01167_a2ac7b2829e26940b937a7cac17b56c8f}

\item 
\hypertarget{a01167_a46c727af1fe2dc110cd419e5e2da498f}{void {\bfseries build\+Fragment\+Shader} ()}\label{a01167_a46c727af1fe2dc110cd419e5e2da498f}

\item 
\hypertarget{a01167_a6a2e9e08173a3efdff2a40af8b2345df}{void {\bfseries add\+Vertex\+Begin\+Code} (Q\+String\+List $\ast$\+\_\+code)}\label{a01167_a6a2e9e08173a3efdff2a40af8b2345df}

\item 
\hypertarget{a01167_ad8ec429b417afa412828573706d0323d}{void {\bfseries add\+Vertex\+End\+Code} (Q\+String\+List $\ast$\+\_\+code)}\label{a01167_ad8ec429b417afa412828573706d0323d}

\item 
\hypertarget{a01167_abaf79f8a8968a91ad97e358d6f3788a1}{void {\bfseries add\+Fragment\+Begin\+Code} (Q\+String\+List $\ast$\+\_\+code)}\label{a01167_abaf79f8a8968a91ad97e358d6f3788a1}

\item 
\hypertarget{a01167_a9f961fa288529fbda86d6799ada2cd88}{void {\bfseries add\+Fragment\+End\+Code} (Q\+String\+List $\ast$\+\_\+code)}\label{a01167_a9f961fa288529fbda86d6799ada2cd88}

\item 
void \hyperlink{a01167_a0e3dc696d6b40f57be2f2c9dded8be67}{add\+Lighting\+Functions} (Q\+String\+List $\ast$\+\_\+code)
\begin{DoxyCompactList}\small\item\em Adds lighting definition functions. \end{DoxyCompactList}\item 
\hypertarget{a01167_a8e547fd2b5702b3c55a4671ca21f2d74}{void \hyperlink{a01167_a8e547fd2b5702b3c55a4671ca21f2d74}{add\+Lighting\+Code} (Q\+String\+List $\ast$\+\_\+code)}\label{a01167_a8e547fd2b5702b3c55a4671ca21f2d74}

\begin{DoxyCompactList}\small\item\em Adds lighting function calls to code. \end{DoxyCompactList}\item 
\hypertarget{a01167_a4262762309e5b97cbc3a0ecaeb81b474}{void \hyperlink{a01167_a4262762309e5b97cbc3a0ecaeb81b474}{modify\+Lighting\+Code} (Q\+String\+List $\ast$\+\_\+code, \hyperlink{a01164}{Shader\+Modifier} $\ast$\+\_\+modifier)}\label{a01167_a4262762309e5b97cbc3a0ecaeb81b474}

\begin{DoxyCompactList}\small\item\em Calls lighting modifier for each light. \end{DoxyCompactList}\item 
\hypertarget{a01167_a595893cfb1a8c710f3dd472fd88b676e}{void \hyperlink{a01167_a595893cfb1a8c710f3dd472fd88b676e}{add\+Tex\+Gen\+Code} (Q\+String\+List $\ast$\+\_\+code, bool \+\_\+fragment\+Shader)}\label{a01167_a595893cfb1a8c710f3dd472fd88b676e}

\begin{DoxyCompactList}\small\item\em Add texture coordinate generation code. \end{DoxyCompactList}\item 
int \hyperlink{a01167_a11d4d22f27cc711c03908088a838b66f}{check\+For\+Includes} (Q\+String \+\_\+str, \hyperlink{a01159}{Shader\+Generator} $\ast$\+\_\+gen, Q\+String \+\_\+include\+Path)
\item 
int \hyperlink{a01167_a6352619dffeb651975d5b5e8ec188c31}{check\+For\+Includes} (Q\+String \+\_\+str, Q\+String\+List $\ast$\+\_\+out\+Import, Q\+String \+\_\+include\+Path)
\item 
\hypertarget{a01167_a79654edc9167d09398d2bb6a46c04450}{void \hyperlink{a01167_a79654edc9167d09398d2bb6a46c04450}{init\+Gen\+Defines} (\hyperlink{a01159}{Shader\+Generator} $\ast$\+\_\+gen)}\label{a01167_a79654edc9167d09398d2bb6a46c04450}

\begin{DoxyCompactList}\small\item\em provide generated defines to shader \end{DoxyCompactList}\item 
\hypertarget{a01167_a0d40c12ccc3b530bf621fb6c657a1e5c}{void \hyperlink{a01167_a0d40c12ccc3b530bf621fb6c657a1e5c}{load\+Shader\+Template\+From\+File} ()}\label{a01167_a0d40c12ccc3b530bf621fb6c657a1e5c}

\begin{DoxyCompactList}\small\item\em Loads external shader templates. \end{DoxyCompactList}\item 
\hypertarget{a01167_aa2ae9b634692d15b88c5e9a4a0ad3013}{void \hyperlink{a01167_aa2ae9b634692d15b88c5e9a4a0ad3013}{scan\+Shader\+Template} (Q\+String\+List \&\+\_\+template\+Src, Q\+String \+\_\+template\+Filename, Q\+String\+List $\ast$\+\_\+out\+Layout\+Directives=0)}\label{a01167_aa2ae9b634692d15b88c5e9a4a0ad3013}

\begin{DoxyCompactList}\small\item\em Scans loaded shader template for requested inputs, glsl version or includes. \end{DoxyCompactList}\item 
\hypertarget{a01167_afab2abc1de677a82cdde78be529abaf4}{void \hyperlink{a01167_afab2abc1de677a82cdde78be529abaf4}{init} (const \hyperlink{a01157}{Shader\+Gen\+Desc} $\ast$\+\_\+desc, \hyperlink{a01164}{Shader\+Modifier} $\ast$const $\ast$\+\_\+modifiers, unsigned int \+\_\+num\+Active\+Mods)}\label{a01167_afab2abc1de677a82cdde78be529abaf4}

\begin{DoxyCompactList}\small\item\em Called in constructor. \end{DoxyCompactList}\item 
\hypertarget{a01167_a691de3d845748a0a1871c6f063a84f97}{void {\bfseries init} (const \hyperlink{a01157}{Shader\+Gen\+Desc} $\ast$\+\_\+desc, const unsigned int $\ast$\+\_\+modifiers, unsigned int \+\_\+num\+Active\+Mods)}\label{a01167_a691de3d845748a0a1871c6f063a84f97}

\item 
\hypertarget{a01167_ac1173c741ba2191e0069baee5ccb8e65}{void {\bfseries build\+Vertex\+Shader} ()}\label{a01167_ac1173c741ba2191e0069baee5ccb8e65}

\item 
\hypertarget{a01167_a88ed983e4670aaabd9f5ca78c98854e7}{void {\bfseries build\+Tess\+Control\+Shader} ()}\label{a01167_a88ed983e4670aaabd9f5ca78c98854e7}

\item 
\hypertarget{a01167_a20fc98a37292cddaa2a307674dadca3e}{void {\bfseries build\+Tess\+Eval\+Shader} ()}\label{a01167_a20fc98a37292cddaa2a307674dadca3e}

\item 
\hypertarget{a01167_a2ac7b2829e26940b937a7cac17b56c8f}{void {\bfseries build\+Geometry\+Shader} ()}\label{a01167_a2ac7b2829e26940b937a7cac17b56c8f}

\item 
\hypertarget{a01167_a46c727af1fe2dc110cd419e5e2da498f}{void {\bfseries build\+Fragment\+Shader} ()}\label{a01167_a46c727af1fe2dc110cd419e5e2da498f}

\item 
\hypertarget{a01167_a6a2e9e08173a3efdff2a40af8b2345df}{void {\bfseries add\+Vertex\+Begin\+Code} (Q\+String\+List $\ast$\+\_\+code)}\label{a01167_a6a2e9e08173a3efdff2a40af8b2345df}

\item 
\hypertarget{a01167_ad8ec429b417afa412828573706d0323d}{void {\bfseries add\+Vertex\+End\+Code} (Q\+String\+List $\ast$\+\_\+code)}\label{a01167_ad8ec429b417afa412828573706d0323d}

\item 
\hypertarget{a01167_abaf79f8a8968a91ad97e358d6f3788a1}{void {\bfseries add\+Fragment\+Begin\+Code} (Q\+String\+List $\ast$\+\_\+code)}\label{a01167_abaf79f8a8968a91ad97e358d6f3788a1}

\item 
\hypertarget{a01167_a9f961fa288529fbda86d6799ada2cd88}{void {\bfseries add\+Fragment\+End\+Code} (Q\+String\+List $\ast$\+\_\+code)}\label{a01167_a9f961fa288529fbda86d6799ada2cd88}

\item 
void \hyperlink{a01167_a0e3dc696d6b40f57be2f2c9dded8be67}{add\+Lighting\+Functions} (Q\+String\+List $\ast$\+\_\+code)
\begin{DoxyCompactList}\small\item\em Adds lighting definition functions. \end{DoxyCompactList}\item 
\hypertarget{a01167_a8e547fd2b5702b3c55a4671ca21f2d74}{void \hyperlink{a01167_a8e547fd2b5702b3c55a4671ca21f2d74}{add\+Lighting\+Code} (Q\+String\+List $\ast$\+\_\+code)}\label{a01167_a8e547fd2b5702b3c55a4671ca21f2d74}

\begin{DoxyCompactList}\small\item\em Adds lighting function calls to code. \end{DoxyCompactList}\item 
\hypertarget{a01167_a4262762309e5b97cbc3a0ecaeb81b474}{void \hyperlink{a01167_a4262762309e5b97cbc3a0ecaeb81b474}{modify\+Lighting\+Code} (Q\+String\+List $\ast$\+\_\+code, \hyperlink{a01164}{Shader\+Modifier} $\ast$\+\_\+modifier)}\label{a01167_a4262762309e5b97cbc3a0ecaeb81b474}

\begin{DoxyCompactList}\small\item\em Calls lighting modifier for each light. \end{DoxyCompactList}\item 
\hypertarget{a01167_a595893cfb1a8c710f3dd472fd88b676e}{void \hyperlink{a01167_a595893cfb1a8c710f3dd472fd88b676e}{add\+Tex\+Gen\+Code} (Q\+String\+List $\ast$\+\_\+code, bool \+\_\+fragment\+Shader)}\label{a01167_a595893cfb1a8c710f3dd472fd88b676e}

\begin{DoxyCompactList}\small\item\em Add texture coordinate generation code. \end{DoxyCompactList}\item 
int \hyperlink{a01167_a11d4d22f27cc711c03908088a838b66f}{check\+For\+Includes} (Q\+String \+\_\+str, \hyperlink{a01159}{Shader\+Generator} $\ast$\+\_\+gen, Q\+String \+\_\+include\+Path)
\item 
int \hyperlink{a01167_a6352619dffeb651975d5b5e8ec188c31}{check\+For\+Includes} (Q\+String \+\_\+str, Q\+String\+List $\ast$\+\_\+out\+Import, Q\+String \+\_\+include\+Path)
\item 
\hypertarget{a01167_a79654edc9167d09398d2bb6a46c04450}{void \hyperlink{a01167_a79654edc9167d09398d2bb6a46c04450}{init\+Gen\+Defines} (\hyperlink{a01159}{Shader\+Generator} $\ast$\+\_\+gen)}\label{a01167_a79654edc9167d09398d2bb6a46c04450}

\begin{DoxyCompactList}\small\item\em provide generated defines to shader \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Static Private Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a01167_a50145024f9cf76f60c77c7330c36fecc}{static Q\+String \hyperlink{a01167_a50145024f9cf76f60c77c7330c36fecc}{get\+Path\+Name} (Q\+String \+\_\+str\+File\+Name)}\label{a01167_a50145024f9cf76f60c77c7330c36fecc}

\begin{DoxyCompactList}\small\item\em returns path to \+\_\+str\+File\+Name without last slash \end{DoxyCompactList}\item 
\hypertarget{a01167_a60a275bc5f976127265f75f414f90651}{static void {\bfseries load\+Lighting\+Functions} ()}\label{a01167_a60a275bc5f976127265f75f414f90651}

\item 
\hypertarget{a01167_a50145024f9cf76f60c77c7330c36fecc}{static Q\+String \hyperlink{a01167_a50145024f9cf76f60c77c7330c36fecc}{get\+Path\+Name} (Q\+String \+\_\+str\+File\+Name)}\label{a01167_a50145024f9cf76f60c77c7330c36fecc}

\begin{DoxyCompactList}\small\item\em returns path to \+\_\+str\+File\+Name without last slash \end{DoxyCompactList}\item 
\hypertarget{a01167_a60a275bc5f976127265f75f414f90651}{static void {\bfseries load\+Lighting\+Functions} ()}\label{a01167_a60a275bc5f976127265f75f414f90651}

\item 
\hypertarget{a01167_a50145024f9cf76f60c77c7330c36fecc}{static Q\+String \hyperlink{a01167_a50145024f9cf76f60c77c7330c36fecc}{get\+Path\+Name} (Q\+String \+\_\+str\+File\+Name)}\label{a01167_a50145024f9cf76f60c77c7330c36fecc}

\begin{DoxyCompactList}\small\item\em returns path to \+\_\+str\+File\+Name without last slash \end{DoxyCompactList}\item 
\hypertarget{a01167_a60a275bc5f976127265f75f414f90651}{static void {\bfseries load\+Lighting\+Functions} ()}\label{a01167_a60a275bc5f976127265f75f414f90651}

\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a01167_a8dc748d9838609c4075f55049f6992ce}{\hyperlink{a01159}{Shader\+Generator} $\ast$ {\bfseries vertex\+\_\+}}\label{a01167_a8dc748d9838609c4075f55049f6992ce}

\item 
\hypertarget{a01167_a670bc15ea31979e69fe83a96209fad8b}{\hyperlink{a01159}{Shader\+Generator} $\ast$ {\bfseries tess\+Control\+\_\+}}\label{a01167_a670bc15ea31979e69fe83a96209fad8b}

\item 
\hypertarget{a01167_ac50b6c80c18dae26903282218f10ce2e}{\hyperlink{a01159}{Shader\+Generator} $\ast$ {\bfseries tess\+Eval\+\_\+}}\label{a01167_ac50b6c80c18dae26903282218f10ce2e}

\item 
\hypertarget{a01167_a79fcbdbd6378a9c75013d22e07f86362}{\hyperlink{a01159}{Shader\+Generator} $\ast$ {\bfseries geometry\+\_\+}}\label{a01167_a79fcbdbd6378a9c75013d22e07f86362}

\item 
\hypertarget{a01167_af8854b14fe7286eab7d96776dd0c15d7}{\hyperlink{a01159}{Shader\+Generator} $\ast$ {\bfseries fragment\+\_\+}}\label{a01167_af8854b14fe7286eab7d96776dd0c15d7}

\item 
\hypertarget{a01167_a4a3b0dcae952f77494e7e2526e23a9cf}{Q\+String\+List {\bfseries vertex\+Template\+\_\+}}\label{a01167_a4a3b0dcae952f77494e7e2526e23a9cf}

\item 
\hypertarget{a01167_a2e9bf524fa0c43c06e41461360119557}{Q\+String\+List {\bfseries tess\+Control\+Template\+\_\+}}\label{a01167_a2e9bf524fa0c43c06e41461360119557}

\item 
\hypertarget{a01167_a23aa32b9ef702c1fb4db0874bbf218eb}{Q\+String\+List {\bfseries tess\+Eval\+Template\+\_\+}}\label{a01167_a23aa32b9ef702c1fb4db0874bbf218eb}

\item 
\hypertarget{a01167_af35f3c64bfdf6624a7bb700b70285dcb}{Q\+String\+List {\bfseries geometry\+Template\+\_\+}}\label{a01167_af35f3c64bfdf6624a7bb700b70285dcb}

\item 
\hypertarget{a01167_a3995f07bfbc69fa7ff7f35ba0fed14ff}{Q\+String\+List {\bfseries fragment\+Template\+\_\+}}\label{a01167_a3995f07bfbc69fa7ff7f35ba0fed14ff}

\item 
\hypertarget{a01167_abe12a746265f3bc78e503a82d7c90b63}{\hyperlink{a01157}{Shader\+Gen\+Desc} {\bfseries desc\+\_\+}}\label{a01167_abe12a746265f3bc78e503a82d7c90b63}

\item 
\hypertarget{a01167_aa3df1223736923c6e27c12384fadd640}{std\+::vector$<$ \hyperlink{a01164}{Shader\+Modifier} $\ast$ $>$ {\bfseries active\+Mods\+\_\+}}\label{a01167_aa3df1223736923c6e27c12384fadd640}

\item 
\hypertarget{a01167_ae313d01ea5ee12a4ddb744f98d102c8f}{Q\+String \hyperlink{a01167_ae313d01ea5ee12a4ddb744f98d102c8f}{vertex\+Shader\+File\+\_\+}}\label{a01167_ae313d01ea5ee12a4ddb744f98d102c8f}

\begin{DoxyCompactList}\small\item\em path + filename to shader templates \end{DoxyCompactList}\item 
\hypertarget{a01167_a6567e0a4bcea744dcaa0379a1d2100f5}{Q\+String {\bfseries tess\+Control\+Shader\+File\+\_\+}}\label{a01167_a6567e0a4bcea744dcaa0379a1d2100f5}

\item 
\hypertarget{a01167_a58c1c9fc24497a5dde2d9550795e602e}{Q\+String {\bfseries tess\+Eval\+Shader\+File\+\_\+}}\label{a01167_a58c1c9fc24497a5dde2d9550795e602e}

\item 
\hypertarget{a01167_a29eca0f59a69752abfbbd450bbdc956c}{Q\+String {\bfseries geometry\+Shader\+File\+\_\+}}\label{a01167_a29eca0f59a69752abfbbd450bbdc956c}

\item 
\hypertarget{a01167_af179ecb6515fabc2d54082c4c8685d32}{Q\+String {\bfseries fragment\+Shader\+File\+\_\+}}\label{a01167_af179ecb6515fabc2d54082c4c8685d32}

\item 
\hypertarget{a01167_a51e26cafd907760ac33886f0e041d915}{Q\+String\+List \hyperlink{a01167_a51e26cafd907760ac33886f0e041d915}{tess\+Control\+Layout\+\_\+}}\label{a01167_a51e26cafd907760ac33886f0e041d915}

\begin{DoxyCompactList}\small\item\em layout() directives scanned from loaded templates \end{DoxyCompactList}\item 
\hypertarget{a01167_a2e799a260a1639f1d1fb1ff4c360e84a}{Q\+String\+List {\bfseries tess\+Eval\+Layout\+\_\+}}\label{a01167_a2e799a260a1639f1d1fb1ff4c360e84a}

\item 
\hypertarget{a01167_aadfadcab66ed69c5081145160deaf20c}{\hyperlink{a00487}{Shader\+Generator\+::\+Default\+I\+O\+Desc} \hyperlink{a01167_aadfadcab66ed69c5081145160deaf20c}{io\+Desc\+\_\+}}\label{a01167_aadfadcab66ed69c5081145160deaf20c}

\begin{DoxyCompactList}\small\item\em default I\+O descriptor for the vertex shader \end{DoxyCompactList}\item 
\hypertarget{a01167_a3bb7eda0bf15bf91595028b1c99a57af}{bool \hyperlink{a01167_a3bb7eda0bf15bf91595028b1c99a57af}{renormalize\+Lighting\+\_\+}}\label{a01167_a3bb7eda0bf15bf91595028b1c99a57af}

\begin{DoxyCompactList}\small\item\em renormalize before lighting, default false, can be activated via \char`\"{}\#define S\+G\+\_\+\+R\+E\+Q\+U\+E\+S\+T\+\_\+\+R\+E\+N\+O\+R\+M\+A\+L\+I\+Z\+E\char`\"{} \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Static Private Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a01167_ae61f3a05537fd76079deecc35fae73f8}{static int \hyperlink{a01167_ae61f3a05537fd76079deecc35fae73f8}{num\+Registered\+Modifiers\+\_\+}}\label{a01167_ae61f3a05537fd76079deecc35fae73f8}

\begin{DoxyCompactList}\small\item\em registered shader modifier \end{DoxyCompactList}\item 
\hypertarget{a01167_aff67bed21101b9bcfe57e06ec598f1c3}{static std\+::vector\\*
$<$ \hyperlink{a01164}{Shader\+Modifier} $\ast$ $>$ {\bfseries registered\+Modifiers\+\_\+}}\label{a01167_aff67bed21101b9bcfe57e06ec598f1c3}

\item 
\hypertarget{a01167_ae71cf99e7eda4dff22b6e29817a91c05}{static Q\+String {\bfseries shader\+Dir\+\_\+}}\label{a01167_ae71cf99e7eda4dff22b6e29817a91c05}

\item 
\hypertarget{a01167_a7ba7c6813175aa5ef1a8b3e58932b227}{static Q\+String\+List {\bfseries lighting\+Code\+\_\+}}\label{a01167_a7ba7c6813175aa5ef1a8b3e58932b227}

\end{DoxyCompactItemize}


\subsection{Detailed Description}
\hyperlink{a01167}{Shader\+Prog\+Generator} is responsible for generating a matching pair of vertex and fragment shaders. 

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



\subsection{Constructor \& Destructor Documentation}
\hypertarget{a01167_a66d2289362fde960fd35475593822b0c}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}!Shader\+Prog\+Generator@{Shader\+Prog\+Generator}}
\index{Shader\+Prog\+Generator@{Shader\+Prog\+Generator}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}}
\subsubsection[{Shader\+Prog\+Generator}]{\setlength{\rightskip}{0pt plus 5cm}A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator\+::\+Shader\+Prog\+Generator (
\begin{DoxyParamCaption}
\item[{const {\bf Shader\+Gen\+Desc} $\ast$}]{\+\_\+desc}
\end{DoxyParamCaption}
)}}\label{a01167_a66d2289362fde960fd35475593822b0c}

\begin{DoxyParams}{Parameters}
{\em \+\_\+desc} & description-\/set of shader properties. \\
\hline
\end{DoxyParams}
\hypertarget{a01167_a8ff5266b5057a37ae524447bf97abae0}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}!Shader\+Prog\+Generator@{Shader\+Prog\+Generator}}
\index{Shader\+Prog\+Generator@{Shader\+Prog\+Generator}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}}
\subsubsection[{Shader\+Prog\+Generator}]{\setlength{\rightskip}{0pt plus 5cm}A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator\+::\+Shader\+Prog\+Generator (
\begin{DoxyParamCaption}
\item[{const {\bf Shader\+Gen\+Desc} $\ast$}]{\+\_\+desc, }
\item[{const std\+::vector$<$ unsigned int $>$ \&}]{\+\_\+modifier\+I\+Ds}
\end{DoxyParamCaption}
)}}\label{a01167_a8ff5266b5057a37ae524447bf97abae0}

\begin{DoxyParams}{Parameters}
{\em \+\_\+desc} & description-\/set of shader properties. \\
\hline
{\em \+\_\+modifier\+I\+Ds} & array of modifier-\/\+I\+Ds that should be used for the generation. \\
\hline
\end{DoxyParams}
\hypertarget{a01167_ab2ad1a50753d47ad291dd8518ca3ff11}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}!Shader\+Prog\+Generator@{Shader\+Prog\+Generator}}
\index{Shader\+Prog\+Generator@{Shader\+Prog\+Generator}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}}
\subsubsection[{Shader\+Prog\+Generator}]{\setlength{\rightskip}{0pt plus 5cm}A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator\+::\+Shader\+Prog\+Generator (
\begin{DoxyParamCaption}
\item[{const {\bf Shader\+Gen\+Desc} $\ast$}]{\+\_\+desc, }
\item[{const std\+::vector$<$ unsigned int $>$ $\ast$}]{\+\_\+modifier\+I\+Ds}
\end{DoxyParamCaption}
)}}\label{a01167_ab2ad1a50753d47ad291dd8518ca3ff11}

\begin{DoxyParams}{Parameters}
{\em \+\_\+desc} & description-\/set of shader properties. \\
\hline
{\em \+\_\+modifier\+I\+Ds} & array of modifier-\/\+I\+Ds that should be used for the generation. \\
\hline
\end{DoxyParams}
\hypertarget{a01167_a77ef039da60b23c92ba9d9933efa30fe}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}!Shader\+Prog\+Generator@{Shader\+Prog\+Generator}}
\index{Shader\+Prog\+Generator@{Shader\+Prog\+Generator}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}}
\subsubsection[{Shader\+Prog\+Generator}]{\setlength{\rightskip}{0pt plus 5cm}A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator\+::\+Shader\+Prog\+Generator (
\begin{DoxyParamCaption}
\item[{const {\bf Shader\+Gen\+Desc} $\ast$}]{\+\_\+desc, }
\item[{const unsigned int $\ast$}]{\+\_\+modifier\+I\+Ds, }
\item[{unsigned int}]{\+\_\+num\+Modifiers}
\end{DoxyParamCaption}
)}}\label{a01167_a77ef039da60b23c92ba9d9933efa30fe}

\begin{DoxyParams}{Parameters}
{\em \+\_\+desc} & description-\/set of shader properties. \\
\hline
{\em \+\_\+modifier\+I\+Ds} & array of modifier-\/\+I\+Ds that should be used for the generation. \\
\hline
{\em \+\_\+num\+Modifiers} & number of modifiers in \+\_\+modifier\+I\+Ds \\
\hline
\end{DoxyParams}
\hypertarget{a01167_aa47b2d19b07fd2b5869c49314179b280}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}!Shader\+Prog\+Generator@{Shader\+Prog\+Generator}}
\index{Shader\+Prog\+Generator@{Shader\+Prog\+Generator}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}}
\subsubsection[{Shader\+Prog\+Generator}]{\setlength{\rightskip}{0pt plus 5cm}A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator\+::\+Shader\+Prog\+Generator (
\begin{DoxyParamCaption}
\item[{const {\bf Shader\+Gen\+Desc} $\ast$}]{\+\_\+desc, }
\item[{{\bf Shader\+Modifier} $\ast$const $\ast$}]{\+\_\+modifiers, }
\item[{unsigned int}]{\+\_\+num\+Modifiers}
\end{DoxyParamCaption}
)}}\label{a01167_aa47b2d19b07fd2b5869c49314179b280}

\begin{DoxyParams}{Parameters}
{\em \+\_\+desc} & description-\/set of shader properties. \\
\hline
{\em \+\_\+modifiers} & array of modifiers that should be used for the generation. \\
\hline
{\em \+\_\+num\+Modifiers} & number of modifiers in \+\_\+modifier\+I\+Ds \\
\hline
\end{DoxyParams}
\hypertarget{a01167_a8cb91075df9926dc568f8d87421a2d2a}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}!Shader\+Prog\+Generator@{Shader\+Prog\+Generator}}
\index{Shader\+Prog\+Generator@{Shader\+Prog\+Generator}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}}
\subsubsection[{Shader\+Prog\+Generator}]{\setlength{\rightskip}{0pt plus 5cm}A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator\+::\+Shader\+Prog\+Generator (
\begin{DoxyParamCaption}
\item[{const {\bf Shader\+Gen\+Desc} $\ast$}]{\+\_\+desc, }
\item[{const std\+::vector$<$ {\bf Shader\+Modifier} $\ast$ $>$ \&}]{\+\_\+modifiers}
\end{DoxyParamCaption}
)}}\label{a01167_a8cb91075df9926dc568f8d87421a2d2a}

\begin{DoxyParams}{Parameters}
{\em \+\_\+desc} & description-\/set of shader properties. \\
\hline
{\em \+\_\+modifiers} & array of modifiers that should be used for the generation. \\
\hline
\end{DoxyParams}
\hypertarget{a01167_ae2acbb0a56211d0ec213a16196599044}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}!Shader\+Prog\+Generator@{Shader\+Prog\+Generator}}
\index{Shader\+Prog\+Generator@{Shader\+Prog\+Generator}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}}
\subsubsection[{Shader\+Prog\+Generator}]{\setlength{\rightskip}{0pt plus 5cm}A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator\+::\+Shader\+Prog\+Generator (
\begin{DoxyParamCaption}
\item[{const {\bf Shader\+Gen\+Desc} $\ast$}]{\+\_\+desc, }
\item[{const std\+::vector$<$ {\bf Shader\+Modifier} $\ast$ $>$ $\ast$}]{\+\_\+modifiers}
\end{DoxyParamCaption}
)}}\label{a01167_ae2acbb0a56211d0ec213a16196599044}

\begin{DoxyParams}{Parameters}
{\em \+\_\+desc} & description-\/set of shader properties. \\
\hline
{\em \+\_\+modifiers} & array of modifiers that should be used for the generation. \\
\hline
\end{DoxyParams}
\hypertarget{a01167_a66d2289362fde960fd35475593822b0c}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}!Shader\+Prog\+Generator@{Shader\+Prog\+Generator}}
\index{Shader\+Prog\+Generator@{Shader\+Prog\+Generator}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}}
\subsubsection[{Shader\+Prog\+Generator}]{\setlength{\rightskip}{0pt plus 5cm}A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator\+::\+Shader\+Prog\+Generator (
\begin{DoxyParamCaption}
\item[{const {\bf Shader\+Gen\+Desc} $\ast$}]{\+\_\+desc}
\end{DoxyParamCaption}
)}}\label{a01167_a66d2289362fde960fd35475593822b0c}

\begin{DoxyParams}{Parameters}
{\em \+\_\+desc} & description-\/set of shader properties. \\
\hline
\end{DoxyParams}
\hypertarget{a01167_a8ff5266b5057a37ae524447bf97abae0}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}!Shader\+Prog\+Generator@{Shader\+Prog\+Generator}}
\index{Shader\+Prog\+Generator@{Shader\+Prog\+Generator}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}}
\subsubsection[{Shader\+Prog\+Generator}]{\setlength{\rightskip}{0pt plus 5cm}A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator\+::\+Shader\+Prog\+Generator (
\begin{DoxyParamCaption}
\item[{const {\bf Shader\+Gen\+Desc} $\ast$}]{\+\_\+desc, }
\item[{const std\+::vector$<$ unsigned int $>$ \&}]{\+\_\+modifier\+I\+Ds}
\end{DoxyParamCaption}
)}}\label{a01167_a8ff5266b5057a37ae524447bf97abae0}

\begin{DoxyParams}{Parameters}
{\em \+\_\+desc} & description-\/set of shader properties. \\
\hline
{\em \+\_\+modifier\+I\+Ds} & array of modifier-\/\+I\+Ds that should be used for the generation. \\
\hline
\end{DoxyParams}
\hypertarget{a01167_ab2ad1a50753d47ad291dd8518ca3ff11}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}!Shader\+Prog\+Generator@{Shader\+Prog\+Generator}}
\index{Shader\+Prog\+Generator@{Shader\+Prog\+Generator}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}}
\subsubsection[{Shader\+Prog\+Generator}]{\setlength{\rightskip}{0pt plus 5cm}A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator\+::\+Shader\+Prog\+Generator (
\begin{DoxyParamCaption}
\item[{const {\bf Shader\+Gen\+Desc} $\ast$}]{\+\_\+desc, }
\item[{const std\+::vector$<$ unsigned int $>$ $\ast$}]{\+\_\+modifier\+I\+Ds}
\end{DoxyParamCaption}
)}}\label{a01167_ab2ad1a50753d47ad291dd8518ca3ff11}

\begin{DoxyParams}{Parameters}
{\em \+\_\+desc} & description-\/set of shader properties. \\
\hline
{\em \+\_\+modifier\+I\+Ds} & array of modifier-\/\+I\+Ds that should be used for the generation. \\
\hline
\end{DoxyParams}
\hypertarget{a01167_a77ef039da60b23c92ba9d9933efa30fe}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}!Shader\+Prog\+Generator@{Shader\+Prog\+Generator}}
\index{Shader\+Prog\+Generator@{Shader\+Prog\+Generator}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}}
\subsubsection[{Shader\+Prog\+Generator}]{\setlength{\rightskip}{0pt plus 5cm}A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator\+::\+Shader\+Prog\+Generator (
\begin{DoxyParamCaption}
\item[{const {\bf Shader\+Gen\+Desc} $\ast$}]{\+\_\+desc, }
\item[{const unsigned int $\ast$}]{\+\_\+modifier\+I\+Ds, }
\item[{unsigned int}]{\+\_\+num\+Modifiers}
\end{DoxyParamCaption}
)}}\label{a01167_a77ef039da60b23c92ba9d9933efa30fe}

\begin{DoxyParams}{Parameters}
{\em \+\_\+desc} & description-\/set of shader properties. \\
\hline
{\em \+\_\+modifier\+I\+Ds} & array of modifier-\/\+I\+Ds that should be used for the generation. \\
\hline
{\em \+\_\+num\+Modifiers} & number of modifiers in \+\_\+modifier\+I\+Ds \\
\hline
\end{DoxyParams}
\hypertarget{a01167_aa47b2d19b07fd2b5869c49314179b280}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}!Shader\+Prog\+Generator@{Shader\+Prog\+Generator}}
\index{Shader\+Prog\+Generator@{Shader\+Prog\+Generator}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}}
\subsubsection[{Shader\+Prog\+Generator}]{\setlength{\rightskip}{0pt plus 5cm}A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator\+::\+Shader\+Prog\+Generator (
\begin{DoxyParamCaption}
\item[{const {\bf Shader\+Gen\+Desc} $\ast$}]{\+\_\+desc, }
\item[{{\bf Shader\+Modifier} $\ast$const $\ast$}]{\+\_\+modifiers, }
\item[{unsigned int}]{\+\_\+num\+Modifiers}
\end{DoxyParamCaption}
)}}\label{a01167_aa47b2d19b07fd2b5869c49314179b280}

\begin{DoxyParams}{Parameters}
{\em \+\_\+desc} & description-\/set of shader properties. \\
\hline
{\em \+\_\+modifiers} & array of modifiers that should be used for the generation. \\
\hline
{\em \+\_\+num\+Modifiers} & number of modifiers in \+\_\+modifier\+I\+Ds \\
\hline
\end{DoxyParams}
\hypertarget{a01167_a8cb91075df9926dc568f8d87421a2d2a}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}!Shader\+Prog\+Generator@{Shader\+Prog\+Generator}}
\index{Shader\+Prog\+Generator@{Shader\+Prog\+Generator}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}}
\subsubsection[{Shader\+Prog\+Generator}]{\setlength{\rightskip}{0pt plus 5cm}A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator\+::\+Shader\+Prog\+Generator (
\begin{DoxyParamCaption}
\item[{const {\bf Shader\+Gen\+Desc} $\ast$}]{\+\_\+desc, }
\item[{const std\+::vector$<$ {\bf Shader\+Modifier} $\ast$ $>$ \&}]{\+\_\+modifiers}
\end{DoxyParamCaption}
)}}\label{a01167_a8cb91075df9926dc568f8d87421a2d2a}

\begin{DoxyParams}{Parameters}
{\em \+\_\+desc} & description-\/set of shader properties. \\
\hline
{\em \+\_\+modifiers} & array of modifiers that should be used for the generation. \\
\hline
\end{DoxyParams}
\hypertarget{a01167_ae2acbb0a56211d0ec213a16196599044}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}!Shader\+Prog\+Generator@{Shader\+Prog\+Generator}}
\index{Shader\+Prog\+Generator@{Shader\+Prog\+Generator}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}}
\subsubsection[{Shader\+Prog\+Generator}]{\setlength{\rightskip}{0pt plus 5cm}A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator\+::\+Shader\+Prog\+Generator (
\begin{DoxyParamCaption}
\item[{const {\bf Shader\+Gen\+Desc} $\ast$}]{\+\_\+desc, }
\item[{const std\+::vector$<$ {\bf Shader\+Modifier} $\ast$ $>$ $\ast$}]{\+\_\+modifiers}
\end{DoxyParamCaption}
)}}\label{a01167_ae2acbb0a56211d0ec213a16196599044}

\begin{DoxyParams}{Parameters}
{\em \+\_\+desc} & description-\/set of shader properties. \\
\hline
{\em \+\_\+modifiers} & array of modifiers that should be used for the generation. \\
\hline
\end{DoxyParams}
\hypertarget{a01167_a66d2289362fde960fd35475593822b0c}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}!Shader\+Prog\+Generator@{Shader\+Prog\+Generator}}
\index{Shader\+Prog\+Generator@{Shader\+Prog\+Generator}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}}
\subsubsection[{Shader\+Prog\+Generator}]{\setlength{\rightskip}{0pt plus 5cm}A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator\+::\+Shader\+Prog\+Generator (
\begin{DoxyParamCaption}
\item[{const {\bf Shader\+Gen\+Desc} $\ast$}]{\+\_\+desc}
\end{DoxyParamCaption}
)}}\label{a01167_a66d2289362fde960fd35475593822b0c}

\begin{DoxyParams}{Parameters}
{\em \+\_\+desc} & description-\/set of shader properties. \\
\hline
\end{DoxyParams}
\hypertarget{a01167_a8ff5266b5057a37ae524447bf97abae0}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}!Shader\+Prog\+Generator@{Shader\+Prog\+Generator}}
\index{Shader\+Prog\+Generator@{Shader\+Prog\+Generator}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}}
\subsubsection[{Shader\+Prog\+Generator}]{\setlength{\rightskip}{0pt plus 5cm}A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator\+::\+Shader\+Prog\+Generator (
\begin{DoxyParamCaption}
\item[{const {\bf Shader\+Gen\+Desc} $\ast$}]{\+\_\+desc, }
\item[{const std\+::vector$<$ unsigned int $>$ \&}]{\+\_\+modifier\+I\+Ds}
\end{DoxyParamCaption}
)}}\label{a01167_a8ff5266b5057a37ae524447bf97abae0}

\begin{DoxyParams}{Parameters}
{\em \+\_\+desc} & description-\/set of shader properties. \\
\hline
{\em \+\_\+modifier\+I\+Ds} & array of modifier-\/\+I\+Ds that should be used for the generation. \\
\hline
\end{DoxyParams}
\hypertarget{a01167_ab2ad1a50753d47ad291dd8518ca3ff11}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}!Shader\+Prog\+Generator@{Shader\+Prog\+Generator}}
\index{Shader\+Prog\+Generator@{Shader\+Prog\+Generator}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}}
\subsubsection[{Shader\+Prog\+Generator}]{\setlength{\rightskip}{0pt plus 5cm}A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator\+::\+Shader\+Prog\+Generator (
\begin{DoxyParamCaption}
\item[{const {\bf Shader\+Gen\+Desc} $\ast$}]{\+\_\+desc, }
\item[{const std\+::vector$<$ unsigned int $>$ $\ast$}]{\+\_\+modifier\+I\+Ds}
\end{DoxyParamCaption}
)}}\label{a01167_ab2ad1a50753d47ad291dd8518ca3ff11}

\begin{DoxyParams}{Parameters}
{\em \+\_\+desc} & description-\/set of shader properties. \\
\hline
{\em \+\_\+modifier\+I\+Ds} & array of modifier-\/\+I\+Ds that should be used for the generation. \\
\hline
\end{DoxyParams}
\hypertarget{a01167_a77ef039da60b23c92ba9d9933efa30fe}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}!Shader\+Prog\+Generator@{Shader\+Prog\+Generator}}
\index{Shader\+Prog\+Generator@{Shader\+Prog\+Generator}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}}
\subsubsection[{Shader\+Prog\+Generator}]{\setlength{\rightskip}{0pt plus 5cm}A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator\+::\+Shader\+Prog\+Generator (
\begin{DoxyParamCaption}
\item[{const {\bf Shader\+Gen\+Desc} $\ast$}]{\+\_\+desc, }
\item[{const unsigned int $\ast$}]{\+\_\+modifier\+I\+Ds, }
\item[{unsigned int}]{\+\_\+num\+Modifiers}
\end{DoxyParamCaption}
)}}\label{a01167_a77ef039da60b23c92ba9d9933efa30fe}

\begin{DoxyParams}{Parameters}
{\em \+\_\+desc} & description-\/set of shader properties. \\
\hline
{\em \+\_\+modifier\+I\+Ds} & array of modifier-\/\+I\+Ds that should be used for the generation. \\
\hline
{\em \+\_\+num\+Modifiers} & number of modifiers in \+\_\+modifier\+I\+Ds \\
\hline
\end{DoxyParams}
\hypertarget{a01167_aa47b2d19b07fd2b5869c49314179b280}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}!Shader\+Prog\+Generator@{Shader\+Prog\+Generator}}
\index{Shader\+Prog\+Generator@{Shader\+Prog\+Generator}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}}
\subsubsection[{Shader\+Prog\+Generator}]{\setlength{\rightskip}{0pt plus 5cm}A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator\+::\+Shader\+Prog\+Generator (
\begin{DoxyParamCaption}
\item[{const {\bf Shader\+Gen\+Desc} $\ast$}]{\+\_\+desc, }
\item[{{\bf Shader\+Modifier} $\ast$const $\ast$}]{\+\_\+modifiers, }
\item[{unsigned int}]{\+\_\+num\+Modifiers}
\end{DoxyParamCaption}
)}}\label{a01167_aa47b2d19b07fd2b5869c49314179b280}

\begin{DoxyParams}{Parameters}
{\em \+\_\+desc} & description-\/set of shader properties. \\
\hline
{\em \+\_\+modifiers} & array of modifiers that should be used for the generation. \\
\hline
{\em \+\_\+num\+Modifiers} & number of modifiers in \+\_\+modifier\+I\+Ds \\
\hline
\end{DoxyParams}
\hypertarget{a01167_a8cb91075df9926dc568f8d87421a2d2a}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}!Shader\+Prog\+Generator@{Shader\+Prog\+Generator}}
\index{Shader\+Prog\+Generator@{Shader\+Prog\+Generator}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}}
\subsubsection[{Shader\+Prog\+Generator}]{\setlength{\rightskip}{0pt plus 5cm}A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator\+::\+Shader\+Prog\+Generator (
\begin{DoxyParamCaption}
\item[{const {\bf Shader\+Gen\+Desc} $\ast$}]{\+\_\+desc, }
\item[{const std\+::vector$<$ {\bf Shader\+Modifier} $\ast$ $>$ \&}]{\+\_\+modifiers}
\end{DoxyParamCaption}
)}}\label{a01167_a8cb91075df9926dc568f8d87421a2d2a}

\begin{DoxyParams}{Parameters}
{\em \+\_\+desc} & description-\/set of shader properties. \\
\hline
{\em \+\_\+modifiers} & array of modifiers that should be used for the generation. \\
\hline
\end{DoxyParams}
\hypertarget{a01167_ae2acbb0a56211d0ec213a16196599044}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}!Shader\+Prog\+Generator@{Shader\+Prog\+Generator}}
\index{Shader\+Prog\+Generator@{Shader\+Prog\+Generator}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}}
\subsubsection[{Shader\+Prog\+Generator}]{\setlength{\rightskip}{0pt plus 5cm}A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator\+::\+Shader\+Prog\+Generator (
\begin{DoxyParamCaption}
\item[{const {\bf Shader\+Gen\+Desc} $\ast$}]{\+\_\+desc, }
\item[{const std\+::vector$<$ {\bf Shader\+Modifier} $\ast$ $>$ $\ast$}]{\+\_\+modifiers}
\end{DoxyParamCaption}
)}}\label{a01167_ae2acbb0a56211d0ec213a16196599044}

\begin{DoxyParams}{Parameters}
{\em \+\_\+desc} & description-\/set of shader properties. \\
\hline
{\em \+\_\+modifiers} & array of modifiers that should be used for the generation. \\
\hline
\end{DoxyParams}


\subsection{Member Function Documentation}
\hypertarget{a01167_a0e3dc696d6b40f57be2f2c9dded8be67}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}!add\+Lighting\+Functions@{add\+Lighting\+Functions}}
\index{add\+Lighting\+Functions@{add\+Lighting\+Functions}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}}
\subsubsection[{add\+Lighting\+Functions}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator\+::add\+Lighting\+Functions (
\begin{DoxyParamCaption}
\item[{Q\+String\+List $\ast$}]{\+\_\+code}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}}\label{a01167_a0e3dc696d6b40f57be2f2c9dded8be67}


Adds lighting definition functions. 

Lit\+Point\+Light() ... \hypertarget{a01167_a0e3dc696d6b40f57be2f2c9dded8be67}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}!add\+Lighting\+Functions@{add\+Lighting\+Functions}}
\index{add\+Lighting\+Functions@{add\+Lighting\+Functions}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}}
\subsubsection[{add\+Lighting\+Functions}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator\+::add\+Lighting\+Functions (
\begin{DoxyParamCaption}
\item[{Q\+String\+List $\ast$}]{\+\_\+code}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}}\label{a01167_a0e3dc696d6b40f57be2f2c9dded8be67}


Adds lighting definition functions. 

Lit\+Point\+Light() ... \hypertarget{a01167_a0e3dc696d6b40f57be2f2c9dded8be67}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}!add\+Lighting\+Functions@{add\+Lighting\+Functions}}
\index{add\+Lighting\+Functions@{add\+Lighting\+Functions}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}}
\subsubsection[{add\+Lighting\+Functions}]{\setlength{\rightskip}{0pt plus 5cm}void A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator\+::add\+Lighting\+Functions (
\begin{DoxyParamCaption}
\item[{Q\+String\+List $\ast$}]{\+\_\+code}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}}\label{a01167_a0e3dc696d6b40f57be2f2c9dded8be67}


Adds lighting definition functions. 

Lit\+Point\+Light() ... \hypertarget{a01167_a11d4d22f27cc711c03908088a838b66f}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}!check\+For\+Includes@{check\+For\+Includes}}
\index{check\+For\+Includes@{check\+For\+Includes}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}}
\subsubsection[{check\+For\+Includes}]{\setlength{\rightskip}{0pt plus 5cm}int A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator\+::check\+For\+Includes (
\begin{DoxyParamCaption}
\item[{Q\+String}]{\+\_\+str, }
\item[{{\bf Shader\+Generator} $\ast$}]{\+\_\+gen, }
\item[{Q\+String}]{\+\_\+include\+Path}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}}\label{a01167_a11d4d22f27cc711c03908088a838b66f}
checks if \+\_\+str is an include directive eventually imports the included file to the specified generator \hypertarget{a01167_a11d4d22f27cc711c03908088a838b66f}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}!check\+For\+Includes@{check\+For\+Includes}}
\index{check\+For\+Includes@{check\+For\+Includes}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}}
\subsubsection[{check\+For\+Includes}]{\setlength{\rightskip}{0pt plus 5cm}int A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator\+::check\+For\+Includes (
\begin{DoxyParamCaption}
\item[{Q\+String}]{\+\_\+str, }
\item[{{\bf Shader\+Generator} $\ast$}]{\+\_\+gen, }
\item[{Q\+String}]{\+\_\+include\+Path}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}}\label{a01167_a11d4d22f27cc711c03908088a838b66f}
checks if \+\_\+str is an include directive eventually imports the included file to the specified generator \hypertarget{a01167_a11d4d22f27cc711c03908088a838b66f}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}!check\+For\+Includes@{check\+For\+Includes}}
\index{check\+For\+Includes@{check\+For\+Includes}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}}
\subsubsection[{check\+For\+Includes}]{\setlength{\rightskip}{0pt plus 5cm}int A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator\+::check\+For\+Includes (
\begin{DoxyParamCaption}
\item[{Q\+String}]{\+\_\+str, }
\item[{{\bf Shader\+Generator} $\ast$}]{\+\_\+gen, }
\item[{Q\+String}]{\+\_\+include\+Path}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}}\label{a01167_a11d4d22f27cc711c03908088a838b66f}
checks if \+\_\+str is an include directive eventually imports the included file to the specified generator \hypertarget{a01167_a6352619dffeb651975d5b5e8ec188c31}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}!check\+For\+Includes@{check\+For\+Includes}}
\index{check\+For\+Includes@{check\+For\+Includes}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}}
\subsubsection[{check\+For\+Includes}]{\setlength{\rightskip}{0pt plus 5cm}int A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator\+::check\+For\+Includes (
\begin{DoxyParamCaption}
\item[{Q\+String}]{\+\_\+str, }
\item[{Q\+String\+List $\ast$}]{\+\_\+out\+Import, }
\item[{Q\+String}]{\+\_\+include\+Path}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}}\label{a01167_a6352619dffeb651975d5b5e8ec188c31}
checks if \+\_\+str is an include directive eventually imports the included file to the specified stringlist \hypertarget{a01167_a6352619dffeb651975d5b5e8ec188c31}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}!check\+For\+Includes@{check\+For\+Includes}}
\index{check\+For\+Includes@{check\+For\+Includes}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}}
\subsubsection[{check\+For\+Includes}]{\setlength{\rightskip}{0pt plus 5cm}int A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator\+::check\+For\+Includes (
\begin{DoxyParamCaption}
\item[{Q\+String}]{\+\_\+str, }
\item[{Q\+String\+List $\ast$}]{\+\_\+out\+Import, }
\item[{Q\+String}]{\+\_\+include\+Path}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}}\label{a01167_a6352619dffeb651975d5b5e8ec188c31}
checks if \+\_\+str is an include directive eventually imports the included file to the specified stringlist \hypertarget{a01167_a6352619dffeb651975d5b5e8ec188c31}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}!check\+For\+Includes@{check\+For\+Includes}}
\index{check\+For\+Includes@{check\+For\+Includes}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}}
\subsubsection[{check\+For\+Includes}]{\setlength{\rightskip}{0pt plus 5cm}int A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator\+::check\+For\+Includes (
\begin{DoxyParamCaption}
\item[{Q\+String}]{\+\_\+str, }
\item[{Q\+String\+List $\ast$}]{\+\_\+out\+Import, }
\item[{Q\+String}]{\+\_\+include\+Path}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}}\label{a01167_a6352619dffeb651975d5b5e8ec188c31}
checks if \+\_\+str is an include directive eventually imports the included file to the specified stringlist \hypertarget{a01167_aa335644f71022caaded883c5f525a639}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}!get\+Abs\+File\+Path@{get\+Abs\+File\+Path}}
\index{get\+Abs\+File\+Path@{get\+Abs\+File\+Path}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}}
\subsubsection[{get\+Abs\+File\+Path}]{\setlength{\rightskip}{0pt plus 5cm}static Q\+String A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator\+::get\+Abs\+File\+Path (
\begin{DoxyParamCaption}
\item[{Q\+String}]{\+\_\+file\+Name}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}}\label{a01167_aa335644f71022caaded883c5f525a639}


Convert a filename to an absolute filename. 


\begin{DoxyParams}{Parameters}
{\em \+\_\+file\+Name} & relative (from shader dir) or absolute file name \\
\hline
\end{DoxyParams}
\hypertarget{a01167_aa335644f71022caaded883c5f525a639}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}!get\+Abs\+File\+Path@{get\+Abs\+File\+Path}}
\index{get\+Abs\+File\+Path@{get\+Abs\+File\+Path}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}}
\subsubsection[{get\+Abs\+File\+Path}]{\setlength{\rightskip}{0pt plus 5cm}static Q\+String A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator\+::get\+Abs\+File\+Path (
\begin{DoxyParamCaption}
\item[{Q\+String}]{\+\_\+file\+Name}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}}\label{a01167_aa335644f71022caaded883c5f525a639}


Convert a filename to an absolute filename. 


\begin{DoxyParams}{Parameters}
{\em \+\_\+file\+Name} & relative (from shader dir) or absolute file name \\
\hline
\end{DoxyParams}
\hypertarget{a01167_aa335644f71022caaded883c5f525a639}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}!get\+Abs\+File\+Path@{get\+Abs\+File\+Path}}
\index{get\+Abs\+File\+Path@{get\+Abs\+File\+Path}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}}
\subsubsection[{get\+Abs\+File\+Path}]{\setlength{\rightskip}{0pt plus 5cm}static Q\+String A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator\+::get\+Abs\+File\+Path (
\begin{DoxyParamCaption}
\item[{Q\+String}]{\+\_\+file\+Name}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}}\label{a01167_aa335644f71022caaded883c5f525a639}


Convert a filename to an absolute filename. 


\begin{DoxyParams}{Parameters}
{\em \+\_\+file\+Name} & relative (from shader dir) or absolute file name \\
\hline
\end{DoxyParams}
\hypertarget{a01167_a49b39a53a0dca21da77721d3cac781d2}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}!get\+Shader\+Dir@{get\+Shader\+Dir}}
\index{get\+Shader\+Dir@{get\+Shader\+Dir}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}}
\subsubsection[{get\+Shader\+Dir}]{\setlength{\rightskip}{0pt plus 5cm}static Q\+String A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator\+::get\+Shader\+Dir (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}}\label{a01167_a49b39a53a0dca21da77721d3cac781d2}
Return shader directory path as previosly specified by user \hypertarget{a01167_a49b39a53a0dca21da77721d3cac781d2}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}!get\+Shader\+Dir@{get\+Shader\+Dir}}
\index{get\+Shader\+Dir@{get\+Shader\+Dir}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}}
\subsubsection[{get\+Shader\+Dir}]{\setlength{\rightskip}{0pt plus 5cm}static Q\+String A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator\+::get\+Shader\+Dir (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}}\label{a01167_a49b39a53a0dca21da77721d3cac781d2}
Return shader directory path as previosly specified by user \hypertarget{a01167_a49b39a53a0dca21da77721d3cac781d2}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}!get\+Shader\+Dir@{get\+Shader\+Dir}}
\index{get\+Shader\+Dir@{get\+Shader\+Dir}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}}
\subsubsection[{get\+Shader\+Dir}]{\setlength{\rightskip}{0pt plus 5cm}static Q\+String A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator\+::get\+Shader\+Dir (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}}\label{a01167_a49b39a53a0dca21da77721d3cac781d2}
Return shader directory path as previosly specified by user \hypertarget{a01167_ab8fa5285aaf564bbd8d300a24010a95e}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}!load\+String\+List\+From\+File@{load\+String\+List\+From\+File}}
\index{load\+String\+List\+From\+File@{load\+String\+List\+From\+File}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}}
\subsubsection[{load\+String\+List\+From\+File}]{\setlength{\rightskip}{0pt plus 5cm}static bool A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator\+::load\+String\+List\+From\+File (
\begin{DoxyParamCaption}
\item[{Q\+String}]{\+\_\+file\+Name, }
\item[{Q\+String\+List $\ast$}]{\+\_\+out}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}}\label{a01167_ab8fa5285aaf564bbd8d300a24010a95e}


Load a text file as string list. 


\begin{DoxyParams}{Parameters}
{\em \+\_\+file\+Name} & relative (from shader dir) or absolute file name \\
\hline
{\em \+\_\+out} & lines from text file \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true on success, false otherwise 
\end{DoxyReturn}
\hypertarget{a01167_ab8fa5285aaf564bbd8d300a24010a95e}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}!load\+String\+List\+From\+File@{load\+String\+List\+From\+File}}
\index{load\+String\+List\+From\+File@{load\+String\+List\+From\+File}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}}
\subsubsection[{load\+String\+List\+From\+File}]{\setlength{\rightskip}{0pt plus 5cm}static bool A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator\+::load\+String\+List\+From\+File (
\begin{DoxyParamCaption}
\item[{Q\+String}]{\+\_\+file\+Name, }
\item[{Q\+String\+List $\ast$}]{\+\_\+out}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}}\label{a01167_ab8fa5285aaf564bbd8d300a24010a95e}


Load a text file as string list. 


\begin{DoxyParams}{Parameters}
{\em \+\_\+file\+Name} & relative (from shader dir) or absolute file name \\
\hline
{\em \+\_\+out} & lines from text file \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true on success, false otherwise 
\end{DoxyReturn}
\hypertarget{a01167_ab8fa5285aaf564bbd8d300a24010a95e}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}!load\+String\+List\+From\+File@{load\+String\+List\+From\+File}}
\index{load\+String\+List\+From\+File@{load\+String\+List\+From\+File}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}}
\subsubsection[{load\+String\+List\+From\+File}]{\setlength{\rightskip}{0pt plus 5cm}static bool A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator\+::load\+String\+List\+From\+File (
\begin{DoxyParamCaption}
\item[{Q\+String}]{\+\_\+file\+Name, }
\item[{Q\+String\+List $\ast$}]{\+\_\+out}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}}\label{a01167_ab8fa5285aaf564bbd8d300a24010a95e}


Load a text file as string list. 


\begin{DoxyParams}{Parameters}
{\em \+\_\+file\+Name} & relative (from shader dir) or absolute file name \\
\hline
{\em \+\_\+out} & lines from text file \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true on success, false otherwise 
\end{DoxyReturn}
\hypertarget{a01167_a0fef3ce1c55d8118020b6ab4930278b4}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}!register\+Modifier@{register\+Modifier}}
\index{register\+Modifier@{register\+Modifier}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}}
\subsubsection[{register\+Modifier}]{\setlength{\rightskip}{0pt plus 5cm}static unsigned int A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator\+::register\+Modifier (
\begin{DoxyParamCaption}
\item[{{\bf Shader\+Modifier} $\ast$}]{\+\_\+modifier}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}}\label{a01167_a0fef3ce1c55d8118020b6ab4930278b4}


Shader modifiers have to be registered before they can be used. They also must remain allocated for the rest of the applications runtime. Use a combination of modifier-\/\+I\+Ds in the constructor of Shader\+Prog\+Gen to active them. 


\begin{DoxyParams}{Parameters}
{\em \+\_\+modifier} & address of a modifier implementation \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
modifier I\+D 
\end{DoxyReturn}
\hypertarget{a01167_a0fef3ce1c55d8118020b6ab4930278b4}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}!register\+Modifier@{register\+Modifier}}
\index{register\+Modifier@{register\+Modifier}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}}
\subsubsection[{register\+Modifier}]{\setlength{\rightskip}{0pt plus 5cm}static unsigned int A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator\+::register\+Modifier (
\begin{DoxyParamCaption}
\item[{{\bf Shader\+Modifier} $\ast$}]{\+\_\+modifier}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}}\label{a01167_a0fef3ce1c55d8118020b6ab4930278b4}


Shader modifiers have to be registered before they can be used. They also must remain allocated for the rest of the applications runtime. Use a combination of modifier-\/\+I\+Ds in the constructor of Shader\+Prog\+Gen to active them. 


\begin{DoxyParams}{Parameters}
{\em \+\_\+modifier} & address of a modifier implementation \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
modifier I\+D 
\end{DoxyReturn}
\hypertarget{a01167_a0fef3ce1c55d8118020b6ab4930278b4}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}!register\+Modifier@{register\+Modifier}}
\index{register\+Modifier@{register\+Modifier}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}}
\subsubsection[{register\+Modifier}]{\setlength{\rightskip}{0pt plus 5cm}static unsigned int A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator\+::register\+Modifier (
\begin{DoxyParamCaption}
\item[{{\bf Shader\+Modifier} $\ast$}]{\+\_\+modifier}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}}\label{a01167_a0fef3ce1c55d8118020b6ab4930278b4}


Shader modifiers have to be registered before they can be used. They also must remain allocated for the rest of the applications runtime. Use a combination of modifier-\/\+I\+Ds in the constructor of Shader\+Prog\+Gen to active them. 


\begin{DoxyParams}{Parameters}
{\em \+\_\+modifier} & address of a modifier implementation \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
modifier I\+D 
\end{DoxyReturn}
\hypertarget{a01167_ad298e66e037f3e6ec41957615ef5d2e8}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}!set\+Shader\+Dir@{set\+Shader\+Dir}}
\index{set\+Shader\+Dir@{set\+Shader\+Dir}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}}
\subsubsection[{set\+Shader\+Dir}]{\setlength{\rightskip}{0pt plus 5cm}static void A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator\+::set\+Shader\+Dir (
\begin{DoxyParamCaption}
\item[{Q\+String}]{\+\_\+dir}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}}\label{a01167_ad298e66e037f3e6ec41957615ef5d2e8}
The shader directory has to be defined first before making use of the generator! For example\+: set\+Shader\+Dir(\+Open\+Flipper\+::\+Options\+::shader\+Dir\+Str()) \hypertarget{a01167_ad298e66e037f3e6ec41957615ef5d2e8}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}!set\+Shader\+Dir@{set\+Shader\+Dir}}
\index{set\+Shader\+Dir@{set\+Shader\+Dir}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}}
\subsubsection[{set\+Shader\+Dir}]{\setlength{\rightskip}{0pt plus 5cm}static void A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator\+::set\+Shader\+Dir (
\begin{DoxyParamCaption}
\item[{Q\+String}]{\+\_\+dir}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}}\label{a01167_ad298e66e037f3e6ec41957615ef5d2e8}
The shader directory has to be defined first before making use of the generator! For example\+: set\+Shader\+Dir(\+Open\+Flipper\+::\+Options\+::shader\+Dir\+Str()) \hypertarget{a01167_ad298e66e037f3e6ec41957615ef5d2e8}{\index{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}!set\+Shader\+Dir@{set\+Shader\+Dir}}
\index{set\+Shader\+Dir@{set\+Shader\+Dir}!A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator@{A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator}}
\subsubsection[{set\+Shader\+Dir}]{\setlength{\rightskip}{0pt plus 5cm}static void A\+C\+G\+::\+Scene\+Graph\+::\+A\+C\+G\+::\+Shader\+Prog\+Generator\+::set\+Shader\+Dir (
\begin{DoxyParamCaption}
\item[{Q\+String}]{\+\_\+dir}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}}\label{a01167_ad298e66e037f3e6ec41957615ef5d2e8}
The shader directory has to be defined first before making use of the generator! For example\+: set\+Shader\+Dir(\+Open\+Flipper\+::\+Options\+::shader\+Dir\+Str()) 

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