• [일반] 쉐이더 코딩 아시는분 계신가요2019.06.26 PM 12:07

게시물 주소 FONT글자 작게하기 글자 키우기

K-002.png

 

또 다른 다이렉트 X 예제를 공부중인데

 

float4 PS( VS_OUTPU\T In ) : COLOR
{
float3 L = In.L;
float3 N = In.N;
float3 V = In.V;
float2 uv = In.T;
 
float  NdotL = saturate( dot( N, L ) ); 
float3 R = normalize(2 * NdotL * N - L);
float  RdotV = saturate( dot( R, V ) );
 
float4 fvBaseColor = tex2D( baseMap, uv );
 
float4 Ambient = 0.2f;
float4 Diffuse = fvBaseColor * NdotL;
float4 Specular = pow( RdotV, fSpecularPower );
float4 FinalColor = Ambient + Diffuse + Specular;
float3 GrayScale = float3(0.3, 0.59, 0.11);
 
FinalColor.rgb = FinalColor.rgb; //★ 이곳의 코드를 수정
 
return FinalColor;
}

 

 

저걸 흑백으로 바꿔라 인데...

 

좀 찾아 보니 흑백으로 바꾸는 쉐이더 코드는 대부분

 

c1 = color RGB
c2 = (0.3,0.59,0.11)

grayscale = dot(c1,c2)

 

이런식이던데

 

FinalColor.rgb = dot(FinalColor , GrayScale);

 

이런식으로 해도 오류 뿜어내고 안되는데 왜 그럴까

 

뭐라고 적어야 하죠?

 

 

 

댓글 : 2 개
float4와 float3을 dot 연산해서일까요?
FinalColor.rgb = dot(FinalColor.rgb , GrayScale);
요렇게 해보시면 어떨까요.
FinalColor 는 float4 형이고, GrayScale 은 float3 형이라 형 불일치가 발생해서 에러가 나는 것 같네요.
친구글 비밀글 댓글 쓰기