나는 노멀 맵 패스에 대한 빌보드의 법선 생성을 향상시키기 위해 지연 렌더링 파티클 시스템과 임을가집니다. 현재 나는 빌보드 법선을 정면을 향한 Z로 렌더링합니다. 빛을 렌더링하는 패스가 장면을 그릴 때, BB가 예상대로 빛을 마주 칠 때 빌보드와 상호 작용합니다. 여기빌보드 (볼륨 빌보드?)의 법선처럼 구체를 렌더링하십시오.
는 정상 패스 모습입니다 :
이 예상대로 ... 그러나 내가 더 잘 입자에 볼륨 효과의 종류를 시뮬레이션하고 싶습니다 작동합니다. 나는 더 많은 구체가있는 것처럼 각 간판을 다루고 싶다. 내 생각에 구형이 넓은 범위의 법선 방향을 가질 때 입자와의 조명 상호 작용이 더 좋을 것입니다. 나는.
이 좋은 생각이 (흰색 테두리 하나의 광고판 것)처럼 ID가 무언가를 모방 하시겠습니까? 나는 그 일을하는 법을 정말로 모른다.
편집
나는 렌더링 포인트를 사용하고, 나의 현재의 생각이 같은 것입니다 :
normal.x = gl_PointCoord.x;
normal.y = gl_PointCoord.y;
normal.z = 1.0;
그러나 gl_PointCoord 나던 내가 그것을가하는 생각 효과를 생산 것으로 보인다. 아래의 스크린 샷 :
편집 2
안녕 얘들 아, 여전히 문제가있을 것 같다.
vec3 normal = vec3(gl_PointCoord.x * 2.0 - 1.0, 1.0 - gl_PointCoord.y * 2.0 , length(gl_PointCoord.xy));
normal = normalize(normal);
하지만 여전히 100 % 같지 않습니다 다음과 같이 내가 지금 사용하고있는 GLSL입니다. 대부분의 경우에 잘 작동하는 것 같습니다. 그러나 광고판을 향하는 방향 표시등을 사용할 때 문제가 발생할 수 있습니다.
그 그래도 것처럼 왼쪽 아래 파란색 법선 바로 수 없습니다. 정규 구면 법선을 보면 왼쪽 아래의 파란색이 검은 색으로 변합니다 (z 축의 부족을 나타냄). 나는 이것이 여전히 실종 된 것이라고 생각한다. 어떤 아이디어?
EDIT 3
잘못 무엇인지 알아 냈어. 정상적인 패스 중에 정상적으로 인코딩하는 것을 잊어 버렸고 나중에 일반화하는 것을 잊었습니다.
// Encoding pass
vec3 normal = vec3(gl_PointCoord.x * 4.0 - 2.0, 2.0 - gl_PointCoord.y * 4.0, 1.0);
normal = normalize(normal);
normal = normal * 0.5 + 0.5;
// Decoding pass
vec3 normal = texture2D(normalMap, vUv).xyz;
normal = normal.xyz * 2.0 - 1.0;
sphere-esque 모양을 제공하기 위해 텍스처 좌표를 기반으로 법선을 변조 할 수 없습니까? – Mokosha
안녕 Mokosha, 예, 나는 그런 경우가 될 것이라고 생각하고있었습니다. 점 스프라이트와 gl_PointCoord를 사용하여 Im, 그러나 나는 그것을 구현하는 방법에 조금 붙어있다. 내 편집을 참조하십시오. – Mat
'normal.xy = texcoord.xy * 2.0 - vec2 (1.0)'과 같이'normal = normalize (normal) '와 같이 보통 xy로 texcoord uv를 사용할 수 있습니다. –