44#include "NormalRenderer.hh"
48#include <ACG/GL/ShaderCache.hh>
61 _shader->
addDefine(
"SG_REQUEST_NORMALOS");
66 _code->push_back(
"#ifdef SG_INPUT_NORMALOS");
67 _code->push_back(
"outFragment = vec4(normalize(SG_INPUT_NORMALOS) * 0.5 + vec3(0.5, 0.5, 0.5),1.0);");
68 _code->push_back(
"#endif ");
79NormalRenderer::NormalRenderer()
85NormalRenderer::~NormalRenderer()
90void NormalRenderer::initializePlugin()
96 std::vector<ACG::ShaderModifier*> modifiers;
97 modifiers.push_back(&NormalFragmentModifier::instance);
119QString NormalRenderer::checkOpenGL()
122 return QString(
"Insufficient OpenGL Version! OpenGL 3.2 or higher required");
129 missing +=
"GL_ARB_vertex_buffer_object extension missing\n";
134 missing +=
"GL_ARB_vertex_program extension missing\n";
std::vector< ACG::RenderObject * > sortedObjects_
sorted list of renderobjects without overlay objects (sorted in rendering order)
int getNumRenderObjects() const
Get the number of collected render objects (not including overlay objects or gl4.2 line objects)
virtual void renderObject(ACG::RenderObject *_obj, GLSL::Program *_prog=0, bool _constRenderStates=false, const std::vector< unsigned int > *_shaderModifiers=0)
Render one renderobject.
virtual void finishRenderingPipeline(bool _drawOverlay=true)
Draw overlay objects and reset OpenGL state.
virtual void prepareRenderingPipeline(ACG::GLState *_glState, ACG::SceneGraph::DrawModes::DrawMode _drawMode, ACG::SceneGraph::BaseNode *_scenegraphRoot)
Prepares renderer and OpenGL for any draw-related calls including.
virtual QString dumpCurrentRenderObjectsToString(ACG::RenderObject **_list=0, bool _outputShaders=false, std::vector< ACG::ShaderModifier * > *_modifiers=0)
Outputs the current render objects to the string.
static ShaderCache * getInstance()
Return instance of the ShaderCache singleton.
GLSL::Program * getProgram(const ShaderGenDesc *_desc, const std::vector< unsigned int > &_mods)
Query a dynamically generated program from cache.
void addDefine(const QString &_define)
Add one define.
static void setShaderDir(QString _dir)
static unsigned int registerModifier(ShaderModifier *_modifier)
Shader modifiers have to be registered before they can be used. They also must remain allocated for t...
void modifyFragmentEndCode(QStringList *_code)
Append code the the fragment shader.
void modifyVertexIO(ACG::ShaderGenerator *_shader)
Add your own inputs/outputs to the vertex shader.
QString renderObjectsInfo(bool _outputShaderInfo)
Return a qstring of the current render objects.
void drawMode(ACG::SceneGraph::DrawModes::DrawMode _mode)
set draw mode (No test if this mode is available!)
bool checkExtensionSupported(const std::string &_extension)
bool openGLVersion(const int _major, const int _minor, bool _verbose)
ACG::SceneGraph::BaseNode * getSceneGraphRootNode()
get scenegraph root node