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

Open Graphics Library® (OpenGL®) 섀도우는 비슷한 조명 조건에서 실제 생활에서 그림자가 어떻게 캐스팅되는지에 대한 3 차원 (3D) OpenGL® 장면에서 시각적 근사치입니다. Shadows는 OpenGL®에서 구현하기위한 복잡한 시각적 기능입니다. 주로 장면에서 그림자를 캐스팅하는 데 타고난 지원이 없기 때문입니다. 대신 다양한 사용 가능한 버퍼, 셰이더 및 경우에 따라 특정 그래픽 카드의 특수 기능에 액세스하는 확장 기능을 사용하여 장면 내에서 객체와 지오메트리에서 그림자를 만드는 데 사용할 수있는 다양한 기술이 있습니다. 대부분의 경우 OpenGL® 그림자 렌더링의 품질, 정확도 및 속도는 컴퓨터 또는 장치에있는 그래픽 하드웨어의 처리 능력 및 메모리와 직접 관련이 있습니다. OpenGL® 그림자를 구현하는 가장 인기있는 방법 중 일부에는 Shadow Volumes, Shadow Mapping 및 Ray Tracing이 포함됩니다.

OpenGL® 그림자 지원이있는 응용 프로그램을 작성하려면 수학적 지식과 OpenGL®의 작동 방식에 대한 깊은 이해가 필요합니다. OpenGL®은 실시간으로 역동적이고 렌더링 된 3D 장면을 만드는 데 주로 사용되므로 그림자를 만드는 데 사용되는 알고리즘은 속도를 위해 최적화해야 할뿐만 아니라 렌더링에 사용되는 그래픽 파이프 라인에서 발생할 수있는 자원의 소비 및 중단에 대해 신중하게 측정해야합니다. 이러한 이유로 Ray Tracing이라는 그림자를 만드는 가장 기본적인 방법은 종종 3D 장면에 비해 비현실적입니다.

.

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

OpenGL® 그림자를 생성하는 데 사용할 수있는 또 다른 방법을 그림자 매핑이라고합니다. 이 방법은 깊이 또는 스텐실 버퍼를 사용하여 광원의 각도에서 장면을 광원에서 장면 내의 다른 물체의 표면까지 일련의 거리로 렌더링합니다. 그런 다음 장면은 올바른 시야각에서 두 번째로 렌더링되어 각 픽셀이 버퍼 내의 특정 거리 범위 내에 있는지 확인하여 픽셀이 켜지거나 그림자가 켜져 있는지 확인합니다. 그림자 매핑을 사용하면 메모리 집약적 일 수 있으며, 광원이 둘 이상인 장면에서는 M을 포함 할 수 있습니다.여러 각도에서 다중 맵을 아킹합니다.

섀도우 볼륨은 다른 방법보다 더 정확한 OpenGL® 그림자를 만드는 방법이지만 자체 문제를 제시합니다. 그림자 볼륨은 본질적으로 광원에서 멀리 떨어진 물체의 조명 표면에서 팽창하는 장면에서 보이지 않는 지오메트리 조각입니다. 이 볼륨은 다른 물체에 대해 확인하여 볼륨이 유래 한 표면의 그림자에 빠지는 지 확인할 수 있습니다. 이 절차는 매우 복잡 할 수 있으며 궁극적으로 속도에 최적화 될 때 시각적 아티팩트를 만듭니다.

다른 언어

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

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