summaryrefslogtreecommitdiffstats
path: root/src/runtimerender/rendererimpl/Qt3DSRendererImplShaders.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtimerender/rendererimpl/Qt3DSRendererImplShaders.cpp')
-rw-r--r--src/runtimerender/rendererimpl/Qt3DSRendererImplShaders.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/runtimerender/rendererimpl/Qt3DSRendererImplShaders.cpp b/src/runtimerender/rendererimpl/Qt3DSRendererImplShaders.cpp
index d69e46e..9949b62 100644
--- a/src/runtimerender/rendererimpl/Qt3DSRendererImplShaders.cpp
+++ b/src/runtimerender/rendererimpl/Qt3DSRendererImplShaders.cpp
@@ -2445,6 +2445,36 @@ namespace render {
return m_SceneLayerShader.getValue();
}
+ SFillRectShader *Qt3DSRendererImpl::GetFillRectShader()
+ {
+ if (m_fillRectShader.hasValue())
+ return m_fillRectShader.getValue();
+
+ GetProgramGenerator().BeginProgram();
+
+ IShaderStageGenerator &vertexGenerator(
+ *GetProgramGenerator().GetStage(ShaderGeneratorStages::Vertex));
+ IShaderStageGenerator &fragmentGenerator(
+ *GetProgramGenerator().GetStage(ShaderGeneratorStages::Fragment));
+
+ vertexGenerator.AddIncoming("attr_pos", "vec3");
+ vertexGenerator.Append("void main() {");
+ vertexGenerator.Append("\tgl_Position = vec4(attr_pos, 1.0);");
+ vertexGenerator.Append("}");
+
+ fragmentGenerator.AddUniform("color", "vec4");
+ fragmentGenerator.Append("void main() {");
+ fragmentGenerator.Append("\tfragOutput = color;\n");
+ fragmentGenerator.Append("}");
+ NVRenderShaderProgram *theShader = GetProgramGenerator().CompileGeneratedShader(
+ "fill rect shader", SShaderCacheProgramFlags(), TShaderFeatureSet());
+ NVScopedRefCounted<SFillRectShader> retval;
+ if (theShader)
+ retval = QT3DS_NEW(m_Context->GetAllocator(), SFillRectShader)(*theShader);
+ m_fillRectShader = retval;
+ return m_fillRectShader.getValue();
+ }
+
SLayerProgAABlendShader *Qt3DSRendererImpl::GetLayerProgAABlendShader()
{
if (m_LayerProgAAShader.hasValue())