Bzgl Aufwand: Nein - das Verfahren ist fast genau das gleiche wie bei Stencilshadows und die sind ja fix - und bei stencilshadows ist das extrudieren des Volumens das CPU-Aufwändige - die Grafikkarte steckt das einfacher noch weg. Und in dem Fall liegt die Geometrie sogar schon vor (Zylinder).
Was Texturierung des kreises angeht - das wär natürlich grafisch optimal. Allerdings ist das nicht mehr so einfach: Man müsste die Dreiecke des Terrains auf das man den Kreis haben will erst mit der Stenciltechnik die Pixel markieren wo gemalt werden soll. Dann muß man das Terrain mit projezierter Textur neumalen.
Die Projektion der Textur ist kein problem - bei einem Heightfield zumindest, da sind dann die UV Koordinaten auch gleich die x/y koordinaten der Punkte - und wenn man die Texturmatrix modifiziert ist das auch schnell erledigt indem man die einfach zum Kreis hinschiebt etc.
Schwieriger ist es, da die Dreiecke rauszupicken die zum malen infrage kommen, also die, die mit dem Kreis schneiden. Da allerdings das Heightfield ein 2D Array ist kriegt man die Anfrage auch recht flott hin. Wenn man Kreisradius hat kann man einfach die AAbox des Kreises nehmen, also wenn man den kreis an x=20, y=15 mit radius=2 malt, müsste man aus dem Terrain die Höhenwerte zwischen 18,13 und 22,17 rauspicken und die Dreiecke malen.
Wenn man eine Funktion hat die da heißt
drawhfield(fromminx,fromminy,tomaxx,tomaxy)
kann man das auch schnell malen - ohne modifikationen wenn man die Texturmatrix benutzt und die vertices schon ordentliche uvs haben (=x,y position im Raum).
Dann eben Texturmatrix verändern und - eigentlich schon fertig. Aufm Papier
- nee, aber so schwer ist das nicht - wenn man so eine Funktion schon hat. Und die sollte man eh haben weil man ja auch nur die Dreiecke malen will die man wirklich sieht.
Optimal könnte es so sein:
1. Rausfinden welche Indizes des Terrain von der Kamera sichtbar sind (aabox des Kamerafrustums - in isometriespielen kein großes Problem)
2. Terrain mit den indizes listen malen
3. Zylinder mit stencils malen bis man die regionen markiert hat
4. Indices der Zylinderschnitte mit dem terrain rausfinden
5. Terrain mit Indices aus 4. und Texturmatrizen der Zylinderpositionen malen.
Der Aufwand dürfte Rechentechnisch etwas aufwändiger als der Bildboardtest, aber dennoch vertretbar sein.
Auf freier geometrie, also wenn keine heightmap vorliegt wär das ungemein schwerer und rechenaufwänder - da wüßt ich auch nicht wie das gehen soll....