Polygon 内に放射状のグラデーションをペイントしようとしています。私のステージは600x320
です。グラデーションを描くことはできますが、「歪んでいる/引き伸ばされています」。目標は、ライトが生成するようなグラデーションです。
u_lightPosition
相対値として渡されます: {0.5, 0.5}
.
現在未使用は絶対値lightPositionAbsolute
として渡されます。 {300.0, 160.0}
現在、私のフラグメントシェーダーは次のようになっています。
#ifdef GL_ES
precision lowp float;
#endif
varying vec4 v_fragmentColor;
uniform vec2 u_lightPosition;
uniform vec2 u_lightPositionAbsolute;
uniform vec4 u_outerColor;
uniform vec4 u_innerColor;
uniform float u_radius;
void main()
{
vec2 resolution = vec2(600,320);
vec2 position = ( gl_FragCoord.xy / resolution.xy );
float distanceFromLight = length(position - u_lightPosition);
gl_FragColor = mix(u_outerColor, u_innerColor, distanceFromLight);
}
円ポリゴンを使用すると、次のようになります。