2013-05-04 2 views
1

잠재적으로 여러 개의 교차하는 투명 오브젝트가있는 씬을 렌더링하는 중입니다. 이렇게하면 정렬 및 그리기의 표준 방법이 문제가 될 수 있습니다 (삼각형이 교차하면 정렬 삼각형도 작동하지 않음). 따라서 두 번째 깊이 테스트를 수행하기 위해 GLSL 조각 셰이더를 사용하여 깊이 필링을 구현했습니다. 훌륭하게 작동합니다.GLSL 유리 효과 + 깊이 껍질

이제 쉐이더를 사용하여 특정 효과를 적용하고 싶습니다. 현장의 물체 중 하나가 주사기이고 유리 효과를 적용하고 싶습니다. 만약 내가 앞쪽으로 끌고 갔다면 쉬울 것입니다. 주사기를 그릴 때 쉐이더를 시작하십시오. 그 뒤의 모든 것이 이미 프레임 버퍼에 있기 때문에. 그러나 깊이 껍질을 사용할 때이 방법은 효과가 없습니다.

그래서 제 질문은 다음과 같습니다 깊이 필링을 사용하는 경우

  1. 가 어떻게이 장면에서 하나의 객체에 쉐이더 효과를 적용 할?
  2. 효과 쉐이더와 깊이 쉐이딩 쉐이더를 동시에 사용하려면 어떻게해야합니까? (동시에 실행해야한다고 가정)

저는 셰이더 사용법이 매우 새롭기 때문에 코드 예제가 만족 스럽습니다!

+0

정확히 "유리 효과"란 무엇입니까? 광학 왜곡? –

+0

저는 광학 왜곡으로 시작할 생각이었습니다. 그 이유는 그것이 유리 뒤의 것이 무엇인지를 아는 것에 의존 할 것이기 때문에 구현하고 싶은 몇 가지 다른 효과의 좋은 예입니다. 결국에는 굴절/반사를 적용하는 방법을 살펴 보았습니다. 그러나 내가 본 것은 다른 접근 방식이 필요합니다. – Runt8

답변

0

레이 트레이싱없이 가능하다면 놀랄 것입니다. 제가 아는 한 굴절 쉐이더를 사용하는 방법은 환경 맵에서 텍스처 룩업을하는 것입니다. 이지도는 미리 계산되거나 별도의 렌더링 단계에서 즉시 계산됩니다. 후자의 옵션을 사용하려면 쉐이더를 사용하는 각 객체에 대해 별도의 환경 맵과 추가 패스가 필요합니다. 개체가 서로 교차하는 경우 그 가능성이 있음을 다소 의심 스럽습니다. 그것이 그렇다하더라도,이 패스들 각각에 대해 깊이 껍질을 벗기 위해 또 다른 커플 패스가 필요할 것입니다. 이제는 깊이 껍질을 벗기는 쉐이더가 주변 물체의 굴절을 고려해 통과하기를 원한다면, 이것은 빠르게 빠져 나올 것입니다.

+0

효과가 적용되는 오브젝트가 교차하지 않을 것이라는 보장이 있으면 변경 될 수 있습니까? – Runt8