본문 바로가기

프로그래밍

(77)
C++ 기초 2 컴파일 과정 전처리기 -> 컴파일러 -> 어셈블러 -> 링커 값에 의한 전달 (Call by Value) : 함수를 호출하면서 파라미터를 넘길 때 값이 복제되어 전달된다. 참조에 의한 객체 전달 (Call by Reference) : 파라미터로 넘겨지는 객체가 복제되는 오버헤드를 피하기 위해 사용한다. 주소값만 복제되고 내용은 복제되지 않기 때문에 값에 의한 전달보다 효율적이다. 얕은 복사 (Shallow Copy) : 비트 단위 복제, 포인터가 가리키는 데이터는 빼놓고 피상적으로 그 변수값, 즉 주소값만 복제하는 것이다. 깊은 복사 (Deep Copy) : 포인터 변수값만 피상적으로 복제하지 않고 그 변수의 맥락에 맞게 연관된 데이터까지 재귀적으로 온전하게 복제하는 것이다. 클래스가 동적 할당 메모리를..
기하 셰이더 (Geometry Shader) 기하 셰이더 (Geometry Shader) : 기하구조를 동적으로 파이프라인에 추가하거나 제거하는 능력, 기하 정보를 스트림 출력 단계를 통해서 정점 버퍼로 넘겨주는 능력 그리고 입력된 기본도형과는 다른 종류의 기본도형을 출력하는 능력 등의 기능을 가지고 있다. 처리된 기하구조 자료를 파일로 저장하거나, 파이프라인 연산을 디버깅하는등의 용도로도 활용할 수 있다. 입력 기본도형들을 형성하는 일련의 정점들을 받는다. 이 정점들을 자신의 목적에 맞게 기본도형들로 재해석해서 출력 스트림 객체를 통해 파이프라인의 다른 단계로 전달한다. triangleadj : 이 배열이 인접 정보(adjacency)를 가진 삼각형을 나타낸다는 뜻이다. Hull Shader와 Domain Shader를 NULL로 설정해서 테셀레..
DirectX 11 기초 Device (ID3D11Device) : 셰이더 프로그램 객체, 자원, 상태 객체, 질의 객체 등의 생성을 위한 여러 메서드들을 제공 Device Context (ID3D11DeviceContext) : Device로 생성한 자원이나 셰이더 객체, 상태 객체를 파이프라인에 묶는 데 쓰인다. 렌더링 파이프라인과 계산 파이프라인의 실행을 제어하는 수단을 제공하고, Device로 생성한 자원을 조작하는 수단도 제공한다. Immediate Context : 파이프라인에 직접 연결되는 통로. 하나의 응용 프로그램은 단 하나의 Immediate Context만 사용할 수 있다. Device가 생성될 때 함께 만들어진다. Deferred Context : 주 렌더링 스레드 이외의 2차적인 스레드들이 보낸 일련의 명..
C++ 기초 #include : 헤더 파일을 여기에 포함시키는 기능이다 (전처리기) 실행 과정 : 컴파일 -> 빌드 -> 수행 컴파일 : 번역작업이다. Ctrl + Shift + B 를 이용해서 컴파일 및 빌드를 할 수 있다. C++ 표준 기능의 대부분은 std라는 namespace 안에 존재하고 있다. 이름이 겹치는 것을 방지해주기 위해서이다. cout : 콘솔 창에 출력해주는 기능이다. 뒤에 있는 ""안에 있는 문자들을 화면에 출력해준다. 문자를 여러개 사용할 때는 반드시 "" 안에 넣어주고 이런 것을 문자열 이라고 한다. endl : 개행 기능이다. 변수 : 변하는 수. 값이 바뀔 수 있다. 용량의 최소 단위 : bit 1byte = 8bit 1kbyte = 1024byte 1mbyte = 1024kbyte 1..
3D 애니메이션 이론 2 Animation Methods as Data Compression Techniques 가장 많이 쓰는 방법은 오브젝트 표면에 애니메이션 컨트롤용의 작은 포인트를 잡아주는 것이다.이렇게 하면 많은 양의 데이터가 잠재적으로 들어있는 애니메이션을 만들 수 있다 Joint는 직접적으로 조종되는 오브젝트다. 그리고 bone들은 심플하게 joint들 사이의 빈공간에 위치하게 된다. Joint Index는 애니메이션 데이터 구조 내의 Joint를 나타내기 위해 사용된다ex) Child Joint는 지정된 인덱스의 부모 Joint를 참조한다Skinned 메쉬에서 정점은 인덱스로 바인딩된 Joint를 나타낸다 Joint 구조체는 Joint의 이름, 부모 Joint의 인덱스, Inverse bind pose가 들어간다B..
Directx11 렌더링 파이프라인 Swap Chain : 렌더링된 내용물을 창에 표시하는데 쓰이는 실제 버퍼들을 추상화한 것 렌더링 파이프라인 입력 조립기 (Input Assembler)정점 셰이더 (Vertex Shader)덮개 셰이더 (Hull Shader)테셀레이터 (Tessellator)영역 셰이더 (Domain Shader)기하 셰이더 (Geometry Shader)래스터라이저 (Rasterizer)픽셀 셰이더 (Pixel Shader)출력 병합기 (Output Merger) 1. 입력 조립기 (Input Assembler) : 자원들로부터 입력 자료를 읽어 들여서 파이프라인의 이후 단계들이 사용할 정점들을 긁어모으는 작업을 담당한다. 취합한 정점들과 기본도형(Primitive) 연결성 정보를 다음 단계로 넘겨준다. 2. 정점 ..
3D Animation 이론 1 SRT - Scale, Rotation, Translation Skinning 장점 : 정점의 뼈 가중치를 갖는 메쉬가 비선형 방식으로 구부러진 것 처럼 부드럽게 변형되는 것 처럼 보일 수 있다-> 더 자연스러워 보여진다 프레임 구조에는 bone 구조, 메쉬 구조, bone과 메쉬 정점의 관계를 가지는 데이터들이 있다 메쉬 데이터는 노말, 텍스쳐 좌표와 같은 다른 데이터와 함께 루트 프레임에 상대적인 정점의 배열로 구성된다 정점의 pos는 주로 pose나 rest pos에 있다애니메이션 메쉬는 주로 쉐이더에서 렌더한다 Frame TransformationMatrix는 애니메이션 배열을 사용하는 Render Cycle로 채워져 있다 애니메이션 컨트롤러 오브젝트나 함수를 이용해서 Transform을 계산하고..
Tessellation 테셀레이션 (Tessellation) : 작은 조각들을 틈이 없게, 그리고 겹치지 않게 이어 붙여서 하나의 surface를 형성하는 것 -> 여러 개의 작은 기하구조들을 틈 없이 겹치지 않게 붙여서 하나의 표면을 만들어 내는 것 래스터 기반 컴퓨터 그래픽에서는 일반적으로 표면을 주로 삼각형들로 표현했다.삼각형이 항상 블록꼴이고 세 정점이 항상 같은 평면에 있다는 성질 때문이었다.하지만 삼각형으로는 평평한 기하학적 표면만을 표현할 수 있다는 제약이 있다.많은 수의 작은 삼각형들로 매끄러운 곡면을 근사하는 것이 가능하지만, 기본 단위인 삼각형은 여전히 평평하다. 곡면을 표현하는 기법NURBS (Non-Uniform Rational Basis Splines) : 매끄러운 곡면에 대한 일반화된 수학 형식세분 표..