[Mesa-dev] [PATCH 08/12] glsl/gsraytrace: Use core geometry shaders.
Fabian Bieler
fabianbieler at fastmail.fm
Wed Feb 19 15:17:09 PST 2014
v2: Don't remove ShaderSupported() test. It sets up some function pointers for
the CompileShader framework.
Signed-off-by: Fabian Bieler <fabianbieler at fastmail.fm>
Reviewed-by: Brian Paul <brianp at vmware.com>
Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
---
src/glsl/gsraytrace.cpp | 24 +++++++++---------------
1 file changed, 9 insertions(+), 15 deletions(-)
diff --git a/src/glsl/gsraytrace.cpp b/src/glsl/gsraytrace.cpp
index f9e708f..6df6543 100644
--- a/src/glsl/gsraytrace.cpp
+++ b/src/glsl/gsraytrace.cpp
@@ -255,7 +255,8 @@ static const char* vsSource =
static const char* gsSource =
"#version 150 \n"
"#line " S__LINE__ "\n"
-"#extension GL_ARB_geometry_shader4: require \n"
+"layout(points) in; \n"
+"layout(points, max_vertices = 3) out; \n"
" \n"
"#define SHADOWS \n"
"#define RECURSION \n"
@@ -337,7 +338,7 @@ static const char* gsSource =
" return; \n"
" \n"
" // emitPassThrough(); \n"
-" gl_Position = gl_PositionIn[0]; \n"
+" gl_Position = gl_in[0].gl_Position; \n"
" orig_t2 = orig_t1[0]; \n"
" dir_idx2 = dir_idx1[0]; \n"
" uv_state2.xyw= uv_state1[0].xyw; \n"
@@ -362,7 +363,7 @@ static const char* gsSource =
" type = 1; \n"
" \n"
" //emitShadowRay(); \n"
-" gl_Position = gl_PositionIn[0]; \n"
+" gl_Position = gl_in[0].gl_Position; \n"
" orig_t2.xyz = shadowRay.orig; \n"
" orig_t2.w = shadowHit.t; \n"
" dir_idx2.xyz = shadowRay.dir; \n"
@@ -379,7 +380,7 @@ static const char* gsSource =
" type = -1; \n"
" \n"
" //emitReflRay(); \n"
-" gl_Position = gl_PositionIn[0]; \n"
+" gl_Position = gl_in[0].gl_Position; \n"
" orig_t2.xyz = reflRay.orig; \n"
" orig_t2.w = reflHit.t; \n"
" dir_idx2.xyz = reflRay.dir; \n"
@@ -844,24 +845,17 @@ Init(void)
exit(-1);
}
- if (!GLEW_ARB_geometry_shader4)
+ if (!GLEW_VERSION_3_2)
{
- fprintf(stderr, "GS Shaders are not supported!\n");
- exit(-1);
- }
-
- if (!GLEW_VERSION_3_0)
- {
- fprintf(stderr, "OpenGL 3.0 (needed for transform feedback) not "
- "supported!\n");
+ fprintf(stderr, "OpenGL 3.2 (needed for transform feedback and "
+ "gemoetry shaders) not supported!\n");
exit(-1);
}
vertShader = CompileShaderText(GL_VERTEX_SHADER, vsSource);
geomShader = CompileShaderText(GL_GEOMETRY_SHADER_ARB, gsSource);
fragShader = CompileShaderText(GL_FRAGMENT_SHADER, fsSource);
- program = LinkShaders3WithGeometryInfo(vertShader, geomShader, fragShader,
- 3, GL_POINTS, GL_POINTS);
+ program = LinkShaders3(vertShader, geomShader, fragShader);
const char *varyings[] = {
"gl_Position",
--
1.8.3.2
More information about the mesa-dev
mailing list