因为只有DepthCamera视口中的顶点才会被渲染到DepthTexture,而实际渲染是NormalCamera控制
// file:unlit_receive_shadow.frag void main() { // float shadow = ShadowCalculation(v_shadow_camera_gl_Position); // o_fragColor = texture(u_diffuse_texture,v_uv) * v_color * (1-shadow); //首先,将传入参数中的x,y,z三个分量除以第四个分量w,得到投影坐标proj_coords。 vec3 proj_coords = v_shadow_camera_gl_Position.xyz / v_shadow_camera_gl_Position.w; //将投影坐标映射到范围[0,1] proj_coords = proj_coords * 0.5 + 0.5; o_fragColor = vec4(proj_coords.x,proj_coords.y,proj_coords.z,1.0); }
// file:unlit_receive_shadow.frag void main() { // float shadow = ShadowCalculation(v_shadow_camera_gl_Position); // o_fragColor = texture(u_diffuse_texture,v_uv) * v_color * (1-shadow); //首先,将传入参数中的x,y,z三个分量除以第四个分量w,得到投影坐标proj_coords。 vec3 proj_coords = v_shadow_camera_gl_Position.xyz / v_shadow_camera_gl_Position.w; //将投影坐标映射到范围[0,1] proj_coords = proj_coords * 0.5 + 0.5; o_fragColor = vec4(proj_coords.x/10.0,proj_coords.y/10.0,proj_coords.z,1.0); }
因为只有DepthCamera视口中的顶点才会被渲染到DepthTexture,而实际渲染是NormalCamera控制