Ich bin neu in Shadern und weiß, dass Sie mit gl_FragColor Pixel färben können, aber manchmal gibt es Folgendes:
vec2 uv = gl_FragCoord.xy / screenSize; // or resolution or smthn depends on the implementation
Wenn gl_FragCoord wie Pixelkoordinaten ist, was bekommt UV ?
Warum wird es oft in GLSL gemacht?
Wenn jemand ein Beispiel dafür zeichnen könnte, welcher Teil des Bildschirms UV-Strahl ist, ist dies sehr hilfreich!
gl_FragCoord
Attribut durchführt.Antworten:
Erstens
gl_FragCoord.xy
sind Bildschirmraumkoordinaten des aktuellen Pixels basierend auf der Größe des Ansichtsfensters. Wenn die Größe des Ansichtsfensters also istwidth=5
,height=4
enthält jedes Fragment:Warum werden UVs benötigt? Zum Beispiel habe ich Geometrie gerendert, um Quad zu screenen, und dann muss ich in einem anderen Rendering-Durchgang eine Nachbearbeitung auf dieses Quad anwenden. Um von diesem Quad abzutasten, benötige ich Texturkoordinaten im Bereich [0, 1]. Um sie zu berechnen, führe ich eine Division durch
gl_FragCoord.xy / viewPortSize
.quelle
GL_TEXTURE_RECTANGLE_ARB
keine normalisierten Koordinaten verwendet werden,GL_TEXTURE_*D
Texturen jedoch.Einzelheiten und Beispiele finden Sie in der hervorragenden Antwort von narthex.
Wenn Sie wollen Karte die Pixelkoordinatenwerte auf den Bereich 0 bis 1 , teilen Sie von Viewport.
quelle