0031682: Visualization - Prs3d_ShadingAspect::SetTransparency() has no effect with...
[occt.git] / tests / v3d / glsl / geom1
1 puts "========"
2 puts "0029074: Visualization, TKOpenGl - support Geometry Shader definition"
3 puts "========"
4
5 pload MODELING VISUALIZATION
6
7 set aShaderVert "
8 out vec4 VertColor;
9 void main() {
10   VertColor = occColor;
11   gl_Position = occVertex;
12 }"
13
14 # define a Geometry shader drawing shrinked triangles
15 set aShaderGeom "
16 layout(triangles) in;
17 layout(triangle_strip, max_vertices=3) out;
18 in vec4 VertColor\[3\];
19 out vec4 Color;
20 void main() {
21   mat4 aMat = occProjectionMatrix * occWorldViewMatrix * occModelWorldMatrix;
22   vec3 aCenter = vec3 (0.0, 0.0, 0.0);
23   for (int aTriVertIter = 0; aTriVertIter < 3; ++aTriVertIter) {
24     aCenter += gl_in\[aTriVertIter\].gl_Position.xyz;
25   }
26   aCenter /= 3.0;
27   for (int aTriVertIter = 0; aTriVertIter < 3; ++aTriVertIter) {
28     vec3 aVec = gl_in\[aTriVertIter\].gl_Position.xyz - aCenter;
29     vec3 aVertRes = aCenter + normalize (aVec) * length (aVec) * 0.75;
30     gl_Position = aMat * vec4 (aVertRes, 1.0);
31     Color = VertColor\[aTriVertIter\] * 2.0;
32     EmitVertex();
33   }
34   EndPrimitive();
35 }"
36
37 set aShaderFrag "
38 in vec4 Color;
39 void main() {
40   occFragColor = Color;
41 }"
42
43 # draw a box
44 box b 1 2 3
45 vcaps -core
46 vclear
47 vinit View1
48 vaxo
49 vdisplay -dispMode 1 -mutable b
50 vfit
51 vrotate 0.2 0.0 0.0
52 vdump $::imagedir/${::casename}_normal.png
53
54 vshaderprog b -vert $aShaderVert -geom $aShaderGeom -frag $aShaderFrag
55 vdump $::imagedir/${::casename}_geom.png