Pixelshader-Frage
-
In schlimmsten Fall für noch viel mehr, Stichwort Overdraw.
-
hm, stimmt das wirklich??
man will doch nur einen bestimmten Bereich schattieren und nicht den ganzen Bildschirminhalt.
-
natürlich nur dort, wo du mit deinen polys zeichnest und auf "leeren" flächen nicht.
rapso->greets();
-
)) schrieb:
Ich würde gerne wissen wie ein Pixelshader funktioniert.
Meine erste Frage: Wird das Pixelshader-Programm für jeden Pixel der auf dem Bildschirm angezeigt werden soll aufgerufen?
Hanns schrieb:
hm, stimmt das wirklich??
man will doch nur einen bestimmten Bereich schattieren und nicht den ganzen Bildschirminhalt.
Shader != Schatten
-
Sgt. Nukem schrieb:
Shader != Schatten
lol
Was macht denn ein Shader sonst? Hab sowas noch nie benutzt, aber ich dachte er wäre für Schatten zuständig.
-
ja man kann ihn fürs schattieren benutzen wobei das nicht unbedingt was mit schatten zu tun haben muss z.b. mittels lichtquelle und bumpmap ohne einen schattenalgorithmuss dabei... cellshading ist ja auch ne art zu schattieren.
rapso->greets();
-
Pixel Shaders - What is it?
Now that we covered the basics of what is a vertex shader lets answer the question on what is a pixel shader?
Below are a few things to note about pixel shaders...
* A pixel shader is a set of instructions that is executed on each pixel of each vertex. Depending on the screen's resolution millions of pixels can be rendered at any given time.
* Just like vertex shaders, only 1 pixel shader can be active at a time.
* Pixel shaders receive close to all of its information from the vertex shader. Pixel shaders can not run alone like vertex shaders, they need a vertex shader active in order to work.Now why would anyone want to use a pixel shader?
Here are a few reasons that I came up with...
* Pixel shaders are used to achieve advance graphical techniques that can not be done otherwise and/or they are used to speed up the rendering time.
* Just like vertex shaders, with pixel shaders a programmer can customize how each pixel is rendered to the screen.How does a pixel shader work?
A pixel shader operates on each individual pixel for each vertex. Just like with vertex shaders, pixel shader source code is loaded into the hardware using various API functions.
How can you create a pixel shader?
Again like with vertex shaders all you need is a text editor. I suggest you use notepad or even your Visual C++ software to create and edit the shaders. Don't forget you will also need to have a graphics card that supports programmable shaders. Once you write the shader and save it all that is left in order to use the shader is to load it into the API (either Direct3D or OpenGL). To do this each API has various function calls that will load the code into the hardware.
-
Hanns schrieb:
Was macht denn ein Shader sonst? Hab sowas noch nie benutzt, aber ich dachte er wäre für Schatten zuständig.
Nein.
In der Quake III Engine z.B. wird "Shader" einfach nur als Textur-Animation gebraucht. Ohne daß irgendein Pixel- oder Vertexshader involviert wäre.
Ein Vertexshader ist einfach ein kleines Miniprogramm, das auf der GraKa ausgeführt wird und zwar für jedes Vertex.
Ein Pixelshader entsprechend für jedes Pixel.Z.B. könnte ein VS einfach einen Zufallswert auf den Y-Wert jedes Vertex addieren. Heraus käme eine (sehr seltsame) Wellenbewegung
billige Wasser-Ani.
Ein PS könnte einen Zufallswert auf die Farbwerte jedes Pixel addieren. Fertig ist Max Payne auf Drogen!
-
Eins frage ich mich grade noch. Wenn ein Pixelshader nur für die Punkte des Dreiecks gilt wie wird dann dieser Glow Effekt erziehlt. Soweit ich weiß Leuchtet das Objekt nicht im innern sondern nach außen wo es gar nicht mehr ist.
-
alles objeckte werden in einen extra buffer gerendert, die die nicht glüchen sind schwarz gezeichnet und die glüchenden in ihrer glühfarbe. dann wird die scene normal in den backbuffer gerendert und am ende die map über das ganze gelegt die vorher mit den leuchtobjeckten gefüllt wurde. beim zeichnen dieser "glühmap" wird ein filtering eingesetzt das 32pixel aus der "glühmap" ließtm, sie zu einem aufaddiert, dann einen durchschnittbildet und auf die backbuffer scene aufaddiert.
durch das filtern bekommt man um die objeckte den glüh effekt.rapso->greets();