0

我正在制作一个 2D 横向卷轴游戏,我目前正在实现灯光。灯光只是在地形顶部渲染的灯光渐变纹理,相乘以使其照亮该区域。但是,我不知道怎么做,也不知道怎么做环境光。下图总结了我所拥有的,底部是我想要的。

在此处输入图像描述

我愿意接受有关着色器的答案,因为我知道如何使用它们。

4

1 回答 1

1

我最终创建了一个屏幕大小的 FBO 纹理,用环境颜色清除它,并在所有附近的灯光中绘制。然后,我将它通过一个我制作的着色器,该着色器包含 2 个制服纹理。要绘制的纹理和灯光 FBO 本身。着色器将使用 FBO 绘制的纹理相乘,效果很好。

氛围.frag

uniform sampler2D texture1;
uniform sampler2D texture2;
varying vec2 texCoord;

void main( void ) {
    vec4 color1 = vec4(texture2D(texture1, gl_TexCoord[0].st));
    vec4 color2 = vec4(texture2D(texture2, texCoord));
    gl_FragColor = color1*vec4(color2.r,color2.g,color2.b,1.0);
}

氛围.vs

varying vec2 texCoord;
uniform vec2 screen;
uniform vec2 camera;

void main(){
    gl_Position = ftransform();
    gl_TexCoord[0] = gl_MultiTexCoord0;
    vec2 temp = vec2(gl_Vertex.x,gl_Vertex.y)-camera;
    texCoord = temp/screen;
}
于 2013-08-13T20:20:53.707 回答