Ich versuche eine einfache 2D Light Engine auf meinem Spiel basierend auf libGDX zu implementieren. Die Idee ist, diese Light Engine ohne Shader zu erstellen. Ich habe nicht vor, für den Moment einen Schatten zu machen. Ich habe es geschaffen, eine Licht-Karte mit Dreiecken und Steigungen zu machen, aber das Problem ist, dass, wenn die Quelle mehr Lichts überlappt ich in diesem Bild wie einige Artefakt bekam:2D Licht diffuse Kartenartefakt
die gelbe Lichtquelle einen dunkel ist Producting Grenze bei der Überlappung der anderen Lichtquellen.
Ich verwende die folgende Mischung Funktion, die Lichter zu machen:
Gdx.gl.glBlendFunc(GL20.GL_ONE, GL20.GL_ONE);
Gibt es eine Möglichkeit dieses dunklen Grenze loswerden?
Der Farbverlauf reicht von gelb bis schwarz volle Deckkraft. Als GL_ONE
soll additiv sein, sollten die Farben nur heller werden oder?
Update 1:
Mit Shader wie von Nico Schertler erklärt ist auf jeden Fall besser, aber es gibt noch einige Parameter Ich bin nicht sicher.
hier ist das Fragment-Shader-I mit
void main() {
float intensity = 0.02;
vec2 pos = vPosition;
float dist = distance(pos, u_origin)/u_radius;
vec4 color = vec4(intensity * (vColor.rgb/((dist * dist) + 0.01)), 1);
gl_FragColor = color;
}
das Problem ist, ich kam, dass über die Konstanten nicht sicher bin intensity = 0.02
und 0.01
ich auf die Funktion hinzugefügt haben, um es schön aussehen . Außerdem ist die Radiusvariable jetzt das Maximum zwischen Bildschirmhöhe und -breite.
Update 2:
Ich habe schließlich für die folgende Gleichung entschieden:
void main() {
float dist = distance(vPosition, u_origin)/u_radius;
vec4 color = vec4((vColor.rgb)/(pow(dist, 2) + 0.01), vColor.a);
gl_FragColor = color;
}
Dann mit einer Okklusion Karte kombiniert (abzudunkeln unbeleuchtete Plätze) basiert auf der gleichen Gleichung. Hier ist die endgültige Ausgabe:
Das dunklere Band eine Illusion ist. Sie können die Werte gerne mit jedem Grafikeditor überprüfen und sehen, dass sie nicht dunkler sind. Zurzeit scheint es, dass Sie nicht mit sRGB rendern, aber Sie sollten. Auch andere Dinge, wie der quadratische Falloff, werden das wahrscheinlich überdecken. – ybungalobill