오늘 할일

12/15

Roka_is_back 2023. 12. 15.

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

 

 

 

'오늘 할일' 카테고리의 다른 글

12/19  (0) 2023.12.19
12/18  (0) 2023.12.18
12/14  (0) 2023.12.13
12/13  (0) 2023.12.12
12/12  (0) 2023.12.11

댓글