다수의 광원.

반응형

기억할 것 : 광원으로의 방향이 아니라, 광원으로 부터 나온 빛이 향하는 방향.
                 (0,1,0)이면 광원이 +y으로 향한다는 의미이다.
                 보통 쉐이더에 인자로 넘겨주는 방향은 빛이 광원으로 부터 표면으로 향하는 방향인데
                 이를 쉐이더에서 -로 하여 사용해야 한다.
                 float3 L = - normalize(lightDirection);
                 그렇지 않다면 처음 입력부터 지표면에서 광원으로 향하는 방향을 넘겨서 -을 붙이지 않으면 된다.

다수의 광원일 경우에는 각 광원에 대해서 확산성분과 정반사 성분을 각각 계산하여 모두 더하고
환경성분은 전체적으로 한번만 더하면 된다
.
float4 finalColor = 0;
 for (int i=0; i<2; i++) {
  finalColor += saturate( dot( (float3)lightDirs[i],input.normal) * lightColors[i] );
 }
 finalColor.a = 1;
위의 예에서 재질의 컬러는 제외대상이다.


'Study > Directx 10' 카테고리의 다른 글

방향성광원, 점광원  (0) 2010.05.15
광원(확산, 정반사, 환경)  (0) 2010.05.15
쉐이딩 모드  (0) 2010.05.14
픽킹  (0) 2010.05.13
경계볼륨 - 경계구, 경계상자  (0) 2010.05.11
TAGS.

Comments