VanQussong
'분류 전체보기' 카테고리의 글 목록 (7 Page)

분류 전체보기

DirectX11/AR

AR50_ClassNote_3

24/03/22 1교시 주제 : Geometry Shader 완성하기 작업 내용 : Geometry Shader 완성, Billboard 기능 구현 Geometry Shader 를 통해 얻을 수 있는 장점 : 비활성화 처리한 파티클에 대한 렌더링 파이프라인에 대한 작업을 GS 단계에서 중단 가능 -> 반복문의 continue 기능 Point Mesh -> Rect Mesh : 중심점에 해당하는 Point Mesh의 좌표를 기준으로 View Space에서 정점(Vertex)을 확장시켜 자연스럽게 Billboard 처리가 되도록 함 Vertex Shader의 존재 이유 : GS에서 좌표 변환 작업을 전부 해줌으로 VS에선 input 값으로 들어온 Vertex 정보를 output으로 GS에 전달해주는 역할만 ..

DirectX11/AR

AR50_ClassNote_2

24/03/21 1교시 주제 : Particle System 렌더링 개선 작업 내용 : 인스턴싱을 통한 렌더링 최적화 (DrawIndexedInstanced) SV_InstanceID 시멘틱 추가 FOG 시멘틱 추가 프레임 드랍 : 현재 프레임 출력 전 후로 프레임 차이가 많이난다. 이는 파티클이 많을수록 더 심해진다. ParticleSystem의 Render()의 반복문에서 "GetMesh()->render()"로 모든 파티클을 매 프레임마다 새로 그려주기 때문이다. 렌더링 부분을 최적화 해서 프레임 드랍률을 낮춰야한다. 최적화) 인스턴싱 (Instancing) : 인스턴싱이란 동일한 객체(오브젝트)를 한 화면에 여러개 렌더링 시킬 경우 한번의 DP Call로 처리 하는 방식을 말한다. (Draw Pr..

Win32API

Win32API_StudyNote_5

24/03/22 25화. Win32API Collider (1) 충돌 : 충돌 작용없이 게임을 만드려고 하면, 제작할 수 있는 게임의 폭이 엄청 줄어든다. 충돌의 조건이 "충돌하면" 뿐이면 충돌에 대한 상호작용의 결과가 애매해질 수 있다. 때문에 충돌에 디테일한 상태와 조건이 필요하다. 충돌 상태의 종류에는 "Enter(충돌진입) , Stay(충돌유지) , Exit(비충돌)" 3가지가 있다. 설계 : 충돌 이벤트가 필요한 객체가 있고 필요 없는 객체가 있다. 클래스 설계를 할때 확장성 있는 구조를 만들려고 해야한다. 대표적인 확장성 있는 구조로는 "Component 기반 구조"가 있다. Component는 필요할때 끼워넣을수 있는 부품과도 같은 클래스(객체)다. final update() : 신경써주지 ..

Win32API

Win32API_StudyNote_4

24/03/20 21화. Win32API Resource (1) Resource 클래스 생성 : Resource 클래스는 Texture, Sound 클래스 등으로 파생되어 사용될 것이다. 리소스의 이름과 리소스를 읽어올 경로(상대경로)를 멤버 변수로 가진다. 리소스의 경로가 상대경로인 이유는 실행파일의 위치에 따라 절대경로는 바뀐다. 때문에 절대경로로 가지고 있어도 의미가 없다. CTexture 클래스 : Resource 클래스를 상속하는 Texture 클래스 생성 멤버로 DC 와 BITMAP 객체를 가진다. Texture 파일을 Load 하여 BITMAP에 저장해두면, DC에 해당 BITMAP 을 연결하여 메인 윈도우의 DC와 더블 버퍼링을 진행중인 memDC의 BITMAP 객체에 Load한 이미지를 ..

DirectX11/AR

AR50_ClassNote_1

24/03/20 1교시 주제 : 구조화 버퍼 개선 작업 내용 : 시스템 메모리와 GPU 버퍼간의 데이터를 양방향으로 이동 가능하게 구현 CStructuredBuffer::Create() : 구조화 버퍼를 생성해주는 함수인 Create() 함수는 아래와 같이 선언되어 있다. int Create(UINT _ElementSize, UINT _ElementCount, SB_TYPE _Type, bool _bSysMemMove, void* _InitialData = nullptr); 입력받는 인자중 "_bSysMemMove" 의 값에 따라 추가로 생성되는 버퍼가 생긴다. 참고로 해당 값이 true 이면 시스템 메모리와 GPU 버퍼간에 데이터 이동이 있음을 의미하고 false는 데이터 이동이 발생하지 않음을 의미한..