2012-06-25 12 views
7

Ich habe erfolgreich eine cel Shader mit GLSL implementiert. Aber mein Problem ist es, alles zu umreißen und jedes Beispiel von opengl im Internet ist ziemlich alt, stimmt nicht mit der aktuellen Technologie überein, also mit langsamen Techniken usw. ... So konnte ich sowieso nicht finden, es in glsl zu machen. Ich habe über einige Ideen nachgedacht, wie zum Beispiel das Färben der am wenigsten intensiven Bereiche schwarz, aber es gibt nicht einmal genug Erklärungen über gl_Vertex, gl_Position und Augenpositionen. Da jede Technik zu alt ist, habe ich mich schließlich entschieden, jemanden nach diesem Umrissproblem zu fragen.OpenGL GLSL Cel Shading und Gliederungs Algorithmus

Antwort

9

I eine Art von Kantenerkennungsfilter auf dem ZBuffer verwenden würde (potentiell mit Kantendetektion auf dem Farbpuffer kombiniert werden könnte) und dann den mit dem Rahmenpuffer (invertiert) Ergebnis modulieren. Eines der am häufigsten verwendeten Kantenerkennungsfilter ist die Sobel-Operator:

http://en.wikipedia.org/wiki/Sobel_operator

EDIT: Eine weitere günstige Möglichkeit, dies zu tun ist, bevor Sie das gewöhnliche Masche ziehen eine schwarze Kopie des Netzes mit Keulung machen zugewandt invertiert und die Scheitelpunkte leicht in Richtung Normale bewegt. Das ist wahrscheinlich das, was sie in XIII gemacht haben, ich bin mir auch ziemlich sicher, dass es so in Jet Set Radio gemacht wurde.

EDIT2: Wenn die Dicke des Umrisses unabhängig von der Entfernung zum Betrachter konstant sein soll, sollten Sie den Betrag, um den Sie die Scheitelpunkte verschieben, skalieren.

+1

Ich denke, es für einen einfachen Überblick zu teuer ist. – deniz

+0

Auf welche Art von Hardware zielen Sie? –

+0

wie x1650pro gleichwertig. XIII Spiel tut es irgendwie mit der Anforderung an wirklich alte Hardware. – deniz

1

Haben Sie bei glPolygonOffset geschaut?

ich verwendet habe, skizziert auf gefüllten Polygone zu zeichnen.

http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPolygonOffset.xml

+0

Sie sagen jedoch nichts über Ihre Herangehensweise, die nicht offensichtlich ist, und die die Antwort nicht sehr nützlich macht. Ich gebe deinen Standpunkt zurück, wenn du es tust :) –