This shows you the differences between two versions of the page.
egc:laboratoare:06 [2017/11/02 15:10] radu_florentin.boeru [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 111: | Line 113: | ||
* **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" | ||
Line 200: | Line 202: | ||
* 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 | * 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 culoarea (unul sau mai multe canale de culoare) dupa o functie de timp (trigonometrica etc.) | + | - 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 |