Differences

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

Link to this comparison view

vdvac:lab2 [2024/03/25 14:37]
anca.morar [Etapa 2]
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 38: Line 38:
 </​code>​ </​code>​
  
-  * Atunci culorile punctelor reprezintă chiar coordonatele lor. În Figura 2.stânga se văd fețele față ale cubului și în dreapta, fețele spate:+  * Atunci culorile punctelor reprezintă chiar coordonatele lor. În Figura 2stângase văd fețele față ale cubului și în dreapta, fețele spate:
     * punctele de pe fețele față sunt punctele în care razele intră în volum     * punctele de pe fețele față sunt punctele în care razele intră în volum
     * punctele de pe fețele spate sunt punctele în care razele ies din volum      * punctele de pe fețele spate sunt punctele în care razele ies din volum 
  
 **Figura 2** **Figura 2**
 +
 {{:​vdvac:​lab2_fig2.png?​400|}} {{:​vdvac:​lab2_fig2.png?​400|}}
  
 ==== 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 55: 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 87: 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 99: 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>​
 +
vdvac/lab2.1711370249.txt.gz · Last modified: 2024/03/25 14:37 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