This shows you the differences between two versions of the page.
pgapi:laboratoare:02 [2024/10/08 16:52] andrei.lambru |
pgapi:laboratoare:02 [2024/10/09 10:05] (current) andrei.lambru [Cerințe laborator] |
||
---|---|---|---|
Line 39: | Line 39: | ||
</code> | </code> | ||
- | Instanțierea explicită se face în shader, generând geometrie nouă prin comenzi glsl, în acest caz prin comenzi de geometry shader: | + | Instanțierea explicită se face în shader, generând geometrie nouă prin comenzi GLSL, în acest caz prin comenzi de geometry shader: |
<code glsl> | <code glsl> | ||
for (int i=0;i<10;i++) { | for (int i=0;i<10;i++) { | ||
Line 53: | Line 53: | ||
<note important> | <note important> | ||
- | In cadrul laboratorului curent, se utilizeaza numarul de ordine al instantei in programul de tip geometry shader. Implicit, standardul OpenGL nu permite accesul la atributul de intrare ''gl_InstanceID''. | + | În cadrul acestui laborator, se utilizează numărul de ordine al instanței din care face parte linia primită la intrare de către programul de tip geometry shader. Implicit, standardul OpenGL nu permite accesul la atributul de intrare ''gl_InstanceID'' în geometry shader. Din acest motiv, a fost creat un atribut de ieșire din vertex shader cu numele ''instance'' ce este primit sub forma de atribut de intrare în geometry shader cu tipul de date vector de 2 componente ''instance[2]'', conform codului GLSL de mai jos: |
- | + | ||
- | Din acest motiv, a fost creat un atribut de iesire din vertex shader cu numele ''instance'' ce este primit sub forma de atribut de intrare in geometry shader cu tipul de data vector de 2 componente ''instance[2]'', conform codului de glsl de mai jos: | + | |
<code glsl> | <code glsl> | ||
Line 75: | Line 73: | ||
</code> | </code> | ||
- | Ambele valori ale vectorului sunt identice si reprezinta numarul de ordine al instantei din care face parte linia de la intrarea programului de tip geometry shader. | + | Ambele valori ale vectorului sunt identice și reprezintă numărul de ordine al instanței din care face parte linia de la intrarea programului de tip geometry shader. |
</note> | </note> | ||
Line 100: | Line 98: | ||
<note important> | <note important> | ||
+ | * //Geometria suport trimisă către shader este o linie, ce leagă primul și ultimul punct de control.// Punctele de control sunt accesabile în geometry shader sub numele ''control_p1'', ''control_p2'', ''control_p3'', ''control_p4''. | ||
* În laborator, geometria suport pentru curbă este deja definită. Există două tipuri de instanțieri: | * În laborator, geometria suport pentru curbă este deja definită. Există două tipuri de instanțieri: | ||
* Instanțierea implicită, facută cu comanda glDrawElementsInstanced, care este deja implementată și care generează geometria suport de N ori | * Instanțierea implicită, facută cu comanda glDrawElementsInstanced, care este deja implementată și care generează geometria suport de N ori | ||
* Instanțierea explicită, care va fi implementată în geometry shader. | * Instanțierea explicită, care va fi implementată în geometry shader. | ||
- | * //Geometria suport trimisă către shader este o linie, ce leagă primul și ultimul punct de control.// Punctele de control sunt accesabile în geometry shader sub numele ''control_p1'', ''control_p2'', ''control_p3'', ''control_p4''. | ||
</note> | </note> | ||