OpenGL-GLSL Cel Shading und Outline-Algorithmus
Habe ich erfolgreich eine cel-shader mit glsl. Aber mein problem ist, über die Gliederung, die alles und jedes Beispiel von opengl auf das internet ist ziemlich alt, nicht mit der aktuellen Technologie, so langsam Techniken etc... deshalb konnte ich nicht finden, trotzdem tun es in glsl. Ich dachte über einige Ideen, wie einfärben wenigsten intensiven Bereichen, in schwarz aber gibt es nicht schon genug Erklärung über gl_Vertex, gl_Position und augenposition. So, da jede Technik ist zu alt, ich habe schließlich beschlossen, jemanden zu bitten, über diesen Umriss problem.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde eine Art von edge-detection-filter auf der zbuffer (möglicherweise verbunden mit edge-detection, die auf der color-buffer) und dann modulieren Sie den framebuffer mit der (umgekehrten) Ergebnis. Eine der häufigsten edge-detection-Filter der sobel-operator:
http://en.wikipedia.org/wiki/Sobel_operator
EDIT: eine Andere billige Art und Weise dies zu tun ist, bevor Sie Rendern die normalen mesh zeichnen Sie eine schwarze Kopie der mesh mit Keulen Verkleidung invertiert und die Ecken leicht verschoben in Richtung der normalen. Dies ist wahrscheinlich das, was Sie Tat, XIII, ich bin auch ziemlich sicher, dass dies ist, wie es gemacht wurde in Jet Set Radio.
EDIT2: Wenn Sie möchten, dass die Dicke der Kontur konstant, unabhängig von der Entfernung zum Betrachter, Sie sollten das Ausmaß verschieben Sie die vertices mit dieser Entfernung.
Haben Sie sich glPolygonOffset?
Ich habe es verwendet, um zu zeichnen die Umrisse auf die Oberseite der gefüllten Polygonen.
http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPolygonOffset.xml