여러 개의 조명으로 빠른 조명


10

여러 조명으로 빠른 조명을 구현하려면 어떻게해야합니까?

나는 플레이어를 제지하고 싶지 않습니다. 그는 무제한의 숫자를 배치하고 레벨에 겹치는 (점) 라이트를 배치 할 수 있습니다.

문제는 조명을 계산하는 데 필요한 동적 루프를 포함하는 셰이더가 매우 느리다는 것입니다.

컴파일 타임에 쉐이더를 n 번 컴파일 할 수 있다면 n은 조명 수라는 아이디어가있었습니다. 컴파일 타임에 숫자 n이 알려진 경우 루프를 자동으로 풀 수 있습니다. 이것은 단지 다른 수의 조명으로 동일한 쉐이더의 n 버전을 생성 할 수 있습니까?

런타임에 레벨의 어느 부분에 사용할 셰이더를 결정할 수있었습니다.


플레이어가 조명을 동적으로 추가하면 "컴파일 타임"쉐이더가 어떻게 정답이 될 수 있습니까?
Seth Battin

내가 쓴대로, 컴파일러는 .. 조명과 런타임에 나는 수준의 어떤 부분에 사용할 하나 결정할 수, 1,2,3에 대한 쉐이더를 생성 할 수
codymanix

컴파일 타임 셰이더는 라이트를 어디에 배치해야하는지 알아야합니다. 라이트의 역동 성은 그 라이트를 망칠 것입니다.
ratchet freak

조명의 수만 동적이어야합니다. 위치는 매개 변수로 제공됩니다.
codymanix

1
답이있는 것 같습니다. 최대 조명 수와 가능한 위치 범위를 알고 있습니다.
ashes999

답변:


8

나는 당신이 찾고있는 것을 Deferred Rendering이라고 믿습니다. 조명이 많으면서도 매우 잘 확장되는 렌더링 기술이므로 동적 간접 조명에 사용할 수 있습니다. 그것은 화면에 수천 개의 표시등이 있음을 의미합니다.

기본적으로 모든 지오메트리 데이터 (위치, 법선, 깊이)를 중간 픽셀 버퍼 (G 버퍼라고 함)로 렌더링하는 기술입니다. 그런 다음 두 번째 패스에서 매개 변수와 함께 밝은 모양을 렌더링합니다. 이 두 번째 패스의 셰이더는 G 버퍼에서 정보를 가져 와서 라이트 계산을 적용한 다음 최종 이미지에 블렌딩합니다.

여기에서 구현 세부 사항을 찾을 수 있습니다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.