我试图在本文后面的libGDX中创建海浪: http://www-evasion.imag.fr/Publications/2002/HNC02/wavesSCA.pdf
一切正常,但是当我尝试使用反射阴影遮挡我的三角形网格时,阴影不平滑且非常不稳定。我只是将顶点法线传递给网格,而不是表面法线,但我真的不知道如何传递曲面法线。这是我的screenshot。
以下是我的着色器: -
[vertexShader]
attribute vec3 a_position;
attribute vec3 a_normal;
attribute vec2 a_texCoord0;
uniform mat4 u_worldTrans;
uniform mat4 u_projTrans;
uniform mat4 u_viewTrans;
varying vec3 pos_eye;
varying vec3 nor_eye;
void main() {
pos_eye = vec3 (u_viewTrans * u_worldTrans * vec4 (a_position, 1.0));
nor_eye = vec3 (u_viewTrans * u_worldTrans * vec4 (a_normal, 0.0));
gl_Position = u_projTrans * u_worldTrans * vec4(a_position, 1.0);
}
[FragmentShader]
#ifdef GL_ES
precision mediump float;
#endif
varying vec3 pos_eye;
varying vec3 nor_eye;
uniform samplerCube u_environmentCubemap;
uniform mat4 u_viewTrans;
uniform mat4 u_inverseViewTrans;
void main () {
vec3 incident_eye = normalize (pos_eye);
vec3 normal = normalize (nor_eye);
vec3 reflected = reflect (incident_eye, normal);
reflected = vec3 (u_inverseViewTrans * vec4 (reflected, 0.0));
gl_FragColor = vec4(textureCube(u_environmentCubemap, reflected).rgb, 1.0);
}
我花了很多时间使阴影平滑,我也试过使用帧缓冲,但我无法达到预期的效果。如果有人可以帮我平滑着色,那将非常有帮助。 谢谢