OpenGL® 그림자 란 무엇입니까?

OpenGL® (Open Graphics Library®) 그림자는 유사한 조명 조건에서 그림자가 실제로 어떻게 투사되는지에 대한 3D OpenGL® 장면의 시각적 근사치입니다. 섀도우는 OpenGL®에서 구현하기에 복잡한 시각적 기능입니다. 주로 씬에서 섀도우 캐스팅을 지원하지 않기 때문입니다. 대신 사용 가능한 다양한 버퍼, 쉐이더 및 경우에 따라 특정 그래픽의 특수 기능에 액세스 할 수있는 확장과 같은 다양한 도구를 사용하여 장면 내 오브젝트 및 지오메트리에서 그림자를 만드는 데 사용할 수있는 다양한 기술이 있습니다. 카드. 대부분의 경우 OpenGL® 섀도 렌더링의 품질, 정확성 및 속도는 컴퓨터 또는 장치에있는 그래픽 하드웨어의 처리 능력 및 메모리와 직접 관련이 있습니다. OpenGL® 섀도우를 구현하는 가장 널리 사용되는 방법에는 섀도우 볼륨, 섀도우 매핑 및 레이트 레이싱이 있습니다.

OpenGL® 섀도우 지원 응용 프로그램을 만들려면 수학 지식과 OpenGL® 작동 방식에 대한 깊은 이해가 필요합니다. OpenGL®은 동적이고 실시간으로 렌더링되는 3D 장면을 만드는 데 주로 사용되므로 그림자를 만드는 데 사용되는 알고리즘은 속도에 맞게 최적화해야 할뿐만 아니라 리소스 소비 및 중단에 대해 신중하게 측정해야합니다. 렌더링에 사용되는 그래픽 파이프 라인에서 발생할 수 있습니다. 이러한 이유로 광선 추적이라는 그림자를 만드는 가장 기본적인 방법은 시간이 오래 걸릴 수 있기 때문에 전체 3D 장면에는 실용적이지 않은 경우가 많습니다.

광선 추적은 기본적으로 장면을 통해 카메라의보기 평면 또는 위치에서 물체의 표면까지 가상의 선 또는 광선을 따른 다음 하나 이상의 광원의 위치 및 기타 요인에 따라 표면의 색상을 계산합니다. 래스터 화 과정에서 3D 장면이 2D 표면으로 그려 져서 표시 될 수있는 경우, 광선 추적 과정은 그려지는 모든 픽셀, 특히 텍스처 또는 기타 요소를 사용하여 수행해야합니다. 표면 특성은 동일한 픽셀을 여러 번 평가해야 할 수도 있습니다. 이는 그림자를 정확하게 렌더링 할 것이지만 일반적으로 실용적이지는 않지만 실시간 광선 추적을 의미합니다.

OpenGL® 섀도우를 만드는 데 사용할 수있는 다른 방법을 섀도우 매핑이라고합니다. 이 방법은 깊이 또는 스텐실 버퍼를 사용하여 광원에서 장면 내 다른 객체의 표면까지의 거리로 광원의 각도에서 장면을 렌더링합니다. 그런 다음 장면은 올바른 시야각에서 두 번째로 렌더링되어 각 픽셀이 버퍼 내의 특정 거리 범위 내에 있는지 여부를 확인하여 픽셀이 켜져 있는지 또는 그림자인지를 나타냅니다. 섀도 매핑을 사용하면 메모리를 많이 사용할 수 있으며 둘 이상의 광원이있는 장면에서는 여러 각도에서 여러 개의 맵을 만들 수 있습니다.

섀도우 볼륨은 다른 방법보다 정확한 OpenGL® 섀도우를 만드는 방법이지만 자체 문제가 있습니다. 섀도우 볼륨은 본질적으로 광원에서 멀리 떨어진 물체의 조명 표면에서 확장되는 장면에서 보이지 않는 형상입니다. 이 볼륨은 다른 오브젝트와 비교하여 볼륨이 시작된 표면의 그림자에 떨어지지 않는지 확인할 수 있습니다. 이 절차는 매우 복잡 할 수 있으며 결과적으로 속도에 최적화 될 때 시각적 인공물을 만듭니다.

다른 언어

이 문서가 도움이 되었나요? 피드백 감사드립니다 피드백 감사드립니다

어떻게 도와 드릴까요? 어떻게 도와 드릴까요?