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

Aktuelle Zeit: Di Mai 14, 2024 06:06

Foren-Übersicht » DGL » Feedback
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 12 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: glsl-Tutorial + noise-Funktionen
BeitragVerfasst: Mi Aug 06, 2008 15:41 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 02, 2002 15:41
Beiträge: 867
Wohnort: nahe Stuttgart
Hey,

ich wollte - nach einigen langen eigenen Erlebnissen - nur mal anmerken, dass in das soweit fachlich kompetente, ausführliche und korrekte glsl-Tutorial in den Abschnitt
Zitat:
Noisefunktionen

Sowohl im Vertex als auch im Fragment Shader lassen sich Noisefunktionen nutzen, mit deren Hilfe sich einge Gewisse "Zufälligkeit" simulieren lässt (wirklich zufällige Werte sind es natürlich nicht). Ein zurückgegebener Wert liegt dabei immer im Bereich [-1..1] und ist immer bei gleichem Eigabewert auch immer gleich.

ein ganz dicker fetter Warnhinweis gehört, im Sinne von "Ist (zumindest für OpenGL 2.0) von ATI nicht in Hardware implementiert und nVidia hatte die geniale Idee, sie zwar zu implementieren, aber nur 0.0 zurückgeben zu lassen (= keine Fehlermeldung)."

MfG


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Aug 06, 2008 15:43 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7804
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Falls andere das auch bestätigen können, dann sollte das tatsächlich noch ergänzt werden.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Aug 06, 2008 16:20 
Offline
DGL Member
Benutzeravatar

Registriert: So Jun 04, 2006 12:54
Beiträge: 263
Nun die Spezifikation schreibt auch noch etwas von einer gausverteilung vor, jedoch, wurde diese abschnitt anscheinen von niemnaden gelesen...Hier ist eine implementation die fast krrekte noise liefert (die texture müsste gegebenfalls angepasst werden)
http://lumina.sourceforge.net/Tutorials/Noise.html

_________________
Lumina plattform unabhängige GLSL IDE


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Aug 07, 2008 10:29 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Aug 18, 2007 18:47
Beiträge: 694
Wohnort: Köln
Programmiersprache: Java
keine der noise Funktionen liefert einen Wert zurück. Habe mir nicht weiter gedanken drumgemacht und eine Textur benutzt. ICh werd nachher mal ins Orange Book schauen...

_________________
Es werde Licht.
glEnable(GL_LIGHTING);
Und es ward Licht.


Zitat aus einem Java Buch: "C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off"

on error goto next


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Aug 07, 2008 13:19 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 02, 2002 15:41
Beiträge: 867
Wohnort: nahe Stuttgart
Meine Recherche ergab das:
GLSL Specs 1.20.8 hat geschrieben:
Noise Functions
Noise functions are available to both fragment and vertex shaders. They are stochastic functions that can
be used to increase visual complexity. Values returned by the following noise functions give the
appearance of randomness, but are not truly random. The noise functions below are defined to have the
following characteristics:
• The return value(s) are always in the range [-1.0,1.0], and cover at least the range [-0.6, 0.6], with a
Gaussian-like distribution.
• The return value(s) have an overall average of 0.0
• They are repeatable, in that a particular input value will always produce the same return value
• They are statistically invariant under rotation (i.e., no matter how the domain is rotated, it has the same
statistical character)
• They have a statistical invariance under translation (i.e., no matter how the domain is translated, it has
the same statistical character)
• They typically give different results under translation.
• The spatial frequency is narrowly concentrated, centered somewhere between 0.5 to 1.0.
• They are C1 continuous everywhere (i.e., the first derivative is continuous)
[...]


6.1.1. Noise Functions Always Return Zero
The GLSL standard library contains several noise functions of differing dimensions:
noise1, noise2, noise3, and noise4.
NVIDIA’s implementation of these functions (currently) always returns zero results.


ATI: http://www.opengl.org/discussion_boards ... 59&fpart=1

MfG


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Aug 07, 2008 16:03 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Aug 18, 2007 18:47
Beiträge: 694
Wohnort: Köln
Programmiersprache: Java
die einzigen Karten/Treiber, die es unterstützen, scheinen wohl die von 3dlabs zu sein. zumindest legen die landschaftsdemos aus dem Orangebook das nahe. Da wird daraufhingewiesen, dass die nur mit 3dlabs karten laufen.

_________________
Es werde Licht.
glEnable(GL_LIGHTING);
Und es ward Licht.


Zitat aus einem Java Buch: "C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off"

on error goto next


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Aug 08, 2008 09:12 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2621
Wohnort: Berlin
Programmiersprache: Go, C/C++
Du solltest mal gucken, ob ein Texturlookup oder folgendes schneller ist.
int n=x+y*789221+seed;
n=(n<<13)^n;
return (1.0f-(float)((n*(n*n*15731+789221)+1376312589) & 0x7fffffff)/1073741824.0f);
Je nachdem würde ich dann eine von beiden Möglichkeiten verwenden.
Crysis nutzt z.B. Texturlookups auf eine Noisetextur für SSAO.
Also denke ich mal, werden Texturlookups auf den neueren Karten schneller sein.

_________________
"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  
 Betreff des Beitrags:
BeitragVerfasst: Fr Aug 08, 2008 11:45 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7804
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
@Whitehunter: Kannst du deine Erkenntnisse ins Wiki stellen? Du hast es recherchiert und kennst dich damit besser aus als z.B. ich. ;) Die anderen GLSLer werden dann bestimmt nochmal drüber lesen.

Erstell am besten einen Artikel mit dem Namen GLSL_Noise_Function. Den bitte auch an der Stelle verlinken die oben genannt wurde. Und auch im Abshcnitt "Hintergrundwissen" direkt unter Perlin Noise.

Falls du rausfinden kannst was die einzelnen Noise-Funktionen eigentlich machen sollten (also wie sie sich unterscheiden) dann unbedingt mit reinschreiben. Vielleicht kommts ja irgendwann doch nochmal.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Aug 08, 2008 12:56 
Offline
DGL Member
Benutzeravatar

Registriert: So Jun 04, 2006 12:54
Beiträge: 263
Ganz wichtig ist es zwischen noise und random zu unterscheiden. Zufalszahlen lassen sich noch einigermaßen schnell erzeugen. Noise dagegen ist ein in der bandbreite beschränktes rauschen, welches auf keinen fall aliasing enthalten darf. (also keine signalanteile über der halben sampling rate) Und diese bedingung kann man nur erfüllen, indem man einen linearen oder höheren filter baut, so das die noise funktion problemlos 50 bis 100 instructions verbraucht. EInetextur ist dann auf jeden fall schneller

_________________
Lumina plattform unabhängige GLSL IDE


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Aug 09, 2008 07:06 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 02, 2002 15:41
Beiträge: 867
Wohnort: nahe Stuttgart
Flash hat geschrieben:
Erstell am besten einen Artikel mit dem Namen GLSL_Noise_Function. Den bitte auch an der Stelle verlinken die oben genannt wurde. Und auch im Abshcnitt "Hintergrundwissen" direkt unter Perlin Noise.

Ich habe mal GLSL_noise angelegt und versucht, alles was gesagt wurde zusammenzufassen. In Tutorial_glsl#Noisefunktionen hab ich eine Verlinkung hinterlassen; in Hintergrundwissen hab ich direkt kein Perlin Noise gefunden.

Zitat:
Falls du rausfinden kannst was die einzelnen Noise-Funktionen eigentlich machen sollten (also wie sie sich unterscheiden) dann unbedingt mit reinschreiben. Vielleicht kommts ja irgendwann doch nochmal.

Die 4 Funktionen erzeugen lediglich jeweils 1-, 2-, 3- oder 4-dimensionale Ausgabewerte.

Es wäre wohl noch schön, wenn jemand mit aktueller ATI-Karte/-Treiber das ganze sicherheitshalber noch ausprobieren könnte, da die Infos ja alle nicht sonderlich neu sind. Ich kann derzeit nur für meine GF 8800GTS 512 mit 175.19 sprechen.

MfG


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Aug 09, 2008 12:12 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jul 20, 2006 17:34
Beiträge: 52
WhiteHunter hat geschrieben:
Es wäre wohl noch schön, wenn jemand mit aktueller ATI-Karte/-Treiber das ganze sicherheitshalber noch ausprobieren könnte, da die Infos ja alle nicht sonderlich neu sind. Ich kann derzeit nur für meine GF 8800GTS 512 mit 175.19 sprechen.


Getestet auf ner Radeon X1950 Pro mit den Treibern vom 4. Juli (aktuellste, 6.14.10.6833)
InfoLog des FragmentShaders:
Zitat:
Fragment shader was successfully compiled to run on hardware.

Und des ProgramObjects:
Zitat:
Fragment shader(s) failed to link, vertex shader(s) linked.
Fragment Shader not supported by HW

_________________
2+2=5
For extremely large values of two


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Aug 09, 2008 17:17 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 02, 2002 15:41
Beiträge: 867
Wohnort: nahe Stuttgart
Danke. Okay, dann scheint es auch dort (noch?) nicht zu gehen.

MfG


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 12 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:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.024s | 17 Queries | GZIP : On ]