Differences

This shows you the differences between two versions of the page.

Link to this comparison view

spg:laboratoare:01 [2023/10/03 14:14]
anca.morar [Geometry Shader]
spg:laboratoare:01 [2023/10/03 15:02] (current)
anca.morar [Cerințe laborator]
Line 52: Line 52:
 //intrarea este un triunghi //intrarea este un triunghi
  
-layout(triangle_strip,​ max_vertices = 5) out; +layout(triangle_strip,​ max_vertices = 4) out; 
-//ieșirea este un triangle strip cu maxim 5 varfuri (2 triunghiuri)+//ieșirea este un triangle strip. Se vor genera ​maxim 4 vârfuri
  
 layout(location = 0) in vec2 vert_texcoord[3];​ layout(location = 0) in vec2 vert_texcoord[3];​
Line 75: Line 75:
  EmitVertex();​  EmitVertex();​
  
- EndPrimitive();+        vec3 offset = vec3(1,​0,​0);​ 
 +        gl_Position = gl_in[0].gl_Position + offset; ​  
 +        //al patrulea vârf se obține prin translația primului vârf cu un offset  
 + geom_texcoord = vert_texcoord[0];​ 
 + EmitVertex();
  
 + EndPrimitive();​
 +        //directiva aceasta încheie primitiva ​
 +        //în acest exemplu, primitiva este un triangle_strip cu 4 vârfuri
 +        //acesta este echivalent cu două triunghiuri cu indicii 0-1-2 și 1-2-3
 } }
 </​code>​ </​code>​
Line 97: Line 105:
 </​code>​ </​code>​
  
-  * De asemenea există și intrare implicită la geometry shader, numită ''​gl_in'',​ din care ne interesează ''​gl_Position'':​ <code glsl>+  * De asemeneaexistă și intrare implicită la geometry shader, numită ''​gl_in'',​ din care ne interesează ''​gl_Position'':​ <code glsl>
 in gl_PerVertex in gl_PerVertex
 { {
Line 113: Line 121:
 Pentru fiecare vârf emis din geometry shader se pot asocia coordonate textură, normală, culoare, asociate vârfului (setate înainte de fiecare apel ''​EmitVertex()''​). Pentru fiecare vârf emis din geometry shader se pot asocia coordonate textură, normală, culoare, asociate vârfului (setate înainte de fiecare apel ''​EmitVertex()''​).
 Acestea trebuie declarate ca variabile de ieșire. Acestea trebuie declarate ca variabile de ieșire.
-După cum se poate observa, valoarea lui ''​geom_texcoord''​ este actualizată înainte de fiecare apel ''​EmitVertex()'':​ +După cum se poate observa, valoarea lui ''​geom_texcoord''​ este actualizată înainte de fiecare apel ''​EmitVertex()'':<​code glsl>
- +
-<code glsl>+
 gl_Position = gl_in[0].gl_Position;​ gl_Position = gl_in[0].gl_Position;​
 geom_texcoord = vert_texcoord[0];​ geom_texcoord = vert_texcoord[0];​
Line 121: Line 127:
 </​code>​ </​code>​
  
 +Într-un geometry shader se pot emite mai multe primitive (comanda ''​EmitVertex()''​ se poate da o dată sau de mai multe ori).
 ==== Cerințe laborator ==== ==== Cerințe laborator ====
  
Line 135: Line 142:
  
  
-{{:​spg:​laboratoare:​bambusi_pe_coloane.jpg?​500| }} +{{:​spg:​laboratoare:​bambusi_pe_coloane.jpg?​650| }} 
-{{:​spg:​laboratoare:​shrink.png?500| }}+ 
 +{{:​spg:​laboratoare:​lab1_scalare.png?​650| }} 
 + 
 +{{:​spg:​laboratoare:​efect_scalare.png?650| }}
  
spg/laboratoare/01.1696331660.txt.gz · Last modified: 2023/10/03 14:14 by anca.morar
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0