-1
아래 이미지에서 볼 수있는 것처럼 프래그먼트 셰이더에 문제가 있습니다.GLSL을 사용하는 투명한 셰이더
나는 시계 방향과 반 시계 방향으로 이 발췌하는 내가 패스에있는 이미지 빨간색에있는 부분을 렌더링하고 싶지 않아 내가 카메라로 정상의 내적을 받고 있어요 위치 0 미만 제가 투명 조각 세트는 별도로 여기 fargment 폐기하면 셰이더
#version 100
precision mediump float;
varying float lightDiffuse;
void main()
{
float light = (1.0 - lightDiffuse) * 0.5;
vec3 lightColor = vec3(0.0,1.0,1.0);
vec3 diffuseColor = lightColor * light ;
vec4 c;
if(lightDiffuse <0.0)
{
// back faces, opaque
// front faces, very transparent
c = vec4(diffuseColor, 0.2);
}
else
{
discard;
}
gl_FragColor = c;
}
,691,363에게 인 (210)
#version 100
#define lowp
#define mediump
#define highp
attribute vec4 vertex;
attribute vec3 normal;
uniform mat4 normalMatrix;
uniform mat4 modelViewProjectionMatrix;
uniform mat4 modelView;
uniform vec3 camera_world_position;
varying highp float lightDiffuse;
void main()
{
gl_Position = modelViewProjectionMatrix * vertex;
vec3 norm = normal;
norm *=-1.0;
lightDiffuse = dot(normalize(vec3(norm.x, norm.y, norm.z)), normalize(camera_world_position));
}
여기에, 그것이 존재 무엇 당신이, 폐색 삼각형을 추려 깊이 버퍼를 할당하고 깊이 테스트를 사용하려면 재료 스크립트
material 44267_1508405690_0##carpaint
{
technique
{
pass
{
cull_hardware anticlockwise
scene_blend alpha_blend
vertex_program_ref char_shader2_vs100
{
param_named_auto modelViewProjectionMatrix worldviewproj_matrix
param_named_auto normalMatrix inverse_transpose_world_matrix
param_named_auto modelView worldview_matrix
param_named_auto camera_world_position camera_position
}
fragment_program_ref char_shader2_fs100
{
}
}
pass
{
cull_hardware clockwise
vertex_program_ref char_shader2_vs100
{
param_named_auto modelViewProjectionMatrix worldviewproj_matrix
param_named_auto normalMatrix inverse_transpose_world_matrix
param_named_auto modelView worldview_matrix
param_named_auto camera_world_position camera_position
}
fragment_program_ref char_shader2_fs100
{
}
}
}
}
그래서 ... 무엇이 문제입니까? 당신이하고있는 일을 말하면서, 당신은 무슨 문제가 있는지 말하지 않습니다. –
@NicolBolas 그림에서와 같이 겹치는 두 개의 얼굴이 보입니다. 그 효과를 버리고 싶습니다 .. 두 눈의 얼굴이 보이지 않는 것을 보길 원합니다. –
알고리즘이 있습니다. 설명은 정점의 법선이 평평한 법선 일 경우에만 작동합니다. 매끄러운 메쉬를 가지고 있다면 정점 법선이 반드시 법선 법선과 같을 필요는 없습니다. 또한 정점이 둘 이상의면에서 사용되는 경우 문제가 발생합니다. – BDL