본문 바로가기
학원

DirectX 3D PointLight

by Srff5123 2023. 11. 7.
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