Texturen in VRam und MipMapping aktivieren
Übersicht

![]() |
imagodespiraBetreff: Texturen in VRam und MipMapping aktivieren |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich lese immer, dass man die Texturen ins Vram machen soll damit es schneller wird...
Gibt es eine Möglichkeit Texturen ins VRam zu setzen und MipMapping aktiv zu halten? Danke, |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nein gibt es nicht.
VRAM ist für Texturen die nicht mehr verändert werden. Wenn man dies jedoch mit Mipmap Texturen machen würde, würde sich der Speicherverbrauch einer Textur verdoppeln. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
imagodespira |
![]() Antworten mit Zitat ![]() |
---|---|---|
... gut, aber wozu ist das mit dem VRam dann gut? Sieht nicht so toll aus, da kann ich machen was ich will... | ||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
VRAM is dann gut wenn du Texturen reinladen willst, die sich nicht ändern.
Sagen wir Terraintexturen oder allgemein Texturen von statischen Dingen. Auch Particlesystem Texturen und dergleichen kann man in den VRAM packen. Sobald man aber etwas dynamisch mit der Textur machen will ( drauf rummalen oder auf sie zugreifen als auch Mipmapping ), ist die VRAM Flag unbrauchbar. Mit DDS wäre VRAM + Mipmap etwas anderes, dann wäre Textur + Mipmap im VRAM kleiner als aktuell die Textur alleine von der bedeutend höheren Ladegeschwindigkeit von Mipmap Texturen abgesehen ( da keine Mipmaps mehr erzeugt werden müssen ) |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
imagodespira |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke für die Antworten ![]() Wenn Du sagst für statische Dinge. Wenn ich eine Textur im VRam ablege und auf ein Terrain lege, dann darauf herumlaufe sieht es ziemlich mies aus ohne MipMapping, also pixelig ohne Ende. Deshalb nehme ich das auch nicht... Bedeutet "laufen" für dich schon NichtStatisch?? ![]() Danke! |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hmm das Problem hab ich net, liegt aber vielleicht auch an der Hardware oder an der niedrigen Sichtweite die ich in meinen Spielen hab ( 700-1000. Ergibt mit CamZoom ~0.7 gute Resultate finde ich) | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Suco-XBetreff: ...... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Völliger Quatsch,dreamora. Gerade texturen die verändert werden, sollten in den Vram, nicht umgekehrt. Durch das setzen der Texturen in den Vram sind ja gerade Effekte Wie Blur/Echtzeit Schatten/Cubemapping so schnell möglich.
EDIT Oh, ganz vergessen. @Imago : Du solltest die texturen die du nicht bearbeitest aus dem Vram lassen, genau wegen diesem Pixelbrei Problem. Texturen die nicht bearbeitet werden sind sogar langsamer im Vram. Denn nur die Bearbeitung der Texturen im Vram sind gerade das flotte an der ganzen geschichte. Was im Normalen Ram nicht der fall ist. Bye |
||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Stimmt nur für neue Grafikkarten
Wenn du auf ner GF4 MX zb die Textur in den VRAM packst und dann glaubst du könntest auf der textur noch rumpfuschen, dann wirste ein sehr sehr böses Erwachen erleben! Die neueren Grafikkarten haben damit kein Problem, aber nicht alle zielen mit ihren Projekten auf Shaderhardware only. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
bruZard |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Dreamora
Wer hat Dir das erzählt? Ich teste den Shadow-Code der Timemill-Engine unter anderem auch auf einer MX480 und es ist tatsächlich so dass VRAM Manipulationen auch dort wesentlich schneller (und ohne Zicken) erledigt werden. Das hat nichts mit Shader-Möglichkeiten zu tun. |
||
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32
User posted image |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hat mir garniemand erzählt, ich sehe es täglich.
Wenn du eine Textur in den VRAM setzt und in Echtzeit daran herummanipulierst wird sie EXTREM langsam! Wenn du auf ne VRAM Textur zeichnest, muss die erst aus dem VRAM in den SystemRAM geholt werden, dann wird drauf gezeichnet und dann wird sie an den VRAM zurück gesandt ( Modifikationen im VRAM sind nur Shadern möglich ) Wenn sie allerdings nicht VRAM ist, erspart sich das runter und zurückkopieren. Wenn man es nur 1x Mal macht wird kein wirklicher Unterschied da sein. Aber wenn du mehr oder weniger Echtzeitoperationen daran vornimmst, wirds duster mit VRAM Texturen, das übersteigt ganz einfach die Hardwaremöglichkeiten. Bei meinem aktuellen Projekt habe ich 300 FPS wenn ich die Textur im Systemram lasse um die Wasseranimation darauf zu zeichnen und noch 40 FPS wenn ich sie in den VRAM lege ( und wir reden hier net von ner Spielzeugkarte, ist immerhin ne ATI Radeon 9700 ) genutzter Texturspeicher 14MB/64MB |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
imagodespira |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es klingt alles sehr interessant, was ihr so schreibt ![]() Wieso testen wir das nicht mit einer kleinen "TechDemo"? ... ich würde helfen, nur hab ich noch nichts mit Texturmanipulationen gemacht. Interessieren würde mich z.B. brennend, ob man ähnliche Wasserreflektionen wie in aktuellen Spielen hinbekommt. Nicht nur CubeMapping auf einer Fläche sondern dieses kombiniert mit wellen, die irgendwie in der Textur berechnet werden... jedenfalls stelle ich mir das so vor, weiss nicht ob ich richtig liege. Einige Ideen? @Dreamora: Wie sehen Deine Wasseranimationen aus, sieht man sehr, dass da kein Mipmapping drauf ist, wenn du die Texturen in den VRam machst? Da sehe ich mein Problem: dass es mir nicht gefällt ohne Mipmapping.... das Pixelige geht mir ziemlich auf den Geist und sieht sicher nicht so toll aus, wenn alles andere drumherum mit Mipmapping gemacht ist und das eine nicht... |
||
![]() |
imagodespira |
![]() Antworten mit Zitat ![]() |
---|---|---|
so, ich habe mir mal hier den Code genommen und mit den Texturflags herumgespielt:
https://www.blitzforum.de/viewtopic.php?t=1035 (Autor Markus2) Ich weiss nicht, ob es der ideale Test ist aber hier werden Texturen verändert.... Ohne Die Textur in den VRam zu laden: 26 fps Textur im VRam: 14-15 fps (Radeon 9600XT mit 256 MB Ram, AthlonXP 2200+, 768Mb SDRam, 800x 600 fullscreen, texturgröße 256x256) |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich brauche die Wasseranimationen lediglich für "Bodenreflektionen" da ich an einem Unterwasserspiel arbeite.
Hier ist die kleine Testapp bzw ich hab einfach den aktuellen experimentalbuild modifiziert für die neinsager hier. http://gfx.dreamora.net/aquana.zip Ich kann auch noch ein anderes Sample machen opensource. Mit aktuellen Grafikkarten tritt das Problem nicht auf bei Lockbuffer-Unlockbuffer und Writepixel. Bei alten Grafikkarten ist alleine das Echtzeit - gelocke ein Problem. Aber selbst bei aktuellen Grafikkarten ist VRAM + drauf rummalen nicht drin wie das beispiel zeigt. ( programmablauf für beide seiten identisch nur die ladeflag ist unterschiedlich ) |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Suco-XBetreff: ...... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hmm..Ja, tut mir leid. Ich kann nicht zwischen 85 und 85 fps unterscheiden.
Man nehme doch bei solchen tests immer Flip 0. Source sollte ja bei einem Speed Test wen möglich auch dabei sein, falls der ersteller Fehlerhaft Arbeitet. bye |
||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
![]() |
imagodespira |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Suco-X: vielleicht hast du im Treiber VSynk aktiviert???
Bei mir: mit Tex in VRam: 105 fps mit Tex im SysRam: 270 fps |
||
![]() |
Suco-XBetreff: ..... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Natürlich habe ich das Aktiviert, ist meistens Standard so. Hätte ich es nicht Aktiviert würden hier 80 % der Games die ich Teste mit 300 fps entlang laufen,unspielbar. Völliger Schwachsinn das zu Aktivieren. Besonders weil er mit ner kleinen "0" abhelfen kann.
Mfg Suco |
||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
![]() |
imagodespira |
![]() Antworten mit Zitat ![]() |
---|---|---|
... mit der "0" wird es doch meiner Meinung nach auch deaktiviert, warum also nicht im treiber selbst mal ausschalten und kurz testen...
natürlich sind Spiele mit 300Fps unspielbar, solange sie keine Framebegrenzung oder eine Zeitabhängige Steuerung der Geschwindigkeiten haben... aber zum testen möchte ich doch gerne Wissen was mein System so schafft. in meinem aktuellen Projekt habe ich inzwischen ca. 100.000 Polygone+ Tokamak-Physik usw... da schaffe ich die 300 längst nicht mehr, da bin ich bei max. 80 fps mit deaktiviertem VSync, und aktivieren bringt meiner Meinung nach bei mir auch nix, weil ja die fps nach der Bildwiederholfrequenz ausgerichtet werden, die ist bei 100Hz... aber das ist ein anderes Thema ![]() Mein Fazit bis jetzt: Ich denke dank den Tests bin ich nun ein wenig weiter gekommen mit VRam an oder aus. Wenn ich an der Textur was herumspielen will, dann lass ich es aus ![]() Danke trotzdem Euch beiden für die Denkanstöße ![]() |
||
![]() |
Suco-XBetreff: ..... |
![]() Antworten mit Zitat ![]() |
---|---|---|
So, habe nun selbst mal ein Test mit Code geschrieben.
Ergebniss : Video + VRam gleichschnell, bei Texturgröße von 512x512. Bei Texturgröße von 256x256 ist Vram bei mir 10 fps langsamer. Also testet mal. Ich meinte von ANfang auch auch nicht unbedingt diese Art texturen zu Manipulieren. Meinte die CopyRect variante. Und Dabei ist der Vram um vielfaches schneller als Sysram. Müsste man mal testen ob sich da was umgehen lässt. Code: [AUSKLAPPEN] Global TFPS Global FPS Global TimerFPS Const tex_size = 512 Const tex_flag=256 Graphics3D 1024,768,16,2 SetBuffer BackBuffer() camera = CreateCamera() PositionEntity camera,0,0,-5 CameraClsColor camera,200,200,200 cube = CreateCube() textur = CreateTexture(tex_size,tex_size,tex_flag) EntityTexture cube,textur Repeat TurnEntity cube,0,1,0 LockBuffer TextureBuffer(textur) For x = 0 To tex_size-1 For y = 0 To tex_size-1 WritePixelFast(x,y,$FFFF,TextureBuffer(textur)) Next Next UnlockBuffer TextureBuffer(textur) RenderWorld UpdateWorld Color 255,0,0 ShowFPS() Text 0,20,"Textur Flag: "+tex_flag Flip 0 Until KeyHit(1) Function ShowFPS () TFPS = TFPS + 1 If MilliSecs () - TimerFPS => 1000 Then TimerFPS = MilliSecs () FPS = TFPS TFPS = 0 End If Text (0,0,"FPS : "+FPS) End Function Mfg Suco |
||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
![]() |
imagodespira |
![]() Antworten mit Zitat ![]() |
---|---|---|
... mein Letztes Wort für heute ![]() Texturgröße: 512 Vram an: 49 fps Vram aus: 11 fps Texturgröße: 256 VRam an: 169 fps Vram aus: 135 fps Wie zu sehen, merke ich den Unterschied bei großer Textur mehr... Bei Vram an ist es wie zu erwarten ca. 4x langsamer (grob:))bei grosser Textur. der Einbruch bei 512er Texturgröße und VRam aus ist erschreckend, wahrscheinlich wegen den Operationen in meinem Langsamen SD-Ram, keine Ahnung... |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
imagodespira: du hast das an / aus glaub verwechselt ![]() Wenn man normale Drawbefehle gibt zeigt sich der Unterschied übrigens noch bedeutend mehr. Lockbuffer und Writepixelfast sind ein wenig hardwareabhängig ... Auf neuen Karten läufts ziemlich gut. Auf alter Hardware hingegen gibts noch schnell ma den Löffel ab. Leider ist es bei grossen Texturen nicht zu umgehen da dort die Drawbefehle zu langsam werden. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group