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

Aktuelle Zeit: Do Mär 28, 2024 21:12

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



Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Do Mär 10, 2016 20:42 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

ich arbeite gerade an einem Hair-System und ueberlege ob und wie es moeglich ist Haare auf der GPU zu interpolieren.

NVidia scheint das zu tun, wie man in diesem Video sehen kann:
http://on-demand.gputechconf.com/gtc/20 ... -games.mp4


In meinem Fall habe ich auch ein Control-Hair pro Vertex, und mir ist klar wie ich mein Triangle-mesh mit dem Tesselation shader tessellieren kann, allerdings habe ich dann ja keine informationen zu den jeweiligen 3 control hairs pro triangle...?

Oder ist die idee das ich, wenn ich z.B. 6 CVs pro haar habe, das ich dann 6 vertex-buffer extra erstelle die ich dann im tesselation shader interpoliere und im geometry shader zu lines umwandle?

Also etwa so (pseudo code)
Code:
  1. in vec3 cv0;
  2. in vec3 cv1;
  3. // ...
  4. in vec3 cv5;
  5.  
  6. void main()
  7. {
  8.   gl_Position = cv0;
  9.   EmitVertex();
  10.  
  11.   gl_Position = cv1;
  12.   EmitVertex();
  13.  
  14.   // ...
  15.  
  16.   gl_Position = cv5;
  17.   EmitVertex();
  18.  
  19.   EmitPrimitive();
  20. }



Oder uebersehe ich irgendwas, wie ich das alles viel geschickter geht? :)


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo Mär 14, 2016 15:39 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2621
Wohnort: Berlin
Programmiersprache: Go, C/C++
NV hat Ihre Haarbibliothek auf basis von TressFX entwickelt und da gibt es einige Dispute zwischen AMD und NV deswegen.
Dies z.B. ist recht aktuell.
AMD arbeitet aktuell daran, ihren kompletten Code offen zu legen TressFX hat das schon getan und man kann sich das recht gut angucken, wie es funktioniert.

Hairworks ist closed source, kostet Geld und ist auf NV Karten optimiert, läuft schlechter auf Intel und AMD.
TressFX ist open source, kostenlos und läuft auf allen Karten gleich gut aber gibt nur DX11 und Windows(läuft auch angepasst auf PS4) Support.
Es macht also schon Sinn aktuell es noch selber zu machen.

Hier findest du bei den Links einige Slides zur Technik.
Wenn ich mich recht erinner, dann werden größere Chunks per Geometry Shader gebaut(Quad/Quadstripe, wo die 4/N*4 eckpunkte die aktuelle Position, velocity, direction enthalten).
Also die Linie wird auf der Normal extrapoliert und die Daten übernommen, gibt auch Viewport ausgerichtete Ansätze.
Der Tesselation Shader kann dann so ein Chunk tesselieren.
Verdrängung durch andere Körper gibt es echt ne menge Möglichkeiten und ich weiß nicht ob es da eine Allgemein gute Lösung gibt, alles was ich bisher gesehen hatte war ziemlicher beschiss oder nur in kleinen Rahmen nutzbar.
Je nach Generation kann man das ganze mit Transformfeedback, OpenCL, Compute Shader simulieren(schätze für Vulkan gibt es da auch schon was).

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 13 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.040s | 19 Queries | GZIP : On ]