응애맘마조
230731 강의 본문
조명에 대해 마지막인 Emissive에 대해서 강의했습니다. 오늘 다 끝내지는 못했고 내일 마무리가 될 것 같습니다.
여기서는 텍스쳐나 모델에서 자체발광이라고 생각하면 편할 것 같습니다.
float3 DirLighting(float3 BaseColor, float3 SpecularMap, float3 Normal, float3 wPostion)
{
float3 DirectionLight = normalize(DirLight.xyz);
float Diffuse = saturate(dot(-DirectionLight, Normal));
float3 RecflectLight = reflect(DirectionLight, Normal);
float3 ViewDir = normalize(ViewPos.xyz - wPostion);
float Specular = saturate(dot(ViewDir, RecflectLight));
Specular = pow(Specular, Shininess);
// 계수 * 머터리얼 * DiffuseMap
float3 D = Diffuse * Kd.rgb * BaseColor;
float3 S = Specular * Ks.rgb * SpecularMap;
return saturate((D + S) * DirColor.rgb);
}
float4 Lighting(float4 BaseColor, float2 Uv, float3 Normal, float3 wPosition)
{
float3 SpecularMap = SpecularMapping(Uv);
float4 Result = float4(DirLighting(BaseColor.rgb, SpecularMap,
Normal, wPosition), BaseColor.a);
//Ambient
Result.rgb += Ka.rgb * BaseColor.rgb;
//Emissive
Result.rgb += EmissiveMapping(BaseColor.rgb, Uv, Normal, wPosition);
return saturate(Result);
}
Shader에 Emissive에 대한 코드가 추가되었습니다. 여기에서 사용한 것들을 토대로 여태 사용했던 큐브나 스피어나 사각형에 대해 코드가 변경되었습니다.
아직 완벽하게 되지는 않았지만 내일이면 부족한 부분 설명까지 끝날 것 같습니다.
읽어주셔서 감사합니다.