728x90
DirectionalLight와 PointLight의 다른점
방향만가졌다면
PointLight는 위치정보가 필요하고, sphere정보가 필요함
그러면 우선 GlobalBuffer.h의 Light구조체로 이동하여
필요한 정보들 추가
다음 PixelHeader.hlsl로 이동하여 GetPoint함수 추가하고
위에 만들었던 DirectionalLight코드 가져오기 감쇠만 추가하면 되기 때문
toLight는 빛의 방향이 아니기 때문에 worldPos(월드상의 정점)에서 빛의 방향을 빼줌
distanceToLight = Light에서 worldPos까지의 거리
toLight를 distanceToLight를 정규화시키면서 값을 넣어줌
이제 감쇠추가.
distanceToLightNormal 1 - saturate을 하여 정점까지의 범위에 따른 빛 주기
하지만 이렇게 하면 / 이런식의 그래프로 빛이 올라가는데 빛은 곡선으로 나오는것이
자연스러움으로 attention(감쇠) 에서 제곱을 해주면 곡선으로 나오게 되고
최종적으로 attention감쇠값을 곱해주면 끝
실행 결과
728x90
'학원' 카테고리의 다른 글
DirectX 3D ExportMaterial (0) | 2023.11.08 |
---|---|
DirectX 3D SpotLight (0) | 2023.11.08 |
DirectX 3D DirectionalLight (0) | 2023.11.07 |
DirectX 3D ShootingGame(1) (1) | 2023.10.30 |
DirectX 3D SphereCollision (1) | 2023.10.28 |