Skip to content

Commit 8b2e97f

Browse files
authored
Final shader improvements to add time #2932
Added time elapsed from the app start as a uniform property for final shader application.
1 parent 98fd45d commit 8b2e97f

3 files changed

Lines changed: 16 additions & 0 deletions

File tree

application/testing/tests.features.cmake

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -449,6 +449,7 @@ f3d_test(NAME TestFinalShaderNegative DATA cow.vtp ARGS --final-shader "vec4 pix
449449
f3d_test(NAME TestFinalShaderNegativeFileName DATA cow.vtp ARGS --filename --final-shader "vec4 pixel(vec2 uv){return vec4(vec3(1.0) - texture(source, uv).rgb, 1.0)\\\\\\\;}" UI)
450450
f3d_test(NAME TestFinalShaderUndefined DATA cow.vtp ARGS --final-shader "undefined" REGEXP "Final shader must define a function" NO_BASELINE)
451451
f3d_test(NAME TestFinalShaderCompilationFailure DATA cow.vtp ARGS --final-shader "vec4 pixel(vec2 uv){}" --verbose REGEXP " build the shader program" NO_BASELINE)
452+
f3d_test(NAME TestFinalShaderTimeUniform DATA cow.vtp ARGS --final-shader "vec4 pixel(vec2 uv){return vec4(texture(source, uv).rgb * (0.5 + 0.5*cos(time+uv.xyx+vec3(0,2,4))), 1.0)\\\\\\\;}")
452453

453454
## Command Script
454455
f3d_test(NAME TestCommandScriptBasic SCRIPT DATA dragon.vtu) # roll_camera 90;toggle ui.scalar_bar;print_scene_info;increase_light_intensity
Lines changed: 3 additions & 0 deletions
Loading

vtkext/private/module/vtkF3DUserRenderPass.cxx

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#include "vtkF3DUserRenderPass.h"
22

3+
#include "vtkF3DRenderer.h"
34
#include "vtkObjectFactory.h"
45
#include "vtkOpenGLError.h"
56
#include "vtkOpenGLFramebufferObject.h"
@@ -25,6 +26,7 @@ void vtkF3DUserRenderPass::Render(const vtkRenderState* s)
2526
vtkRenderer* r = s->GetRenderer();
2627
vtkOpenGLRenderWindow* renWin = static_cast<vtkOpenGLRenderWindow*>(r->GetRenderWindow());
2728
vtkOpenGLState* ostate = renWin->GetState();
29+
vtkF3DRenderer* ren = vtkF3DRenderer::SafeDownCast(r);
2830

2931
vtkOpenGLState::ScopedglEnableDisable bsaver(ostate, GL_BLEND);
3032
vtkOpenGLState::ScopedglEnableDisable dsaver(ostate, GL_DEPTH_TEST);
@@ -71,6 +73,7 @@ void vtkF3DUserRenderPass::Render(const vtkRenderState* s)
7173
vtkShaderProgram::Substitute(FSSource, "//VTK::FSQ::Decl",
7274
"uniform sampler2D source;\n"
7375
"uniform ivec2 resolution;\n"
76+
"uniform float time;\n"
7477
"//VTK::FSQ::Decl");
7578

7679
vtkShaderProgram::Substitute(FSSource, "//VTK::FSQ::Decl", this->UserShader);
@@ -97,6 +100,15 @@ void vtkF3DUserRenderPass::Render(const vtkRenderState* s)
97100
this->QuadHelper->Program->SetUniformi("source", this->ColorTexture->GetTextureUnit());
98101
this->QuadHelper->Program->SetUniform2i("resolution", size);
99102

103+
if (!ren)
104+
{
105+
this->QuadHelper->Program->SetUniformf("time", 0);
106+
}
107+
else
108+
{
109+
this->QuadHelper->Program->SetUniformf("time", ren->GetTotalTime());
110+
}
111+
100112
ostate->vtkglDisable(GL_BLEND);
101113
ostate->vtkglDisable(GL_DEPTH_TEST);
102114
ostate->vtkglClear(GL_DEPTH_BUFFER_BIT);

0 commit comments

Comments
 (0)