Skip to content
Snippets Groups Projects
Commit 181316fc authored by Tansel Halic's avatar Tansel Halic Committed by Alexis Girault
Browse files

New CustomGLPolyDataMapper

Needed for custom shader attribute declarations such as tangents.
parent 2cefb00d
No related branches found
No related tags found
No related merge requests found
......@@ -26,6 +26,7 @@
#include <sstream>
#include <iostream>
//---------------------------------------------------------------------------
RenderDetail::RenderDetail()
{
......
......@@ -40,8 +40,6 @@ set(DATA
${${APP}_DATA}/nidus1764.mass
${${APP}_DATA}/nidusS7415.vtk
${${APP}_DATA}/nidusV1764.vtk
${${APP}_DATA}/wet_frag.glsl
${${APP}_DATA}/wet_vert.glsl
)
add_custom_command(
......
......@@ -90,8 +90,8 @@ int main(int ac, char **av)
meshRenderDetail->setShininess(20.0);
// Set shader porograms
meshRenderDetail->addShaderProgram(vtkShader::Vertex,"wet_vert.glsl");
meshRenderDetail->addShaderProgram(vtkShader::Fragment,"wet_frag.glsl");
meshRenderDetail->addShaderProgram(vtkShader::Vertex,"shaders/wet_vert.glsl");
meshRenderDetail->addShaderProgram(vtkShader::Fragment,"shaders/wet_frag.glsl");
meshRenderDetail->setTextureFilename("textures/cube.jpg");
// auto renderingMesh = femObject->getVolumetricMesh()->getRenderingMesh();
......@@ -199,7 +199,7 @@ int main(int ac, char **av)
// Run the SDK
//-------------------------------------------------------
sdk->run();
//cleanup
sdk->releaseScene(scene);
......
......@@ -51,6 +51,8 @@
#include <vtkOpenGLPolyDataMapper.h>
#include <vtkProperty.h>
vtkStandardNewMacro(CustomGLPolyDataMapper)
class MeshRenderDelegate : public VTKRenderDelegate
{
public:
......@@ -176,6 +178,16 @@ void MeshRenderDelegate::initDraw()
}
unstructuredMesh->GetPointData()->SetTCoords(textureCoordinates.GetPointer());
}
//vtkNew<vtkDoubleArray> tangentArray;
//tangentArray->SetNumberOfComponents(3);
//tangentArray->SetName("Tangents");
//vtkNew<vtkPoints> tangents;
//tangents->SetNumberOfPoints(mesh->getVertices().size());
dataSet = unstructuredMesh.GetPointer();
if (renderDetail && renderDetail->renderNormals())
......@@ -187,9 +199,9 @@ void MeshRenderDelegate::initDraw()
normals->SetInputConnection(geometry->GetOutputPort());
normals->AutoOrientNormalsOn();
mapper = vtkOpenGLPolyDataMapper::New();
mapper = CustomGLPolyDataMapper::New();
mapper->SetInputConnection(normals->GetOutputPort());
if(renderDetail->hasShaders())
{
auto glMapper = vtkOpenGLPolyDataMapper::SafeDownCast(mapper);
......@@ -198,7 +210,10 @@ void MeshRenderDelegate::initDraw()
auto shadersProgramReplacements = renderDetail->getShaderProgramReplacements();
this->setShadersProgramReplacements(glMapper,shadersProgramReplacements);
//this->setShadersProgramReplacements(glMapper,shadersProgramReplacements);
}
}
else
......@@ -234,6 +249,14 @@ void MeshRenderDelegate::modified()
dataSet->Modified();
}
void CustomGLPolyDataMapper::SetMapperShaderParameters(vtkOpenGLHelper &cellBO, vtkRenderer *ren, vtkActor *act)
{
vtkOpenGLPolyDataMapper::SetMapperShaderParameters(cellBO, ren, act);
}
RegisterFactoryClass(RenderDelegate,
MeshRenderDelegate,
RenderDelegate::RendererType::VTK)
......@@ -5,6 +5,19 @@
#include "Core/RenderDelegate.h"
class vtkActor;
class CustomGLPolyDataMapper :public vtkOpenGLPolyDataMapper{
public:
static CustomGLPolyDataMapper* New();
vtkTypeMacro(CustomGLPolyDataMapper, vtkOpenGLPolyDataMapper)
virtual void initDraw() {}
virtual void modified() {}
virtual void draw() const { }
virtual void SetMapperShaderParameters(vtkOpenGLHelper &cellBO, vtkRenderer *ren, vtkActor *act) override;
};
class VTKRenderDelegate : public RenderDelegate
{
......@@ -34,6 +47,7 @@ void VTKRenderDelegate::setShadersProgram(vtkOpenGLPolyDataMapper *mapper,
case vtkShader::Fragment:
{
mapper->SetFragmentShaderCode(program.second.c_str());
break;
}
case vtkShader::Vertex:
......@@ -67,6 +81,7 @@ void VTKRenderDelegate::setShadersProgramReplacements(vtkOpenGLPolyDataMapper *m
true,
program[1],
false);
}
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment