답변:
Wikipedia의 스텐실 버퍼 정의는 실제로 크지 않으며 현대 구현 (OpenGL)의 세부 사항에 너무 집중합니다. 명확한 버전 을 이해하기가 더 쉽다는 것을 알았습니다 .
스텐실은 사용될 때마다 동일한 문자, 기호, 모양 또는 패턴을 그리거나 그리는 데 사용되는 템플릿입니다. 이러한 템플릿으로 제작 된 디자인을 스텐실이라고도합니다.
이것이 바로 스텐실이 컴퓨터 그래픽 이전의 의미였습니다. Google 이미지에 스텐실 을 입력 하면 첫 번째 결과 중 하나입니다.
보다시피, 그것은 패턴의 네거티브를 무언가에 "페인트"하는데 사용될 수있는 마스크 나 패턴입니다.
버퍼 스텐실 동일한 방식으로 작동합니다. 스텐실 렌더 패스를 수행하여 스텐실 버퍼를 선택한 패턴으로 채운 다음 후속 도면에서 패턴을 해석하는 방법을 정의하는 적절한 스텐실 기능을 설정 한 다음 최종 장면을 렌더링 할 수 있습니다. 비교 기능에 따라 스텐실 마스크의 거부 된 영역으로 떨어지는 픽셀은 그려지지 않습니다.
스텐실 버퍼를 구현할 때 때로는 깊이 버퍼와 결합되기도합니다. 대부분의 그래픽 하드웨어는 1 바이트 (8 비트) 스텐실 버퍼를 사용하므로 대부분의 응용 프로그램에 충분합니다. 심도 버퍼는 일반적으로 3 바이트 (24 비트)를 사용하여 구현되며, 이는 대부분의 종류의 3D 렌더링에 충분합니다. 따라서 스텐실 버퍼의 8 비트를 다른 깊이 버퍼의 24 개와 함께 묶는 것이 논리적이므로 각 심도 + 스텐실 픽셀을 32 비트 정수로 저장할 수 있습니다. Wikipedia가 의미하는 바는 다음과 같습니다.
깊이 버퍼와 스텐실 버퍼는 종종 그래픽 하드웨어의 RAM에서 동일한 영역을 공유합니다.
스텐실 버퍼가 왕이었던 응용 프로그램 중 하나는 섀도우 렌더링 ( shadow shadow ) 또는 때로는 적절하게 스텐실 쉐도우 ( stencil shadows) 라고 하는 기술에서 섀도 렌더링에 사용되었습니다 . 이것은 버퍼를 매우 영리하게 사용했지만 오늘날 렌더링 필드의 대부분은 깊이 기반 그림자 맵으로 이동 한 것으로 보입니다.
스텐실 버퍼는 현재 8 비트의 부호없는 정수 버퍼로, 스텐실 테스트 후 다양한 작업 ( 예 : OpenGL Ops here)을 사용하여 원하는 픽셀 당 정보를 채울 수 있습니다 .
스텐실 테스트는 단순히 현재 픽셀 스텐실 값이 스텐실 버퍼의 내용에 대해 테스트되는 픽셀 별 작업입니다. 스텐실 테스트가 통과되는 조건을 설정합니다 (예 : 항상, LESS 등).
테스트 결과에 따라 스텐실 값에 어떤 일이 발생하는지 결정할 수 있습니다 (위의 링크 작업을 사용하여 OpenGL에서).
스텐실 버퍼는 몇 가지 용도로 사용되며 첫 번째 용도는 다음과 같습니다.
과거에는 Shadow volume과 같은 그림자 기법에도 사용되었습니다.
빈약 한 스텐실 버퍼는 종종 과소 평가되지만 그래픽 프로그래머의 무기고에서 좋은 무기가 될 수 있습니다.
[*] 올바른 SRV를 사용하여 사후 프로세스에서 다시 읽을 수있는 값!
편집 : 또한 Shader Model 5.1 (D3D11.3 및 D3D12)에서 스텐실 참조 값에 액세스 할 수 있음을 언급 할 가치가 있습니다. SV_StencilRef
스텐실 버퍼는 픽셀 당 정수 데이터를 포함하는데, 이는 렌더링되는 픽셀에 대한 제어를 강화하는 데 사용됩니다.
스텐실 버퍼는 깊이 버퍼와 유사하게 작동합니다. 마찬가지로 스텐실 데이터는 깊이 버퍼에 저장됩니다. 깊이 데이터는 어떤 픽셀이 카메라에 가장 가까운지를 결정하지만, 스텐실 데이터는 픽셀을 저장 또는 폐기하기 위해보다 일반적인 목적의 픽셀 당 마스크로 사용될 수 있습니다. 마스크를 만들려면 스텐실 함수를 사용하여 픽셀이 렌더링 될 때마다 참조 스텐실 값 (전역 값)을 스텐실 버퍼의 값과 비교하십시오.
출처 : 스텐실 버퍼 란? | Microsoft 개발자 네트워크
일반적인 아이디어는 각 픽셀의 값을 설정 한 다음 동작 (설정 할 수 있다는 것입니다 GREATER
, SMALLER
, EQUAL
true로 평가됩니다은 픽셀 음영 처리 및 표시 될 때, 등).
반사 텍스처를 렌더링 할 때 스텐실 버퍼는 반사가 적용되는 마스크를 만드는 데 사용되는 실시간 반사입니다. 예를 들어 반사는 유리 재질 음영 삼각형에만 적용됩니다. 또한 전체 프레임 버퍼에 대해 임의의 2 차원 마스크를 만드는 데 사용할 수 있습니다.
cleaver
->clever
입니다. 나는 그것을 편집 할 수 없다. D : 그건 그렇고, 그것은 지금까지 가장 의미가있다.