libgdx中的平滑着色

时间:2016-04-03 21:03:26

标签: libgdx

我试图在本文后面的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);
}

我花了很多时间使阴影平滑,我也试过使用帧缓冲,但我无法达到预期的效果。如果有人可以帮我平滑着色,那将非常有帮助。 谢谢

0 个答案:

没有答案