Differences

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

Link to this comparison view

egc:laboratoare:06 [2017/11/02 00:19]
florin_eugen.iancu [Cerinte laborator]
egc:laboratoare:06 [2021/11/19 13:08] (current)
victor.asavei [Cerinte laborator]
Line 1: Line 1:
 ===== Laboratorul 06 ===== ===== Laboratorul 06 =====
  
 +**Video Laborator 6**: https://​youtu.be/​f7q2TGCRly0 \\
 +**Autor**: [[maria_anca.balutoiu@upb.ro | Anca Băluțoiu]]
 ==== Banda Grafica ==== ==== Banda Grafica ====
  
Line 82: Line 84:
 A doua comanda descrie structura datelor in cadrul VBO-ului astfel: A doua comanda descrie structura datelor in cadrul VBO-ului astfel:
   * pe pipe-ul **2** se trimit la shader 3 float-uri (argument 3) pe care nu le normalizam (argument 4)   * pe pipe-ul **2** se trimit la shader 3 float-uri (argument 3) pe care nu le normalizam (argument 4)
-  * argumentul 5 numit si **stride**, identifica pasul de citire (in bytes) in cadrul VBO-ului pentru a obtine urmatorul atribut; cu alte cuvinte, din cati in cati octeti ​avem o noua pereche ​de cate 3 float-uri+  * argumentul 5 numit si **stride**, identifica pasul de citire (in bytes) in cadrul VBO-ului pentru a obtine urmatorul atribut; cu alte cuvinte, din cati in cati octeti ​sarim cand vrem sa gasim un nou grup de cate 3 float-uri ​care reprezinta acelasi lucru
   * argumentul 6 identifica offsetul inital din cadrul buffer-ul legat la GL_ARRAY_BUFFER (VBO); cu alte cuvinte, de unde plecam prima oara.   * argumentul 6 identifica offsetul inital din cadrul buffer-ul legat la GL_ARRAY_BUFFER (VBO); cu alte cuvinte, de unde plecam prima oara.
  
Line 107: Line 109:
  
 <code cpp> <code cpp>
-int location = glGetUniformLocation(int shader_program,​ "​uniform_variable_name_in_shader"​)**+int location = glGetUniformLocation(int shader_program,​ "​uniform_variable_name_in_shader"​);
 </​code>​ </​code>​
  
   * **shader_program** reprezinta ID-ul programului shader compilat pe placa video   * **shader_program** reprezinta ID-ul programului shader compilat pe placa video
-  * in cadrul framework-ului de laborator ID-ul se poate obtine apeland functia ''​shader->​GetProgramID()''​ sau direct accesand ​vriabila ​membru ''​shader->​program''​+  * in cadrul framework-ului de laborator ID-ul se poate obtine apeland functia ''​shader->​GetProgramID()''​ sau direct accesand ​variabila ​membru ''​shader->​program''​
  
  
Line 194: Line 196:
 </​note>​ </​note>​
  
-  - Descarcati [[https://​github.com/​UPB-Graphics/​Framework-EGC/​archive/​master.zip|framework-ul de laborator]]+  - Descarcati [[https://​github.com/​UPB-Graphics/​gfx-framework/​archive/​master.zip|framework-ul de laborator]]
   - Completati functia ''​RenderSimpleMesh''​ astfel inca sa trimiteti corect valorile uniform catre Shader   - Completati functia ''​RenderSimpleMesh''​ astfel inca sa trimiteti corect valorile uniform catre Shader
     * Se interogeaza locatia uniformelor "​Model",​ "​View"​ si "​Projection"​     * Se interogeaza locatia uniformelor "​Model",​ "​View"​ si "​Projection"​
     * Folosind ''​glUniformMatrix4fv''​ sa se trimita matricile corespunzatoare catre shader     * Folosind ''​glUniformMatrix4fv''​ sa se trimita matricile corespunzatoare catre shader
-    * Daca ati completat corect functia, ​impreuna cu exercitiul **3** punctul **d**, ar trebui sa vedeti un cub pe centrul ecranului rottit 45 grade in jurul lui Y si colorat variat+    * Daca ati completat corect functia, ​si ati completat gl_Position in vertex shader, ar trebui sa vedeti un cub pe centrul ecranului rottit 45 grade in jurul lui Y si colorat variat
   - Completati Vertex Shaderul   - Completati Vertex Shaderul
-    - Se de clara atributele de intrare pentru ''​Vertex Shader''​ folosind layout location <code glsl>+    - Se declara ​atributele de intrare pentru ''​Vertex Shader''​ folosind layout location <code glsl>
  layout(location = 0) in vec3 v_position;  layout(location = 0) in vec3 v_position;
- // same for the rest of the attributes+ // same for the rest of the attributes ​( check Lab6.cpp CreateMesh() ); 
 </​code>​ </​code>​
     - Se declara atributele de iesire catre ''​Fragment Shader''​ <code glsl>     - Se declara atributele de iesire catre ''​Fragment Shader''​ <code glsl>
Line 223: Line 226:
  out_color = vec4(frag_color,​ 1);  out_color = vec4(frag_color,​ 1);
 </​code>​ </​code>​
-  - Sa se primeasca toate atributele trimise de catre vertex shader conform locatiilor utilizate in functia ''​Laborator6::​CreateMesh''​ 
   - Sa se utilizeze normala vertexilor pe post de culoare de output in cadrul Fragment Shader-ului   - Sa se utilizeze normala vertexilor pe post de culoare de output in cadrul Fragment Shader-ului
     * Inspectati de asemenea structura ''​VertexFormat''​ pentru a intelege ceea ce se trimite pe fiecare pipe     * Inspectati de asemenea structura ''​VertexFormat''​ pentru a intelege ceea ce se trimite pe fiecare pipe
   - Sa se interschimbe **pipe-ul 1** cu **pipe-ul 3**. Trimiteti normala pe **pipe-ul 3** si culoarea vertexului pe **pipe-ul 1**   - Sa se interschimbe **pipe-ul 1** cu **pipe-ul 3**. Trimiteti normala pe **pipe-ul 3** si culoarea vertexului pe **pipe-ul 1**
     * Se inspecteaza rezultatul obtinut     * Se inspecteaza rezultatul obtinut
 +  - Bonus: sa se trimita timpul aplicatiei (Engine::​GetElapsedTime()),​ si sa se varieze pozitia si culoarea (unul sau mai multe canale de culoare) dupa o functie de timp (trigonometrica etc.)
  
 <​hidden>​ <​hidden>​
 +  - Sa se primeasca toate atributele trimise de catre vertex shader conform locatiilor utilizate in functia ''​Laborator6::​CreateMesh''​
 **[Bonusuri posibile]** **[Bonusuri posibile]**
   * displacement in vertex shader   * displacement in vertex shader
egc/laboratoare/06.1509574788.txt.gz · Last modified: 2017/11/02 00:19 by florin_eugen.iancu
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