분류 전체보기(93)
-
일반적인 WIN32 구조와 D3D 비교
WIN32 RegisterClassEX()로 생성하고자 하는 윈도우의 클래스를 등록한다. CreateWindow()로 윈도우를 생성한다. ShowWindow(),UpdateWindow()로 윈도우를 화면에 표시한다. GetMessage(),TranslateMessage(),DispatchMessage()로 이루어진 메시지 루프를 수행한다. 메시지 루프를 빠져나올 경우 프로그램을 종료한다. D3D RegisterClassEX()로 생성하고자 하는 윈도우의 클래스를 등록한다. CreateWindow()로 윈도우를 생성한다. InitD3D()함수에서 다이렉트3D를 Init한다. ShowWindow(),UpdateWindow()로 윈도우를 화면에 표시한다. GetMessage(),TranslateMessage(..
2022.08.10 -
삼각형
삼각형은 3D 물체의 기본 구성 요소이다. 물체를 구성하기 위해서는 물체의 모양과 외형을 묘사하는 삼각형 리스트를 만들어야 한다. 예를 들어 사각형을 만들기 위해서는 다음 그림에 보이는 것처럼 두 개의 삼각형으로 나누고 각각의 삼각형을 구성하는 버텍스를 지정해야 한다. Vertex rect[6] = {v0,v1,v2 // triangle0 v0,v2,v3}; // triangle1 주의할점은 삼각형의 버텍스를 지정하는 순서는 매우 중요하다. 이를 두르기 순서(winding order)라고 부른다.
2022.08.06 -
모델표현 / 버텍스 포맷
렌더링 파이프라인은 3D 세계에 대한 기하학적 표현과 이 세계를 바라보는 관점을 정의하는 가상 카메라를 이용해 2D 이미지를 만들어내는 역할을 담당한다. 모델표현장면(Scene)은 물체나 모델의 모음이다.물체는 삼각형 메쉬의 묘사로 이루어지는데, 메쉬의 삼각형은 물체의 기본적인 구성 성분이 되며, 다각형(polygon),기본형(primitive) 그리고 메쉬 기하물체를 상호 교환적으로 이용한다. 다각형에서 두 개의 변이 만나는 지점을 버텍스(꼭지점)라 한다. 하나의 삼각형을 만들기 위해서는 삼각형의 세 버텍스에 해당하는 세 개의 포인트 위치를 지정해야 하며 , 이 삼각형을 지정하여 물체를 묘사한다. 버텍스 포맷앞서 설명한 버텍스의 정의는 수학적으로는 문제가 없지만, Direct3D에서 이용할 개념으로는 ..
2022.08.06 -
D3D Init
먼저 d3dUtility.h를 포함시키고, 장치를 위한 전역 변수를 인스턴스화 #include "d3dUtility.h" IDirect3DDevice9* Device = 0; 해당 예제에서는 자원을 할당할 필요가 없으므로 Setup과 Cleanup 메서드는 비어뒀다. //*******************공통*********************** bool Setup() { return true; } //자원의 할당이나 장치 특성의 확인, 애플리케이션 상태의 설정 등과 같이 예제를 실행하기 위한 사전 준비 작업이 이 함수에서 수행된다. void Cleanup() {} //Setup 함수에서 할당된 자원을 해제하는 작업을 수행한다. //이 함수는 모든 드로잉 코드를 구현하며, 물체의 위치를 수정하는 등의..
2022.08.05 -
VFX
[VFX Graph 란?] 1)컴퓨트 셰이더 기반의 GPU 파티클 도구 (컴퓨트 셰이더란?) https://docs.unity3d.com/kr/2018.4/Manual/class-ComputeShader.html 2)GPU의 강력 병렬 파워를 사용하여 수백만 개의 파티클을 뿌릴 수 있음 3)뿌릴 수는 있는데 이것도 많으면 느려짐. 4)모바일에서도 사용 가능 (OpenGL ES3.1이상) 한줄로 요약하자면 계산을 넣어 -> 파티클을 더 많이 사용할 수 있는 툴 [컴퓨트 셰이더와 VFX Graph] 1)GPU는 주로 화면에 그리는 것을 담당. 2) GPU의 엄청난 병렬 계산 능력을 활용하기 위해서는 셰이더언어로 접근. 이것이 Compute(계산)셰이더 3) 고정 파이프라인대로 화면에 그리는 버텍스/픽셀 셰이..
2022.07.31 -
Alpha2Pass
예시의 상황 알파 블랜딩으로 처리된 로봇 캐릭터가 있다. 파괴될때 투명해지면서 사라진다고 가정 일반적인 방법이라면 프레그먼트로 작성하는것이 일반적이나 학습을 위해서 이방법으로 적용 원리 첫 번째 패스는 z버퍼에는 그리되 화면에는 그리지 않는다. 즉 z 버퍼에만 그리는 패스를 사용 , variants를 최소한으로 줄이고 최대한 계산을 줄여서 만든 쉐이더이다. 두 번째 패스 z버퍼를 쓰지 않고 그린다. Shader "Custom/Alpha2Pass" { Properties { _MainTex ("Albedo (RGB)", 2D) = "white" {} } SubShader { Tags{"RenderType" = "Transparent" "Queue" = "Transparent"} //1st pass zwri..
2022.07.28