【发布时间】:2012-07-25 16:15:30
【问题描述】:
我正在尝试在多边形内绘制径向渐变。我的舞台是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);
}
使用圆形多边形会导致:
【问题讨论】:
标签: opengl-es glsl fragment-shader