2023/10 45
-
PointLight, DIrectionLight, SpotLight 각 라이트에 대한 Hlsl과 Buffer연산을 코드에 추가해야한다. 우선 각 라이트를 구현하기 위해 필요한 값을 하나하나 짚어보자. PointLight 빛의 좌표(Vector3 형태의 좌표) 객체(Vertice)의 위치(Vector3형태의 좌표) 감쇠계수(범위에 따른 감쇠값) Directional Light 빛의 방향벡터 ( 빛이 향하는 방향을 나타내는 Vector 보통 카메라에서 직교함) 표면의 법선 ( 좌표평면상의 수직된 법선데이터) SpotLight 빛의 위치(Vector3형태의 좌표) 객체(Vectice)의 위치(Vector3형태의 좌표) 빛의 방향벡터( 빛이 향하는 방향을 나타내는 Vector 빛의 위치에서 정면으로 직교함) 원..
-
일반적으로 Point Light와 비슷하게 작동하나, 추가적으로 후레쉬의 특징인. 원뿔형 빛의 내부각도를 고려해서 계산해야한다. 위와같은 라이팅 각도가 있을때, 중앙과 외곽선의 각도를 측정해서 중앙부에서는 정방향의 빛이 적용되게 해놓은다음. 외곽부분의 각도에는 빛의 번짐을 적용하여. 빛의 감쇠를 제곱승으로 적용한다. 필요한 정보는 다음과 같다. 빛의 방향, 내부원뿔의 각도, 외부원뿔의 각도 위 수식을 사용해서. 내부의 각도에는 빛의 감쇠를 적용하지 않고. 외부각도에는 빛의 감쇠를 적용한다. 빛->Vertice 의 이동벡터를 계산한다음, Normalize해준다. SpotLight의 이동Vector를 계산한다. (SpotLight의 법선Vector).Normalize(); 이제. 그 Vector와 현재 Sp..
-
-
PointLIhgt는 특정 지점을 기준으로 모든 방향으로 동일한 세기의 빛을 쏘는 빛이다. 이는 전구와 같은 광원을 표현하기에 적합하고, 강도는 발광체의 거리의 제곱에 반비례함으로 빛이 멀어질수록 옅어지는 경향이 있다. 빛의 위치를 가져와 현재 위치와 함께 빛 벡터(빛의 방향)을 구한다. 빛의 위치와 현재 프래그먼트의 거리를 구한다(object Vertice와 Light Vector의 Scala) 그런다음, 정해진 감쇠항목에 따라 빛의 세기를 정하게 된다. 선형, 제곱 세제곱 을 사용하며. 각 상수(일반적으로 Color값을 사용) 에 곱하여 기본값에 사용해준다.
-
우선 원래 만들었던 Scene이 아닌 새로운 Scene을 사용하여 새 게임을 제작한다. #pragma once class ShootingScene : public Scene { public: ShootingScene(); ~ShootingScene(); // Scene을(를) 통해 상속됨 void Update() override; void PreRender() override; void Render() override; void PostRender() override; void GUIRender() override; private: Terrain* terrain; ShootingPlayer* player; }; 이미 만들었던 Scene을 상속받고 가상함수 구현을 하면 알아서 구현해준다. Terrain은 ..
-
색상 혼합 및 투명도 조절을 제어하기 위한 기술이다. 이런 연산은 2D및, 3D그래픽에서 색연산시 다양한 효과를 만들기 위해 사용된다. 다음은 블렌딩 기술에 대한 종류이다. Alpha 연산(Alpha Blending) 투명도(알파 채널)을 사용하여 픽셀의 색상을 혼합하는 연산이다. 픽셀의 알파값은 투명도를 나타내며, 알파값이 0에 가까울 수록 픽셀은 투명하고, 1에 가까울수록 불투명하다. 주로 블렌딩 모드에서 사용되며, 알파 블렌딩은 다른 픽셀과 혼합에 사용된다. 에디팅 연산(Additive Blending) 투명도를 고려하여 색상을 혼합하는 연산이다. 픽셀의 색상을 더해서 밝은 효과를 만들어낸다. 겹치는 두 색상이 더해짐으로 원래색상보다 더 밝아지게 된다. 주로 빛이나 불광 효과를 시뮬레이션 할때 사용..