-
[일반] 쉐이더 코딩 아시는분 계신가요2019.06.26 PM 12:07
또 다른 다이렉트 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 개
- 왕사기
- 2019/06/26 PM 12:24
float4와 float3을 dot 연산해서일까요?
- 잉그람
- 2019/06/26 PM 12:25
FinalColor.rgb = dot(FinalColor.rgb , GrayScale);
요렇게 해보시면 어떨까요.
FinalColor 는 float4 형이고, GrayScale 은 float3 형이라 형 불일치가 발생해서 에러가 나는 것 같네요.
요렇게 해보시면 어떨까요.
FinalColor 는 float4 형이고, GrayScale 은 float3 형이라 형 불일치가 발생해서 에러가 나는 것 같네요.
user error : Error. B.