1.dx 강의 1개 듣기
2.os 강의 1개 듣기
3.dx 수업 숙제 (spot light 만들기)
DX 숙제
// LightDir 과 Angle 값을 활용해서 SpotLight 구현해보기
float fDistPow = 1.f;
// ViewSpace 에서의 광원의 위치
float3 vLightViewPos = mul(float4(LightInfo.vWorldPos.xyz, 1.f), g_matView).xyz;
// 광원으로부터 오는 빛의 방향 구하기
vViewLightDir = normalize(mul(float4(normalize(LightInfo.vWorldDir.xyz), 0.f), g_matView)).xyz;
// 포인트 라이트로부터 거리체크
float fDist = distance(_vViewPos, vLightViewPos);
fDistPow = saturate(cos((fDist / LightInfo.Radius) * (PI / 2.f)));
// 포인트 라이트에서 픽셀까지의 방향과 빛의 방향 내적
float3 vPixelLightDir = normalize(_vViewPos - vLightViewPos).xyz;
float vPixelAngle = dot(-vViewLightDir, -vPixelLightDir);
float fAnglePow = 0.f;
if (LightInfo.Angle < vPixelAngle)
fAnglePow = 1.0f;
// ViewSpace 에서의 노말벡터와 광원의 방향을 내적 (램버트 코사인 법칙)
fLightPow = saturate(dot(_vViewNormal, -vViewLightDir)) * fDistPow * fAnglePow;
// 반사광
float3 vViewReflect = normalize(vViewLightDir + 2.f * (dot(-vViewLightDir, _vViewNormal)) * _vViewNormal);
float3 vEye = normalize(_vViewPos);
// 반사광의 세기 구하기
fSpecPow = saturate(dot(vViewReflect, -vEye));
fSpecPow = pow(fSpecPow, 20) * fDistPow * fAnglePow;
}
// 결과 전달하기
_Light.vDiffuse += LightInfo.Color.vDiffuse * fLightPow;
_Light.vAmbient += LightInfo.Color.vAmbient;
_SpecPow += fSpecPow;
vPixelAngle은 cos 세타 값이지 세타값이 아니기 때문에 아크 탄젠트 해줘야한다.
또 fAnglePow 가 저 if 문이 아니면 pixelAngle값을 넣어줘야한다.
OS강의 듣기
https://www.youtube.com/watch?v=o1TB9NWvG9w&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN&index=26
언리얼,유니티 의 메타파일과 리플랙션
친구랑 얘기하면서 메타 파일,리플랙션에 대해 얕게 학습함.
일단 언리얼,유니티 둘다 파일별로 메타 파일이 생기고
언어적 차이로 인해 유니티는 c# 리플랙션 쓰면 되지만 c++ 은 20버전부터 지원되기 때문에
메타 파일로 우회해서 사용하는 방식인듯.
명확하게 알려면 언리얼을 공부해야 하는데 그렇게 공부해버리면 시간이 부족해서 그냥 대충 그렇다 정도로 넘어가며
내 엔진에 참고하려고 함.
메타 파일 만드는 이유는 엔진을 껐다 켰을때 내가 설정해둔 설정이 안날라가게끔 하는 용도로 주로 쓰임.
c++ 리플랙션 만들기
https://www.slideshare.net/xtozero/c20-251161090
C++20에서 리플렉션 기능 구현
C++20에서 리플렉션 기능 구현 - Download as a PDF or view online for free
www.slideshare.net
https://hyo-ue4study.tistory.com/182
[언리얼엔진] 리플렉션 (aka. 프로퍼티 시스템)
언리얼엔진하면은 다룬다고 하면 알아야할 몇가지들이 있다. 그 중에서 언리얼엔진에서 베이스가 되는 프로퍼티 시스템인 리플렉션 이 있다. 리플렉션이라는 것은 자바나 C#등에선 지원하지만,
hyo-ue4study.tistory.com
https://velog.io/@seok9403/%EC%96%B8%EB%A6%AC%EC%96%BC-%EB%A6%AC%ED%94%8C%EB%A0%89%EC%85%98
언리얼 리플렉션
출처:https://www.unrealengine.com/ko/blog/unreal-property-system-reflectionhttps://kyoun.tistory.com/77?category=749179Reflection은 프로그램이 실행시간에
velog.io
댓글