Maximale Textur Groesse, Frage zur Geschwindigkeit
-
Das weder das eien noch das andere ein Flaschenhals ist ist mir klar, es war mehr eine Hypotetische Frage.
Die 2 Ansätze finde ich interessant, hab leider nicht soviel wissen über Shader, klingt aber nicht schlecht.
-
ist aber ein alter hut, ne menge spiele machen das so, das lief auf ner GF3 schon gut, das lustige ist, das lief sogar auf einer GF4MX (die keinen hardware vertexshader hatte) noch gut. so konnte ich ein paar hundert kleine animierte einheiten durch die gegend schubsen *hehe*
aber ich glaube das problem was lukas loesen moechte entsteht eher durch multitexturing. er hat vermutlich zwei texturesets mit unmengen von texturen und waehlt dann von beiden pro objekt eine kombination. da hat man dann auch pro objekt einen texture switch, vielleicht sogar mehrere falls das objekt in mehrere drawcalls zerteilt werden muss, weil z.b. seine lightmap nicht in eine texture page passte.
entsprechend denkt er jetzt an die loesung mit riesigen texturen.
das kann speicherprobleme geben.
-
Naja bei 4096x4096 is sone Textur schon 64MB groß, da sis nich ohne.
Hast du eig nen Litheratur/Tutorial Tip zu den Vertex Shadern? Das was du da geschrieben hast fidne ich interessant abe rirgendwie hab ich bisher nie was gefunden was die Shader mal ausreichend behandelt.
-
zum anfangen vielleicht: http://http.developer.nvidia.com/GPUGems/gpugems_pref01.html
ist sogar online lesbar (einfach rechts auf die kapitel klicken). zum wirklichen anfangen bei 0 sind auch die nehe tutorials oder die dx-sdk doku ganz gut (mit dem shader workshop)
-
Danke schau ich mir mal an. Der Shaderworkshop nützt mir leider nix, nehme Dx9 und hab damit ja Shader 3 der Workshop vom letzten SDK ist aber leider auf Shader4 zugeschnitten.
-
-
Nochmal danke, das hilft mir schonmal sehr weiter.
-
Schön, dass in diesem Thread noch anderen geholfen werden kann ^^
Also ich hatte nicht zwangsläufig vor, die maximale Texture-Größe auszunutzen. Ich wollte lediglich wissen, ob das Programm langsamer wird, wenn man mit großen Texturen arbeitet. Ich selbst gehe eher mal davon aus, dass das kein Problem sein sollte.
Ich habe das gefragt, weil ich zur Zeit ein Test-Programm schreibe, das Lightmaps generieren soll. Das funktioniert auch schon ganz schön (hier mal ein Beispiel Bild: http://softpixelengine.sourceforge.net/GalleryImg33b.jpg)
Jedoch muss ich die einzelnen Lightmaps, welche mein Programm für jedes einzelne Dreieck generiert, später zusammen auf eine Lightmap bringen. Denn wenn ich tausende von kleinen Texturen habe, muss ich diese Texturen jedesmal mit den OpenGL Funktionen wechseln. Habe ich abe wenige große, dann muss ich das mit OpenGL oder eben Direct3D nur ein paar mal machen und kann die Grafikkarte die tausenden von Dreiecken durchlaufen und rendern lassen.Sind die lightmaps erst einmal zusammen gefasst, muss ich natürlich auch noch prüfen, ob einige "Einzel-Lightmaps" sich wiederholen, z.B. nur helle oder nur schwarze die sicherlich recht häufig vorkommen, um so viel Platz zu sparen wie möglich. Schließlich kommen bei großen Szenen manchmal über 100.000 Dreiecke zusammen. Und 100.000 Texturen ist nun auch wieder Mist.
Danke übrigens für euren Rat
Mfg Lukas
-
eine der bekanntesten seiten dazu: http://www.blackpawn.com/texts/lightmaps/default.html
wie du siehst, hat man manchmal vorteile die dreiecke nicht einzeln zu sehen sondern moeglichst als quads anzufassen, wie du sicherlich auch schon im quake sourcecode entdeckt hast... ich wollte es nur nochmal erwaehnen
-
Ja klar, das hat sicher auch Vorteile. Ich habe das so gelöst, dass ich in eine "Einzel-Lightmap" immer zwei Dreiecke packe.
Also so in etwa:
*-------* | 1. / | | / | | / 2. | *-------*