DirectX 11 3d

230524 Decal에 Light 입히기

슬뷔 2023. 5. 25. 00:11

이전 수업..

박스 랜더링하면서 구의 표면에 해당하는 부분을 포지션타겟에서 가져와서 박스내에 있다고 판단되면 컬러쪽에 덧그려서 색을 입힌다 (컬러타겟에)

 

문양을 광원으로 취급하고 싶다면 ?

pObject->Decal()->SetAsLight(true) 를 해서 광원 취급으로 바꾼다.

실제 데칼에선 관련된 값을 쉐이더로 전달시킨다.

SetAsLight(true)를 하면 Decal component에서 setscalarparam에서 int_0에 전달될 것이다.

(int_0은 dacal.fx 에서 설정)

if(g_int_0)
 {
    output.vEmissive = vSampleColor;
 }
else
 {
     output.vColor = vSampleColor;
 }

알파블랜딩을 사용하고 있기 때문에 컬러타겟을 출력할 때, 추출한 텍스쳐의 알파값에 맞춰 최종 컬러타겟이 출력된다..

본인의 알파가 출력되는 색상의 알파에 곱해지고, 원래의 색상에는 1 - 알파 가 혼합돼서 컬러타겟에 나간다.

 

내가 이걸 광원취급해달라고 했으면 컬러가 아닌 Emissive에 들어가 광원쪽 타겟에 색상이 출력되게 된다.