본문 바로가기

전체 글

(104)
[그래픽스] 드로우콜, 배치 (ft. DP Call, Set Pass Call, 배칭) 목표최적화 관련 용어 숙지들어가기 전 본 글에서 직접적으로 설명하지 않지만, 언급하고 있는 내용입니다. 드로우콜(draw call)드로우콜 이란? CPU가 GPU에게 무엇을(Mesh), 어떻게(Material) 그릴지 정해주고 그리라고 명령하는 것 Render State Changes(렌더 상태 변경 명령)+ DP Call드로우콜 발생 조건메시가 1개, 머테리얼 1개 = 드로우콜 1개 (Batch 1)메시 1개, 멀티 머테리얼 = 머테리얼 갯수만큼 드로우콜 발생(배칭 없이) 같은 머테리얼 공유하는 메시 10개 = 드로우콜 10개 발생다른 머테리얼을 사용하는 경우와 성능에 미치는 영향은 다름.DP Call'그리라는 명령을 하는 것'만을 의미렌더 상태 (Render State)GPU가 갖고 있는 오브젝트를..
[그래픽스] 충돌 검사 - Sphere, AABB, OBB 오늘 작업 현황 (23. 03. 20) SPHEREABBOBB 들어가기 전 본 글에서 직접적으로 설명하지 않지만, 언급하고 있는 내용입니다. 점과 점/선/평면 사이의 거리구의 충돌 검사구 충돌 검사의 장점3D 객체들의 충돌 영역을 나타내기 위해 구를 사용하면 충돌 검사가 굉장히 간단하다. 1. 구와 구 사이의 충돌 검사1) 두 구의 중심 사이의 거리를 구한다.2) 두 구의 반지름을 각각 구한다.3) 중심 사이의 거리와 두 반지름의 합을 비교한다.비충돌: 중심 사이의 거리 > 반지름 합충돌: 중심 사이의 거리 두 중심 사이의 거리를 구하는 법1) 정점 P(p1, p2, p3)과 정점 Q(q1, q2, q3)과의 거리를 구한다. // 3차원상의 점과 점 사이의 거리 구하는 공식: 루트((x1-x2)^2 + ..
[TIL 40장] 변환 함수(ex. to_string, stoi), char과 tchar 관련 함수(ex. append, c_str, wsprintf, lstrcmp), WideCharToMultiByte 오늘의 TIL 목차 (22. 02. 26) char과 wchar의 차이 변환 함수 [ 변환 함수 ] - to_string(int) : int형을 string형으로 변환 - stoi(string) : string형을 int형으로 변환 - atoi(char*) : char*형을 int형으로 변환 - c_str(string) : stirng형을 const char*형으로 변환 조합 함수 ▩ insert(int 위치, string문자열) : 정해진 위치에 문자열을 결합하는 함수 ▩ append : 문자열을 결합하는 함수 1. 문자열.append(추가할 문자열) 2. 문자열.append(추가할 문자열, 문자수) 3. 문자열.append(추가할 문자열, 위치, 문자수) ▩ WideCharToMultiByte int..
[그래픽스] 그래픽 파이프라인 - 버텍스 셰이더(VS), 픽실 셰이더(PS) 단계 목표버텍스 셰이더와 픽셀 셰이더 개념들어가기 전 본 글에서 직접적으로 설명하지 않지만, 언급하고 있는 내용입니다. 셰이더 (HLSL)그래픽 파이프라인IA(입력 어셈블러) → VS(꼭짓점 셰이더) → HS(헐 셰이더) → TS(테셀레이션, 분할기) → DS(도메인 셰이더)→ GS(지오메트리, 기하 도형 셰이더) → SO(스트림 출력) → RS(레스터라이저) → PS(픽셀 셰이더) → OM(출력 병합기)버텍스 셰이더 (Vertex Shader, VS)버텍스 셰이더란?정점을 입력받아 수학적인 연산을 함으로써 물체에 특별한 효과를 주는 데 쓰이는 셰이더 버텍스 셰이더는 GPU에서 실행되는 프로그램이며 고정 기능 파이프라인의 변환과 조명 단계를 대체한다.한번에 하나의 정점(Vertex)만을 처리하며, 직접 데이터..
[DirectX] 셰이더에 리소스 전달 (ID3D11Effect) 목표ID3DX11Effect의 활용도들어가기 전 본 글에서 직접적으로 설명하지 않지만, 언급하고 있는 내용입니다. 셰이더 (HLSL)3D 수업 10일차ID3DX11Effect 인터페이스ID3DX11Effect란?렌더링 파이프라인을 구현하기 위한 상태 개체, 리소스 및 셰이더 집합을 관리하는 인터페이스 D3dx11effect.h 헤더를 포함하여 사용할 수 있다. 해당 헤더는 Effect11 라이브러리에 포함되어 있다.우리는 셰이더에 리소스를 전달하기 위해 ID3DX11Effect를 사용할 것이다.  microsoft/FX11: Effects for Direct3D 11 (FX11) is a management runtime for authoring HLSL shaders, render state, and ..
[DirectX] 그래픽 파이프라인 - 입력 어셈블러(IA) 단계 목표DirectX11을 기반으로 Direct3D에서 드로잉되는 과정의 첫 번째 단계인 IA를 자세히 알아보자. 그래픽 파이프라인IA(입력 어셈블러) → VS(꼭짓점 셰이더) → HS(헐 셰이더) → TS(테셀레이션, 분할기) → DS(도메인 셰이더)→ GS(지오메트리, 기하 도형 셰이더) → SO(스트림 출력) → RS(레스터라이저) → PS(픽셀 셰이더) → OM(출력 병합기)IA (Input Assembler)입력 어셈블러란?그래픽(스) 파이프라인의 첫 번째 단계로, GPU가 처리할 정점(Vertex) 데이터를 입력받는 단계이 단계에서 3D 모델이나 객체를 구성하는 정점들이 GPU로 전달된다.  의미 체계 ID를 포함해 기본 요소(삼각형, 선, 점 등) 및 인접 데이터를 파이프라인에제공하여 아직 처리..
[3D 6일차] 쓰레드(feat. 크리티컬 섹션), CLoader 오늘 작업 현황 (23. 02. 08) 쓰레드크리티컬 섹션함수 호출 규약쓰레드▩ 쓰레드: 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위 ▩ 쓰레드 관련 간단 설명[ 쓰레드 동기화 ]1. 실행순서의 동기화: 쓰레드 실행 순서 정의, 순서에 반드시 따라야 함2. 메모리 접근에 대한 동기화: 메모리 동시 접근 불가, 한 순간에 하나의 쓰레드만 접근해야 하는 메모리 영역[ 쓰레드 동기화 2가지 방법 ]1. 유저 모드 동기화 - 크리티컬 섹션 기반의 동기화2. 커널 모드 동기화[ 크리티컬 섹션 = 임계영역 ] // Critical_section- 메모리 영역의 접근 동기화 = 임계 영역의 접근 동기화- 한 순간에 하나의 쓰레드만 접근을 요구되는 공유 리소스에 접근하는 코드 블럭(ex. __s..
[그래픽스] 계층 구조 오늘 작업 현황 (23. 01. 11)계층 구조월드 행렬 구성을 위한 트랜스폼 순서태양계로 이해하는 계층 구조계층 구조 (Hierarchy)계층 구조애니메이션이 필요한 물체의 대부분은 관절로 이루어져 있고, 관절체는 부모-자식 관계를 갖는 계층 구조로 이루어져 있다.계층구조와 트리계층구조는 자료구조 중에서 트리로 구현이 가능하다. (관절체 애니메이션의 정석 구현 방법)그려질 물체들이 부모 → 자식 순서로 정렬되어 있는 경우에만 탐색 속도가 더 빠른 리스트(list)나 배열(array)를 사용할 수도 있다. ※ 탐색 속도이진트리: O(log n)부모 → 자식 순으로 정렬된 경우의 리스트, 배열: O(1) // 순차 탐색하면 됨.정렬되지 않은 경우의 리스트, 배열: O(n)계층구조 구현 방법계층 구조를 만드..