Tagged: 

Viewing 1 reply thread
  • Author
    Posts
    • #16247 Score: 0
      minisparks
      Participant

      我在自己试图实现VSSM的时候发现阴影上有很多不自然的条纹,检查glsl代码后发现在计算blocker平均深度Zocc的时候Zocc这一项有时会为负数,请问有人遇到过这种问题吗,怎么规避这一点呢?
      关键glsl代码我贴在下边了,恳请大家帮忙指正。

      
      "   vec4 brightFragColor = ambient+diffuse+specular;\n"
      "	float lightDepth = texture(depthMap, vec2(LightSpaceCoord.x/2+0.5, LightSpaceCoord.y/2+0.5)).r;\n"
      "	float shadingPointDepth = LightSpaceCoord.z/2+0.5;\n"
      "	if(lightDepth+0.0005<shadingPointDepth){\n"
      "		float lightDepth2 = texture(depth2Map, vec2(LightSpaceCoord.x/2+0.5, LightSpaceCoord.y/2+0.5)).r;\n"
      "		float meanSquareErr = lightDepth2-(lightDepth*lightDepth);\n"
      "		float RatioZunocc = meanSquareErr/(meanSquareErr+(shadingPointDepth-lightDepth)*(shadingPointDepth-lightDepth));\n"//切比雪夫1
      "		float Zocc = (lightDepth-shadingPointDepth*RatioZunocc)/(1-RatioZunocc);\n"
      "		float mipLevel = 5.0*shadingPointDepth/Zocc;\n"
      "		float vlightDepth = textureLod(depthMap, vec2(LightSpaceCoord.x/2+0.5, LightSpaceCoord.y/2+0.5), mipLevel).r;\n"
      "		float vlightDepth2 = textureLod(depth2Map, vec2(LightSpaceCoord.x/2+0.5, LightSpaceCoord.y/2+0.5), mipLevel).r;\n"
      "		float vmeanSquareErr = vlightDepth2-(vlightDepth*vlightDepth);\n"
      "		float vRatioZunocc = vmeanSquareErr/(vmeanSquareErr+(shadingPointDepth-vlightDepth)*(shadingPointDepth-vlightDepth));\n"//切比雪夫2
      "		if(Zocc<0) FragColor = vec4(0.1,0.6,0.3,1.0);\n"
      "		else FragColor = brightFragColor*vRatioZunocc*0.8+brightFragColor*0.2;\n"//brightFragColor*vRatioZunocc*0.8+brightFragColor*0.2;
      "	}else{\n"
      "		FragColor = brightFragColor;\n"//vec4(0.5,0.5,0.5,1.0f)  vec4(vec3(texture(skybox, TexCoord)),1.0f)//深度cubemap测试中
      "	}\n"
      

      其中depthMap为深度图,depthMap2为其平方版本。LightSpaceCoord为光照空间下着色点坐标。

      Attachments:
      You must be logged in to view attached files.
    • #16565 Score: 0
      brendan87
      Participant

      ¿No puedes conseguir todo lo que quieres porque no te lo puedes permitir? Puedo ayudarte con eso. Un día encontré este sitio web juegging. Entra y gana mucho dinero. Con este sitio te olvidarás de cómo contar cada céntimo. ¡Date prisa y no pospongas tu oportunidad de ganar dinero!

Viewing 1 reply thread
  • You must be logged in to reply to this topic.