\hypertarget{classSSAOPlugin}{}\section{S\+S\+A\+O\+Plugin Class Reference}
\label{classSSAOPlugin}\index{S\+S\+A\+O\+Plugin@{S\+S\+A\+O\+Plugin}}
Inheritance diagram for S\+S\+A\+O\+Plugin\+:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=2.000000cm]{classSSAOPlugin}
\end{center}
\end{figure}
\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{structSSAOPlugin_1_1ViewerResources}{Viewer\+Resources}
\end{DoxyCompactItemize}
\subsection*{Public Slots}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classSSAOPlugin_ac7ec27cbc1fc0155e50577a5128f4e7f}\label{classSSAOPlugin_ac7ec27cbc1fc0155e50577a5128f4e7f}} 
Q\+String {\bfseries version} ()
\end{DoxyCompactItemize}
\subsection*{Signals}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classSSAOPlugin_abf53582b50d338c8edd4fb91bbb5ed6d}\label{classSSAOPlugin_abf53582b50d338c8edd4fb91bbb5ed6d}} 
void {\bfseries log} (\hyperlink{LoggingInterface_8hh_a595b2880f3ae74561ba390e3fd8c0e7c}{Logtype} \+\_\+type, Q\+String \+\_\+message)
\item 
\mbox{\Hypertarget{classSSAOPlugin_a29dfed96e34de5746cd46676510133a0}\label{classSSAOPlugin_a29dfed96e34de5746cd46676510133a0}} 
void {\bfseries log} (Q\+String \+\_\+message)
\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
Q\+String \hyperlink{classSSAOPlugin_aa8252ad9a46aa932e59f598b12cc3d28}{name} ()
\begin{DoxyCompactList}\small\item\em Return a name for the plugin. \end{DoxyCompactList}\item 
Q\+String \hyperlink{classSSAOPlugin_a463499a4f9e1ff27ff23dd32df9245ce}{description} ()
\begin{DoxyCompactList}\small\item\em Return a description of what the plugin is doing. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Private Types}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classSSAOPlugin_ae20c3fd34efbdd46c00db4759076c69c}\label{classSSAOPlugin_ae20c3fd34efbdd46c00db4759076c69c}} 
enum \{ \newline
{\bfseries P\+R\+O\+G\+\_\+\+I\+N\+IT} = 0, 
{\bfseries P\+R\+O\+G\+\_\+\+D\+O\+W\+N\+S\+A\+M\+P\+L\+I\+NG}, 
{\bfseries P\+R\+O\+G\+\_\+\+B\+L\+UR}, 
{\bfseries P\+R\+O\+G\+\_\+\+S\+S\+AO}, 
\newline
{\bfseries P\+R\+O\+G\+\_\+\+F\+I\+N\+AL}, 
{\bfseries P\+R\+O\+G\+\_\+\+F\+I\+N\+A\+L\+\_\+\+M\+S\+AA}
 \}
\end{DoxyCompactItemize}
\subsection*{Private Slots}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classSSAOPlugin_af2ff4b3f8a5bd69995857dc1363d1af9}\label{classSSAOPlugin_af2ff4b3f8a5bd69995857dc1363d1af9}} 
void {\bfseries initialize\+Plugin} ()
\item 
\mbox{\Hypertarget{classSSAOPlugin_a3b2fe24861198a8a4051b6bac19ade4f}\label{classSSAOPlugin_a3b2fe24861198a8a4051b6bac19ade4f}} 
void {\bfseries exit} ()
\item 
\mbox{\Hypertarget{classSSAOPlugin_a2928286e75ead53c1ce57b99f49718fc}\label{classSSAOPlugin_a2928286e75ead53c1ce57b99f49718fc}} 
void {\bfseries render} (\hyperlink{classACG_1_1GLState}{A\+C\+G\+::\+G\+L\+State} $\ast$\+\_\+gl\+State, \hyperlink{classViewer_1_1ViewerProperties}{Viewer\+::\+Viewer\+Properties} \&\+\_\+properties)
\item 
\mbox{\Hypertarget{classSSAOPlugin_ada92d01981bd52f40bbddab4700fb186}\label{classSSAOPlugin_ada92d01981bd52f40bbddab4700fb186}} 
Q\+String {\bfseries renderer\+Name} ()
\item 
\mbox{\Hypertarget{classSSAOPlugin_a812d38c3ffe3bc9d2899576761eae174}\label{classSSAOPlugin_a812d38c3ffe3bc9d2899576761eae174}} 
void {\bfseries supported\+Draw\+Modes} (\hyperlink{classACG_1_1SceneGraph_1_1DrawModes_1_1DrawMode}{A\+C\+G\+::\+Scene\+Graph\+::\+Draw\+Modes\+::\+Draw\+Mode} \&\+\_\+mode)
\item 
\mbox{\Hypertarget{classSSAOPlugin_ac7ebd82c0edf878476859ae6e9003ee2}\label{classSSAOPlugin_ac7ebd82c0edf878476859ae6e9003ee2}} 
Q\+String {\bfseries check\+Open\+GL} ()
\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classSSAOPlugin_a7711dd3b6f852c34a979d113f2ab24a1}\label{classSSAOPlugin_a7711dd3b6f852c34a979d113f2ab24a1}} 
void \hyperlink{classSSAOPlugin_a7711dd3b6f852c34a979d113f2ab24a1}{destroy\+Resources} ()
\begin{DoxyCompactList}\small\item\em free all gl resources \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classSSAOPlugin_a506b435a48594f99fcdcd0da8fb6a003}\label{classSSAOPlugin_a506b435a48594f99fcdcd0da8fb6a003}} 
void \hyperlink{classSSAOPlugin_a506b435a48594f99fcdcd0da8fb6a003}{destroy\+Resources} (int \+\_\+viewer\+Id)
\begin{DoxyCompactList}\small\item\em free viewer specific gl resources \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classSSAOPlugin_a83d72e918d94a2b580374ddb3a6b04bf}\label{classSSAOPlugin_a83d72e918d94a2b580374ddb3a6b04bf}} 
void \hyperlink{classSSAOPlugin_a83d72e918d94a2b580374ddb3a6b04bf}{reload\+Resources} (int \+\_\+viewer\+Id, unsigned int \+\_\+scene\+Tex\+Width, unsigned int \+\_\+scene\+Tex\+Height)
\begin{DoxyCompactList}\small\item\em reload gl resources \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classSSAOPlugin_aeadf6b30bfda4daee4bcb2fffbdfa1de}\label{classSSAOPlugin_aeadf6b30bfda4daee4bcb2fffbdfa1de}} 
void \hyperlink{classSSAOPlugin_aeadf6b30bfda4daee4bcb2fffbdfa1de}{draw\+Quad\+Proj} (float \+\_\+x0=-\/1.\+0f, float \+\_\+y0=1.\+0f, float \+\_\+w=2.\+0f, float \+\_\+h=2.\+0f)
\begin{DoxyCompactList}\small\item\em draw a quad in projection space (only positions) \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classSSAOPlugin_af59d38846c7f34b829f033c34aa1c910}\label{classSSAOPlugin_af59d38846c7f34b829f033c34aa1c910}} 
void \hyperlink{classSSAOPlugin_af59d38846c7f34b829f033c34aa1c910}{traverse\+Light\+Nodes} (\hyperlink{BaseObjectData_8hh_a5bfac87fd7e6d7cd056e34dbb133de0d}{Base\+Node} $\ast$\+\_\+node)
\begin{DoxyCompactList}\small\item\em find all light nodes in the scene \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classSSAOPlugin_a41737086852ccdb229e93f5dbd227414}\label{classSSAOPlugin_a41737086852ccdb229e93f5dbd227414}} 
void \hyperlink{classSSAOPlugin_a41737086852ccdb229e93f5dbd227414}{generate\+Peeling\+Shaders} (G\+L\+S\+L\+::\+String\+List $\ast$\+\_\+str\+Vertex\+Shader\+Out, G\+L\+S\+L\+::\+String\+List $\ast$\+\_\+str\+Fragment\+Shader\+Out, bool \+\_\+textured)
\begin{DoxyCompactList}\small\item\em peel shader generator based on lights and texture mode \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classSSAOPlugin_a56b2ae35d85d3a88f317292b1cb3536b}\label{classSSAOPlugin_a56b2ae35d85d3a88f317292b1cb3536b}} 
void \hyperlink{classSSAOPlugin_a56b2ae35d85d3a88f317292b1cb3536b}{draw\+Scene\+Pass} (\hyperlink{classACG_1_1GLState}{A\+C\+G\+::\+G\+L\+State} $\ast$\+\_\+gl\+State, \hyperlink{classViewer_1_1ViewerProperties}{Viewer\+::\+Viewer\+Properties} \&\+\_\+properties, \hyperlink{BaseObjectData_8hh_a5bfac87fd7e6d7cd056e34dbb133de0d}{Base\+Node} $\ast$\+\_\+scene\+Graph\+Root)
\begin{DoxyCompactList}\small\item\em draw the current scene \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classSSAOPlugin_ad05535a4a610324525ac79e87b1871a1}\label{classSSAOPlugin_ad05535a4a610324525ac79e87b1871a1}} 
void {\bfseries gaussian\+Blur\+Pass} (const \hyperlink{structSSAOPlugin_1_1ViewerResources}{Viewer\+Resources} $\ast$\+\_\+p\+Viewer, const float $\ast$\+\_\+texel\+Size, G\+Lenum \+\_\+target\+Attachement, G\+Luint \+\_\+src\+Texture)
\item 
\mbox{\Hypertarget{classSSAOPlugin_a9f2ffd5f46d4d62f1412ea01235950eb}\label{classSSAOPlugin_a9f2ffd5f46d4d62f1412ea01235950eb}} 
void \hyperlink{classSSAOPlugin_a9f2ffd5f46d4d62f1412ea01235950eb}{generate\+Sampling\+Kernel} ()
\begin{DoxyCompactList}\small\item\em computes a hemisphere sampling kernel in \mbox{[}0,1\mbox{]} range \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classSSAOPlugin_acf0da8cf525022d130c76e8da0693271}\label{classSSAOPlugin_acf0da8cf525022d130c76e8da0693271}} 
std\+::map$<$ int, \hyperlink{structSSAOPlugin_1_1ViewerResources}{Viewer\+Resources} $>$ {\bfseries viewer\+Res\+\_\+}
\item 
\mbox{\Hypertarget{classSSAOPlugin_a8ce076f565d9041b1090688d31ae0593}\label{classSSAOPlugin_a8ce076f565d9041b1090688d31ae0593}} 
\hyperlink{classGLSL_1_1Shader}{G\+L\+S\+L\+::\+Shader} $\ast$ \hyperlink{classSSAOPlugin_a8ce076f565d9041b1090688d31ae0593}{shaders\+\_\+} \mbox{[}10\mbox{]}
\begin{DoxyCompactList}\small\item\em shader resources \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classSSAOPlugin_aead6c9b39e345975a042e21075b733a0}\label{classSSAOPlugin_aead6c9b39e345975a042e21075b733a0}} 
\hyperlink{classGLSL_1_1Program}{G\+L\+S\+L\+::\+Program} $\ast$ \hyperlink{classSSAOPlugin_aead6c9b39e345975a042e21075b733a0}{programs\+\_\+} \mbox{[}6\mbox{]}
\begin{DoxyCompactList}\small\item\em shader programs \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classSSAOPlugin_a14e1a7074f73be1a5a3d9f0b8a796d04}\label{classSSAOPlugin_a14e1a7074f73be1a5a3d9f0b8a796d04}} 
G\+Luint \hyperlink{classSSAOPlugin_a14e1a7074f73be1a5a3d9f0b8a796d04}{random\+Vec\+Tex\+\_\+}
\begin{DoxyCompactList}\small\item\em random vector table for sample offset rotation \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classSSAOPlugin_a89a8ccebe25b06b9ed479ad750a3808f}\label{classSSAOPlugin_a89a8ccebe25b06b9ed479ad750a3808f}} 
\hyperlink{namespaceACG_a86c28120e8596ee7d03e58b7300f59bc}{A\+C\+G\+::\+Vec3f} \hyperlink{classSSAOPlugin_a89a8ccebe25b06b9ed479ad750a3808f}{sampling\+Kernel\+\_\+} \mbox{[}128\mbox{]}
\begin{DoxyCompactList}\small\item\em ssao sampling kernel \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Static Private Attributes}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classSSAOPlugin_a10eb5cfa53e06d01e698297bc81a3d15}\label{classSSAOPlugin_a10eb5cfa53e06d01e698297bc81a3d15}} 
static const unsigned int \hyperlink{classSSAOPlugin_a10eb5cfa53e06d01e698297bc81a3d15}{num\+Samples\+\_\+} = 32
\begin{DoxyCompactList}\small\item\em number of samples \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}


Definition at line 54 of file S\+S\+A\+O.\+hh.



\subsection{Member Function Documentation}
\mbox{\Hypertarget{classSSAOPlugin_a463499a4f9e1ff27ff23dd32df9245ce}\label{classSSAOPlugin_a463499a4f9e1ff27ff23dd32df9245ce}} 
\index{S\+S\+A\+O\+Plugin@{S\+S\+A\+O\+Plugin}!description@{description}}
\index{description@{description}!S\+S\+A\+O\+Plugin@{S\+S\+A\+O\+Plugin}}
\subsubsection{\texorpdfstring{description()}{description()}}
{\footnotesize\ttfamily Q\+String S\+S\+A\+O\+Plugin\+::description (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}



Return a description of what the plugin is doing. 

This function has to return a basic description of the plugin 

Implements \hyperlink{classBaseInterface_a43f0d3612695b53c848c14f48fea9a7a}{Base\+Interface}.



Definition at line 76 of file S\+S\+A\+O.\+hh.

\mbox{\Hypertarget{classSSAOPlugin_aa8252ad9a46aa932e59f598b12cc3d28}\label{classSSAOPlugin_aa8252ad9a46aa932e59f598b12cc3d28}} 
\index{S\+S\+A\+O\+Plugin@{S\+S\+A\+O\+Plugin}!name@{name}}
\index{name@{name}!S\+S\+A\+O\+Plugin@{S\+S\+A\+O\+Plugin}}
\subsubsection{\texorpdfstring{name()}{name()}}
{\footnotesize\ttfamily Q\+String S\+S\+A\+O\+Plugin\+::name (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}



Return a name for the plugin. 

This Function has to return the name of the plugin. 

Implements \hyperlink{classBaseInterface_a2b351aa6ef0eb368bce735e243235958}{Base\+Interface}.



Definition at line 75 of file S\+S\+A\+O.\+hh.



The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
\item 
Plugin\+Collection-\/\+Renderers/\+Plugin-\/\+Render-\/\+S\+S\+A\+O/S\+S\+A\+O.\+hh\item 
Plugin\+Collection-\/\+Renderers/\+Plugin-\/\+Render-\/\+S\+S\+A\+O/S\+S\+A\+O.\+cc\end{DoxyCompactItemize}
