Ursprungligen inskrivet av dakorp
Detta är ett häftigt teknikdemo, men jag kan garantera att de närmaste 10 åren kommer det stanna vid ett sådant. Detta är garanterat ingenting vi kommer se de närmaste åren - inte en chans! Förstår ni hur mycket punkter det skulle krävas för att klara av att visa en unik och högdetaljerad scen som inte är procedurell eller instanser av samma objekt? Tänkt på att du ska kunna gå upp i när-när-bild på varenda område och det ska fortfarande finnas points i point-cloudet för att visa det!
Ok, låt oss tänka på det lite granna, och fundera lite på vad som skulle krävas.
Om vi antar att detaljrikedomen är 1mm per point. (inget som hindrar en från att använda större points för att spara minne.)
En point = en pixel på skärmen, Optimalt.
Då skulle det på en skärm på 1920x1080 synas 1,92meter x 1,08meter. Jag är inte bekant med vilken vinkel man brukar ha på kamerorna i vanligt FPS spel, men känner man till det så skall det gå att räkna ut vilket avstånd betraktaren står på. (jag gissar på ca en meter.)
Om vi antar för enkelhetens skull , att vi har endast ett platt objekt i scenen som är 1,92x1.08meter, så skulle man alltså behöva 1920x1080 points för att nå en detaljrikedom på 1mm. (2,073,600 points).
För att det skall bli någelunda snyggt så skall vi ha med färg och brilljans.
om vi för enkelhetens skull antar att varje "channel" ligger på 8 bitar, så behöver vi 8 bitar för Röd, 8 bitar för Grön, 8 Bitar för Blå och 8 bitar för briljans. 8 bitar är en byte, så vi behöver alltså 4byte för att beskriva en point.
Ett Polygon object som är platt behöver minst 2 polygoner för att bygga upp en rektangel.
Däremot så kommer den att behöva en bitmap som är 1920x1080pixels med 8 bitars RGB , och en till bitmap på 8 bitar för brilljans. totalt 4 byte per pixel.
Med andra ord så krävs det exakt samma mängd minne för en enkel rektangel på 1920x1080, om vi bara räknar på Färg och Brilljans.
men vänta nu, har vi inte glömt något?
jodå det har vi, ett object måste ju ha X Y Z coordinater också.
Så det blir 3 * 16bit per point minst.
i polygon fallet så vinner den lätt med sina 2 polygoner som har bara 6 points (3*16*6/8=324 byte), medans pointcloud behöver 3*16*1920*1080 bits.(12,441,600 byte) OMG!!!!
Men vänta nu , vi är inte riktigt klara. för ännu så länge så har vi inte räknat med bumpmaps. så det blir ett till bitmapplager på 8bits * 1920x1080 för polygon sidan.
Dock så klarar sig pointcloud sidan bättre, eftersom bumpmap kan mappas in i coordinaterna direkt, så det kostar inget extra.
jo, lite mera points blir det för att fylla upp mellanrummen, men det beror helt på hur bumpen ser ut. är det väldigt liten skillnad mellan points så behövs det väldigt lite extra points.
Alternativet är att man skippar bumpmap för polygonen och bygger in bumpen i själva objektet, men detta skulle bli vansinnigt mycket mera polygoner.
Nu tog kaffet slut, så nu orkar jag inte räkna vidare.
Men summa summarum kan man väl säga att så jävla stor skillnad i minnesåtgång är det faktiskt inte om man ska rita väggar och golv.
Ska vi däremot rita mer avancerade objekt som gubbar och orcer, då blir det jobbigare att räkna ut matten. Men man kan ju anta att ett objekt av polygoner med alla dess bitmaps för diverse effekter, och polygoner,, kommer att landa på ungeför samma som pointcloud. då en pointcloud endast behöver points för själva ytan på objektet.
Visst , med tesselering och komprimerade bitmaps så får man ner storleken, men det ju inget som säger att man inte kan använda samma tekniker med pointcloud.
Det blir alltså ung samma minnesåtgång.
och nu ska jag ha kaffe.