Skip to content

Commit f542aed

Browse files
committed
Merge pull request #403 from johnhaddon/glFixes
Gl fixes
2 parents 9dc0c51 + 3c05d77 commit f542aed

File tree

2 files changed

+36
-35
lines changed

2 files changed

+36
-35
lines changed

src/IECoreGL/Primitive.cpp

Lines changed: 3 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -130,51 +130,19 @@ static Shader *constant2()
130130
return s.get();
131131
}
132132

133-
134133
static Shader *flatConstant()
135134
{
136135

137-
static const char *vertexSource =
138-
139-
"#version 120\n"
140-
""
141-
"#if __VERSION__ <= 120\n"
142-
"#define in attribute\n"
143-
"#define out varying\n"
144-
"#endif\n"
145-
""
146-
"uniform vec3 Cs = vec3( 1, 1, 1 );"
147-
""
148-
"in vec3 vertexP;"
149-
"in vec3 vertexCs;"
150-
""
151-
"out vec3 geometryCs;"
152-
""
153-
"out vec3 fragmentCs;"
154-
""
155-
"void main()"
156-
"{"
157-
" vec4 pCam = gl_ModelViewMatrix * vec4( vertexP, 1 );"
158-
" gl_Position = gl_ProjectionMatrix * pCam;"
159-
" geometryCs = Cs;"
160-
""
161-
" fragmentCs = geometryCs;"
162-
"}";
163-
164136
static const char *fragmentSource =
165137

166-
"#if __VERSION__ <= 120\n"
167-
"#define in varying\n"
168-
"#endif\n"
169-
""
170-
"in vec3 fragmentCs;"
138+
"uniform vec3 Cs;" // get colour from uniform Cs, bypassing vertexCs
171139
""
172140
"void main()"
173141
"{"
174-
" gl_FragColor = vec4( fragmentCs, 1 );"
142+
" gl_FragColor = vec4( Cs, 1 );"
175143
"}";
176144

177-
static ShaderPtr s = new Shader( vertexSource, fragmentSource );
145+
static ShaderPtr s = new Shader( "", fragmentSource );
178146
return s.get();
179147
}
180148

test/IECoreGL/ShadingTest.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -754,6 +754,39 @@ def testColorAttributeDoesntAffectWireframe( self ) :
754754
]
755755
)
756756

757+
def testVertexCsDoesntAffectWireframe( self ) :
758+
759+
m = self.mesh()
760+
m["Cs"] = IECore.PrimitiveVariable(
761+
IECore.PrimitiveVariable.Interpolation.Vertex,
762+
IECore.Color3fVectorData(
763+
[ IECore.Color3f( 0 ) ] * len( m["P"].data )
764+
)
765+
)
766+
767+
g = IECore.Group()
768+
g.addChild( m )
769+
770+
g.addState(
771+
IECore.AttributeState(
772+
{
773+
"gl:primitive:solid" : IECore.BoolData( True ),
774+
"gl:primitive:wireframe" : IECore.BoolData( True ),
775+
"gl:primitive:wireframeColor" : IECore.Color4f( 0, 1, 0, 1 ),
776+
"gl:primitive:wireframeWidth" : 6.0,
777+
}
778+
)
779+
)
780+
781+
image = self.renderImage( g )
782+
# wireframe is green, and vertex Cs is black,
783+
# so there should be no contribution from
784+
# wireframe or solid shading in the red channel.
785+
self.assertEqual( sum( image["R"].data ), 0 )
786+
# black vertex colour should have no effect on
787+
# green wireframe, so we should have some wireframe
788+
# contribution in the green channel.
789+
self.assertTrue( sum( image["G"].data ) > 0 )
757790

758791
def testUniformFloatArrayParameters( self ) :
759792

0 commit comments

Comments
 (0)