내가 아는 한 DX 또는 GL에서는 모든 블렌딩 작업에 RT 0의 알파를 재사용 할 수있는 방법이 없습니다. 불행히도 하드웨어가 지원하지 않는 것 같습니다.
각 렌더 타겟에 대해 서로 다른 블렌드 모드를 구성하거나 일부 블렌딩을 활성화하고 다른 블렌드를 비활성화 할 수 있습니다. 그러나 렌더 타겟에 블렌딩이 활성화 된 경우 항상 자체 알파를 사용합니다.
"듀얼 소스 블렌딩"( DX11 doc 및 OGL doc 참조)이라는 모드도 있는데 , 렌더링 대상의 알파 채널이 아니라 픽셀 셰이더에서 완전히 분리 된 출력과 블렌딩 할 알파를 지정할 수 있습니다. 그러나이 모드는 현재 하드웨어에서 하나의 렌더 대상에서만 작동합니다.
내가 알 수있는 한, 여러 렌더링 대상을 동일한 알파로 혼합하는 유일한 옵션은 다음과 같습니다.
- 모든 렌더 타겟에 동일한 알파를 출력합니다 (예 : 지연된 음영 처리에서와 같이 다른 값을 알파 채널에 저장하는 기능을 희생).
- 이중 소스 블렌딩을 사용하여 각 렌더 대상에 대해 별도의 패스로 렌더링을 반복하십시오.
- UAV / 이미지로드 저장소를 사용하여 픽셀 셰이더에서 블렌딩을 실행합니다 (레이스 조건에 대한 보호 기능이 없기 때문에 화면 공간에서 형상이 자체적으로 겹치지 않는 경우에만 작동 함).
- 이를 지원하는 하드웨어에서 DX11.3 / DX12 Rasterizer-Order Views , NV_fragment_shader_interlock 또는 INTEL_fragment_shader_ordering (후자는 AMD GPU에 의해 노출됨). 이것들은 같은 것에 대한 세 가지 이름입니다. 기본적으로 다른 픽셀 쉐이더 호출과 관련하여 원자 적으로 텍스처를 읽고 수정하고 쓸 수있는 픽셀 쉐이더의 "중요 섹션"입니다. 본질적으로 임의의 프로그래밍 가능한 블렌딩을 가능하게하지만 아마도 느리고 최근 하드웨어에서만 사용할 수 있습니다.