Exempelsamling

Denna sida är nyss inlagd 2022.
Uppgifter från de inlämningsuppgifter som kursen hade tidigare.
Detta är gamla uppgifter, så mycket material täcks inte och en del uppgifter kan vara inaktuella. Relevansen för dagens duggor har jag inte kollat än.


Relevant för labb 1:

1. Varför gör man "scale and bias"-transformation i projektiv texturering?

2. Vilket problem löser "detail texturing"?

3. Motivera för och emot detta påstående (ett argument vardera):

"glCopyTexImage är ett bra alternativ till Framebuffer Objects".

4. Vi har tittat på tre grundläggande skuggingsmetoder, a) plana projektioner, b) skuggmappning och c) skuggvolymer. Vilka av dessa klarar (utan betydande tillägg)

  • självskuggning
  • snygga skarpa skuggor
  • mjuka skuggor

5. PCF betyder Percentage Closer FIltering. Vad är det för data man filtrerar?

6. Beskriv två viktiga problem med skuggmappning.

7. Varför trunkerar man en del av original-bilddata i HDR-bloom? Varför tar man inte hela bilden?

8. Du skall applicera ett 3x3-filter på en bild. Det kan separeras till ett 1x3 och ett 3x1. Borde det bli snabbare? Varför?

9. På vilket sätt får vi bättre parallax mapping med offset limiting?


Relevant för labb 2:

10. När en algoritm skall implementeras i GPGPU med shaders måste den skrivas om, ofta från grunden, trots att språken kan vara ganska lika. Nämn två skäl till detta.

11. Varför behöver man välja renderingsriktning när man voxeliserar med polygonrendering till volym?

12. Våra tre enhetskvaternjoner heter i, j och k. Vad får jag om jag multiplicerar i och j?

13. Förklara hur SQUAD kan interpolera med en exponentialfunktion.

14. Vad är skillnaden mellan skinning och stitching?



---

10. Jämför containment/edgetestning, snittvolym och GJK i termer av snabbhet (beräkningskomplexitet).

11. En operation är kritisk för GJK's effektivitet. Vilken? Hur bör den utföras?

13. Vilken kompromiss måste man göra om vill dölja netlag?

14. Hur hanterar timewarp meddelanden som kommer för sent?

15. En ytvertex vm påverkas av två ben med vikterna w1 och w2. Benen kan variera rotationen men inte längd. Beskriv operationerna som behövs för att beräkna dess nya position vm'. Uppdelning av transformationerna i konstanta och variabla delar skall framgå.

16. Jämför följande metoder för deformerbara kroppar:

  • massa-fjäder-modellen
  • finita element-metoden
  • formmatchning
  • punktbaserade modeller

med avseende på

  • självöverlapp
  • stabilitet
  • möjlighet att bryta isär

17. Se bild nedan.

https://www.computer-graphics.se/TSBK03-files/uppg17.gif

18-19 (dubbeluppgift!)

https://www.computer-graphics.se/TSBK03-files/uppg18-19.gif

20.

https://www.computer-graphics.se/TSBK03-files/uppg20.gif



Lösningsförslag:

1. För att skärm- och texturkoordinater har olika omfång, -1 till 1 respektive 0 till 1 per axel.

2. Det minskar minnesbehovet.

3. För: glCopyTexImage utförs inom GPUn och kan antas vara väloptimerad. Den är mycket snabbare än metoder som går via CPU. Den är också lättanvänd.

Mot: FBOer kopierar inga data och är därför mycket snabbare.

4. a) plana projektioner: Klarar ej självskuggning. Ger skarpa skuggor. Mjuka enbart med tillägg.

b) skuggmappning: Klarar självskuggning. Knepigt att få perfekta skarpa skuggor. Mjuka skuggor relativt enkelt.

c) skuggvolymer: Kan klara självskuggning men det är implementationsberoende. Perfekta skarpa skuggor. Mjuka enbart med tillägg.

5. Man samplat skugga/ej skugga för ett antal punkter.

6. Upplösningsberoende: Kvaliteten beror på avstånd till kameran. Samplingsproblem längs kanter, kräver en offset.

7. För att vi inte vill sudda ut detaljer i bildens “normala” del.

8. Tveksamt! 1x3 är mycket litet så antalet accesser minskar bara från 9 till 6, medan antalet bildgenomgångar ökar från en till två. Så det är inte troligt att vi får någon signifikant förbättring.

9. Stegen ökar inte med ökad lutning, vilket undviker för stora språng i bumpmappen.


10. Koden måste parallelliseras, och man kan behöva ta hänsyn till minnesaccesser, så man kan t.ex. behöva använda delat minne (shared memory) för att minska antalet globala accesser.

11. För att få den riktning från vilken polygonen renderas utan glipor.

12. k. Tänk kryssprodukt, x x y.

13. Multiplikativ interpolation, (ab-1)tb = atb(1-t) går mellan a och b när t går från 0 till 1.

14. Skinning kan binda en vertex till flera ben med vikter för varje, medan stitching binder varje vertex till ett enda ben.


Denna sida underhålls av Ingemar Ragnemalm.