Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Di Jun 04, 2024 03:38

Foren-Übersicht » Programmierung » Shader
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Schreibzugriff auf Texturen ???
BeitragVerfasst: Di Jul 27, 2004 07:27 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jul 16, 2003 15:20
Beiträge: 198
Morgen,
ich hab gerade ein Recht interessantes Whitepaper im NVIDIA-SDK gefunden, indem es darum geht wie man das Verhalten von Blut(oder ähnlichem)
auf einer Oberfläche auf der GPU berechnen kann. In diesem Paper steht follgendes :
Zitat:
The height map is
defined in the unused b component of the gravity map.

(die Gravity map ist eine Textur) so wie ich den Rest des Papers verstanden habe, wird in jedem Frame die Heighmap(die die Höhe der Flüssigkeit angibt) neu berechnet und somit müsste auch die Textur von dem Shader jeden Frame aktuallisiert werden. Das beiligende BSP nutzt leider HLSL und DX9 daher werde ich daraus nicht wirklich schlau. Also meine Frage ist :
1.Kann man auch mit glSlang in Texturen schreiben (wenn ja : wie) ?
2.Gibt es überhaupt eine möglichkeit werte aus einem Shader im nächsten Frame weiterzuverwenden ?

mfG
Thomas

_________________
Bevor du definierst, was etwas ist, versichere dich seiner Existenz.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jul 27, 2004 10:03 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Ich hab mir das Whitepaper vom Bloodshader auch angesehen, aber da steht doch nirgendwo drinne dass in irgendeine Textur etwas reingeschrieben wird, denn das geht so ohne weiteres nicht (und wenn ich mich irre, dann zitiere doch mal die Stelle aus dem Paper wo drinnesteh dass sie in die Textur schreiben).
Um mittels DX9 HLSL oder glSlang (wobei glSlang mehr kann) eine Textur zu verändern muss man momentan nämlich einen indirekten Weg über Offscreen-Puffer (PBuffer) gehen und diese dann in jedem Frame als Textur hochladen. Es geht also schon, bloß nicht direkt.
Und wenn die Heightmap wirklich in jedem Frame neuberechnet werden sollte, dann würde man das wohl eher auf der CPU machen, da obiger Umweg nicht das Wahre ist.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jul 27, 2004 20:09 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jul 16, 2003 15:20
Beiträge: 198
Zusammen mit obiger Stelle gesehen habe ich aus follgender Stelle geschlossen, dass die Textur verändert wird :
Zitat:
The final product of this shader is a continuously changing height map with a 2-D
gravity induced directional vector defined at each point
Den so wie ich das verstehe Verändert sich das Heighmap, dass in der Textur ist ständig, und somit müsste sich die Textur mitverändern....


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jul 27, 2004 20:15 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Aha, dann wirds aber wohl so gemacht wie ich oben gesagt habe. Eine Heightmap ist ja im Normalfall nicht sonderlich groß, und muss dann ja auch nicht Frame für Frame berechnet werden. Sowas macht man dann wie gesagt meist auf der GPU, denn wenn man Texturen per Shader erstellen will (die man später auslesen will, also nicht zu verwechseln mit prozeduralen Shadern die man nur anzeigt) muss man dass über einen Offscreen-Puffer machen, was dann aber im Endeffekt meist aufwendiger ist als der Weg über die CPU.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jul 28, 2004 19:11 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jul 16, 2003 15:20
Beiträge: 198
Gut zu wissen.Ich glaub ich werd mal gucken, was ne mehr Zeit braucht GPU und PBuffer oder CPU.
Noch eine kleine Frage am Rande :
Was ist ein Offscreen-Buffer ? (Eine Textur, die jeden Frame auf die Grafikkarte geladen wird ???)

_________________
Bevor du definierst, was etwas ist, versichere dich seiner Existenz.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jul 28, 2004 19:22 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Offscreenpuffer werden unter OpenGL als Pixelpuffer offengelegt. Das ist quasi ein eigener (komplett eigenständiger) Renderkontext der im VRAM liegt und wie ein normaler RC genutzt werden kann. Der kann dann später auch als Textur benutzt werden.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Foren-Übersicht » Programmierung » Shader


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 8 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.119s | 15 Queries | GZIP : On ]