This shows you the differences between two versions of the page.
vdvac:lab2 [2024/03/25 14:38] anca.morar [Implementare] |
vdvac:lab2 [2024/03/25 15:41] (current) anca.morar [Etapa 2] |
||
---|---|---|---|
Line 7: | Line 7: | ||
**Figura 1** | **Figura 1** | ||
- | {{:vdvac:lab2_fig1.png?480|}} | + | {{:vdvac:lab2_fig1.png?550|}} |
===== Concepte teoretice ===== | ===== Concepte teoretice ===== | ||
Line 47: | Line 47: | ||
==== Etapa 1 ==== | ==== Etapa 1 ==== | ||
- | **Determinarea punctelor de ieșire din volum ale razelor** | + | **Determinarea punctelor de ieșire ale razelor din volum** |
* Se desenează într-un framebuffer (nu în cel default)<code>frameBuffer->Bind(); </code> | * Se desenează într-un framebuffer (nu în cel default)<code>frameBuffer->Bind(); </code> | ||
* Se rasterizează fețele din spate ale cubului încadrator<code>glEnable(GL_CULL_FACE); | * Se rasterizează fețele din spate ale cubului încadrator<code>glEnable(GL_CULL_FACE); | ||
Line 56: | Line 56: | ||
==== Etapa 2 ==== | ==== Etapa 2 ==== | ||
- | **Determinarea punctelor de ieșire din volum ale razelor** | + | **Determinarea punctelor de intrare ale razelor în volum ** |
* Se desenează în buffer-ul default<code>FrameBuffer::BindDefault();</code> | * Se desenează în buffer-ul default<code>FrameBuffer::BindDefault();</code> | ||
Line 88: | Line 88: | ||
* Se modulează opacitatea și culoarea | * Se modulează opacitatea și culoarea | ||
* Se realizează compunere din față în spate<code>colorAcum.rgb += (1.0 - colorAcum.a) * colorSample.rgb; | * Se realizează compunere din față în spate<code>colorAcum.rgb += (1.0 - colorAcum.a) * colorSample.rgb; | ||
- | colorAcum.a += (1.0 - colorAcum.a) * colorSample.a;</code> | + | colorAcum.a += (1.0 - colorAcum.a) * colorSample.a;</code> |
* Se verifică dacă raza curentă a ieșit din volum sau dacă opacitatea acumulată a ajuns la 1 | * Se verifică dacă raza curentă a ieșit din volum sau dacă opacitatea acumulată a ajuns la 1 | ||
- | ==== Cerinte laborator ==== | + | ==== Cerințe laborator ==== |
- | - Să se completeze variabila ''frag_color'' pentru a fi transmisă mai departe către fragment shader (în ''VertexShader_backface.glsl'') | + | - Să se completeze valoarea variabilei ''frag_color'' pentru a fi transmisă mai departe către fragment shader (în ''VertexShader_backface.glsl'') |
- Să se calculeze corect culoarea ''out_color'' ca să se afișeze fețele spate ale volumului încadrator (în ''FragmentShader_backface.glsl'') | - Să se calculeze corect culoarea ''out_color'' ca să se afișeze fețele spate ale volumului încadrator (în ''FragmentShader_backface.glsl'') | ||
- Să se trimită către fragment shader ''EntryPoint'' și ''ExitPointCoord'' (în ''VertexShader_raycasting.glsl'') | - Să se trimită către fragment shader ''EntryPoint'' și ''ExitPointCoord'' (în ''VertexShader_raycasting.glsl'') | ||
Line 100: | Line 100: | ||
- Să se calculeze vectorul cu care se înaintează pe rază (de la punctul de eșantionare curent la următorul) | - Să se calculeze vectorul cu care se înaintează pe rază (de la punctul de eșantionare curent la următorul) | ||
- Să se calculeze valoarea scalară a eșantionului curent (în funcție de textura ''VolumeTex'' și de coordonata de textură ''voxelCoord'') | - Să se calculeze valoarea scalară a eșantionului curent (în funcție de textura ''VolumeTex'' și de coordonata de textură ''voxelCoord'') | ||
- | - Să se calculeze culoarea eșantionului curent (în funcție de textura ''TransferFunc'' și de coordonata de textură valoarea scalară curentă) | + | - Să se calculeze culoarea eșantionului curent (în funcție de textura ''TransferFunc'' și de coordonata de textură dată de valoarea scalară curentă) |
- | - Să se actualizeze poziția eșantionului curent | + | - Să se actualizeze poziția eșantionului |
- Să se actualizeze lungimea parcursă pe rază | - Să se actualizeze lungimea parcursă pe rază | ||
+ | |||
+ | |||
+ | ==== Demo ==== | ||
+ | |||
+ | <html> | ||
+ | <p style="text-align:center;margin:auto;"> | ||
+ | <iframe width="430" height="250" src="https://www.youtube.com/embed/Bl_fSKLk-Cs" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> | ||
+ | </p> | ||
+ | </html> | ||
+ |