본문 바로가기

D3D23

[DirectX3D] 뷰행렬을 사용한 회전(CreateLookAt()함수사용) 기존에는 몬스터가 플레이어를 추적할때 플레이어 방향으로 각도를 맞추어 줄 수 있도록 X축과 Z축의 두개축을 가지고 atan2f() 함수를 사용하여 Y축의 회전 각도를 보간하였습니다. 기존의 방식은 평변을 기준으로 계산하기때문에 3개의 축을 한번에 계산하기는 조금 번거로웠습니다. 하지만 행렬과 CreateLookAt() 함수를 사용하여 X,Y, Z 3개의 모든축의 회전 각도를 보간할수 있는 방법을 정리하고자 합니다. [사용 예시] 아래의 코드는 플레이어객체(player)가 항상 타겟(boss)을 향하고 있도록 회전시키는 코드입니다. Matrix M = Matrix::CreateLookAt(player->GetWorldPos(), boss->root->GetWorldPos(), Vector3(0, 1, 0).. 2023. 9. 14.
[DirectX3D] Slash trail 게임에서 공격시에 잔상이 남는 효과를 구현하도록 합니다. Slash Trail 클래스 + 상수버퍼 + 쉐이더 를 사용한 Slash Trail 효과 효과구현을 위한 클래스 생성합니다. (코드는 아래의 접은글참조, 코드의 내용은 프레임워크에 따라 달라질수있습니다) 더보기 // SlashTrail.h #pragma once class SlashTrail { shared_ptr shader; vector vertices; ID3D11Buffer* vertexBuffer; D3D_PRIMITIVE_TOPOLOGY primitiveTopology; VertexType vertexType; UINT byteWidth; Vector3 lastTop; Vector3 lastBottom; shared_ptr materia.. 2023. 9. 4.
[DirectX3D] 폭죽 효과(파티클효과 응용) DirectX11 3D 상수버퍼, 쉐이더를 사용한 폭죽 효과 기능 구현에 필요한 코드외 생략 하도록 합니다. 이전에 구현하는 눈내리는 효과와는 다르게 하나의 정점에서 시작되어 파티클이 퍼지는 효과입니다. 파티클은 퍼지는 강도, 중력값 등의 조절을 통하여 퍼지는 방식을 변경할 수 있습니다. 피격, 스킬, 블러드 이펙트 등등에 사용할 수 있지않을까 생각합니다. 폭죽 효과를 적용하기 위한 클래스 생성 (접은글 참조) 더보기 // Pop.h #pragma once struct POP_DESC { float duration;//총 재생시간 float time;// 현재 재생중인시간 float gravity;// 중력값 float padding; POP_DESC() { gravity = 60.0f; } }; cla.. 2023. 8. 30.
[DirectX3D] 눈내리는 효과(파티클효과 응용) DirectX11 3D 상수버퍼, 쉐이더를 사용한 눈내리는 효과 기능 구현에 필요한 코드외 생략 하도록 합니다. 구현된 기능은 카메라의 시점에 고정되어져 RTT, PostEffect 처럼 렌더에 적용되는 효과가아닙니다. 3D 공간에 정해진 범위 내에 효과가 적용됩니다. 단, 효과에 사용되는 이미지들은 BillBoard Rendering과 같은 방식으로 카메라가 바라보는 방향으로 정면이 위치하기 때문에 어느방향에서 보아도 같은 이미지로 보이게 되어있습니다. 환경효과(눈, 비, 흩날림...)를 적용하기 위한 클래스 생성 (접은글 참조) 더보기 // Rain.h #pragma once class Particle { protected: //현재 재생중인 시간 float playTime = 0.0f; //재생중인.. 2023. 8. 29.
[DirectX3D] PostEffect 블러(Blur)효과 적용하기 ( + Filter ) 쉐이더 파일을 사용하여 PostEffect를 구현하고 PixelShader 에서 추가적으로 Blur 효과를 적용하여 봅니다. 포스트 이펙트를 사용한 블러(Blur) 효과 아래의 효과들은 적용전(좌측), 적용후(우측)으로 비교하여 보도록 합니다. 블러의 효과들은 상수버퍼를 사용한 클래스를 통하여 값을 변경하여 강도 조절이 가능합니다. 1. 크로스 블러 (Cross Blur) 크로스 블러는 픽셀들이 상,하,좌,우의 교차(Cross)방향으로 퍼진듯한 느낌이 표현됩니다. 크로스 블러 float4 CrossBlur(float2 uv) { float4 color = 0; for (int i = 0; i < count; i++) { float divX = (1 + i) / width; float divY = (1 +.. 2023. 8. 22.
[DirectX3D] 로딩씬(씬전환) Loading Scene 추가 프레임워크에서 씬(Scene)를 여러개 만들고 씬전환화면으로 로딩씬을 제작하게되었습니다. 추가전 1.프로그램 실행 > 2.게임입장상호작용 > 3.실제플레이Scene > 4.엔딩Scene 추가전 후 1.프로그램 실행 > 2.게임입장상호작용 > 3. 로딩씬 > 4.실제플레이Scene > 5.엔딩Scene 로딩씬에서는 게임실행에 필요한 데이터들이 세팅되는 과정을 시각적으로 볼수있도록 하였습니다. 메인 화면에서 게임으로 진입시 실행에 필요한 데이터들을 로드(Load)하는동안 생각보다 긴 시간이 필요합니다. 때문에 멈춰있는 화면이 없는것처럼 보이도록 하기위하여 로딩씬을 추가합니다. 메인 화면에서 게임입장 버튼 글릭시 바로 로딩씬이 실행됩니다. 로딩씬에서는 스레드(thread)를 사용.. 2023. 8. 21.