0
2D 조명에 사용하는 간단한 GLSL 프래그먼트 셰이더가 있습니다. 라이트의 반경 및/또는 강도를 구현하기 위해이를 수정하는 방법이 있습니까? 현재 사용 가능한 유일한 수정은 상수/선형/2 차 광 감쇠입니다. 강도 매개 변수로 단 곱셈 밝은 색상 -2D GLSL 가벼운 반경/강도
여기에 (하지 현대 OpenGL을 업데이트) 현재의 쉐이더 코드
uniform vec2 lightpos;
uniform vec4 lightColor;
uniform float screenHeight;
uniform vec3 lightAttenuation;
uniform float radius; //Doesn't do anything
uniform float intensity; //Doesn't do anything
uniform sampler2D texture;
void main()
{
vec2 pixel=gl_FragCoord.xy;
pixel.y=screenHeight-pixel.y;
vec2 aux=lightpos-pixel;
float distance=length(aux);
float attenuation=1.0/(lightAttenuation.x+lightAttenuation.y*distance+lightAttenuation.z*distance*distance);
vec4 color=vec4(attenuation,attenuation,attenuation,1.0)*lightColor;
gl_FragColor = color;//*texture2D(texture,gl_TexCoord[0].st);
}
현실 세계의 빛에는 반지름이 없습니다. 이 임의의 반경에서 그들과 정확히 무슨 일을하고 싶습니까? –
강도는 법선이 밝은 위치와의 거리로 계산할 수 있습니다. 죄송합니다. 어떤 코드도 제공 할 수 없지만 그 뒤에있는 이론이어야합니다. – Bisder