일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 메모리 누수
- Toon Shader
- 가상 바이트
- 개인 바이트
- ASW(Application SpaceWarp)
- Virtual Byte
- 프로그래밍 기초
- 게임 수학
- Specular
- VR
- Cell Shader
- OculusMotionVectorPass
- Windows Build
- Rim Light
- C언어
- working set
- 벡터
- Private Bytes
- URP
- URP로 변경
- 3d
- Cell Look
- Cartoon Rendering
- Three(Two) Tone Shading
- ColorGradingLutPass
- 작업 집합
- AppSW
- Today
- Total
목록분류 전체보기 (258)
WinCNT
액터 통신 (Actor Communication) 액터의 행동에 따라서 다른 오브젝트들을 어떻게 반응시킬 것인가에 대한 내용들 예시 몬스터를 사라질 때 문이 열리게 하려면? 스위치로 작동으로 PointLight Hidden 제어하려면? 대상을 구분하지 않고 Interact 호출에 반응하게 하려면? 통신 방법 ※ 대상의 오브젝트 레퍼런스는 기본적으로 필요 유형 사용시기 요구 직접통신 특정 인스턴스와 통신 할때 대상을 특정하기위해서 레벨 에디터에서 지정(인스턴스 수정가능한 멤버로 기억) 하거나 Actor를 Tag로 검색 Cast (동적캐스팅) 특정 클래스의 함수나 변수에 접근하기위해 클래스를 검증할때 상대 액터의 오브젝트 레퍼런스를 동적 캐스팅이 성공하면 원하는 변수나 함수를 사용한다. Interface C..
보호되어 있는 글입니다.
PBR Physically Based Rendering Roughness와 Smoothness라는 개념이 등장함 (반대되는 개념일 뿐, 변수는 같다) 수식은 엄청나게 복잡하지만 고작 반사광을 정밀하게 표현하기 위한 것 하지만 정말 간지는 난다 BRDF BRDF : Bidirectional Reflectance Distribution Function (양방향 반사 분포 함수) BRDF는 Specular계산이 목적이다 매끈한 면과 거친 면의 반사 차이 왜 거친 면은 빛이 난반사 되는가 Microfacet(미세면) 분포 - 물리기반 조명모델에서는 물체의 표면을 미세한 면들의 집합이라고 생각 - 퐁 반사모델에서는 반사한 빛을 반영반사 지수의 강도로 희석 했습니다. spec = pow(dot(R,V),n) - 하..
광원의 요소(Legacy Model) 1. 주변광(Ambient Light) 특정한 방향이 없이 주변을 덮고 있는 빛을 의미한다 직접적인 광원과는 상관 없이 여러 가지 요소들에 부딪히고 반사되어 점차 방향을 잃어버린 빛의 형태에 해당한다(간접 광원) PBR에서는 IBL로 간접 광원 등을 구하기에 좀 더 사실적으로 구해지지만, 레거시 모델에서는 상수 값으로 계산에 덧셈되는 이상적인 빛 (정밀하게 계산하는 SSAO 등의 테크닉이 있긴 하다) 2. 확산광(Diffuse Light) 일정한 방향으로 빛이 들어와서 물체의 표면에서 여러 방향으로 분산되는 빛을 의미한다 시점(눈)과는 상관 없으며, 빛을 받는 정도에 비례해서 밝게 보인다 3. 반사광(Specular Light) 특정한 방향으로 유입되어 한 방향으로 ..
계층 구조 구현 방법 부모-자식 관계를 설정해서 변환 행렬을 누적해서 곱하는 것으로 계층 구조를 구현할 수 있다 인간의 몸은 트리 구조로 되어 있으므로 보통 인간의 계층 최상도(루트)는 골반, 혹은 허리로 지정하는 게 국룰이다 그래서 허리를 움직이면 모든 부분이 움직인다 (고급 기술인 IK - Inverse Kinematics는 다른 영역) 인간과 같은 관절체를 움질일 때는 결국 구현은 행렬의 곱이다 자식에서 부모로 누적해서 행렬을 곱하는 것이 계층 구조를 구현하는 방법이다 키프레임 애니메이션 블렌더나 맥스에서 애니메이션 트랙이라는 것이 존재한다 0번 트랙에 초기 동작(T자형 캐릭터 등)을 설정함 T자형이 기본인 이유는 리깅할 때 본이 영향을 미치는 영역을 명확하게 하기 위해서이다 예를 들어 100번째 ..
데이터는 0과 1(Bit)의 모음이지만 기본적으로 비트 단위로 데이터를 다루는 일은 없다 우리가 다루는 데이터의 최소 단위는 Byte이다 CPU의 레지스터가 가져가는 데이터의 단위 = WORD(2Byte)였다(16비트) 참고로 WORD는 윈도우즈에서만 썼던 단위이며 리눅스에는 없다(short를 씀) 멀티 플랫폼으로 개발할 경우에는 다루는 단위들이 다 다르니 type 재정의를 하는 경우가 많음 일반적으로 데이터는 CPU, 캐시, RAM를 오고 간다 변수는 메모리에 보관하며 메모리 => 캐시 => CPU로 데이터가 이동(Move)할 때 특정 단위로 오고 가고 할 것이다 캐시 메모리에서 이동하는 데이터의 단위를 캐시 라인이라고 한다 (CPU 메모리에서는 프레임(?)이라고 하는 것 같다...아마) 만일 메모리에..
제프리 리처의 Windows via C/C++(복간판)을 참고하며 정리한 문서입니다. 메모리는 모든 영역 전반에 걸쳐서 있다 네트워크 또한 시스템의 하부로 볼 수도 있지? 않을까? Object Pool 오브젝트 = 객체, 실제로 메모리에 올라와 있는(올라와야 하는) 것들 메모리 누가 관리하나? - OS 관리하는 기법으로는 페이징이 있다 하지만 OS마다 구현은 다를 것 누가 사용하나? - 프로세서(CPU) 메모리는 가상주소공간(논리적 주소)와 물리적 주소로 나눌 수 있다 논리적 주소를 통해 물리적 주소를 찾아서 데이터를 가지고 CPU 안에 있는 메모리(즉, 레지스터)에 넣는다 메모리 구조 코드 영역(text) = 실행할 프로그램 코드(기계어) 데이터 영역 전역 변수와 정적 변수 initialized dat..
충돌 감지(충돌 체크) 2D 게임에서 필수적인 것 CC(Circle Collision), AABB, OBB CC는 3D의 바운딩 스피어 Collision Detection Sphere, AABB, OBB, 8-DOP...... 예시) 유니티의 메시 컬라이더 - 폴리곤 자체로 충돌 처리 CC/AABB/OBB CC 원과 원의 반지름, 원의 중점 간의 거리 사실 AABB보다 비용이 많이 든다...대신 직관적으로는 이해하기 쉬움 구현 힌트 (서클)collider 클래스를 만든다 반지름 위치값(정확히는 collider를 가지고 있는 오브젝트가 가지고 있음) AABB Axis-Aligned Bounding Box(축 정렬 경계 상자) 축에 나란하게 생긴 BB CC보다 비용 - 연산에 드는 시간(혹은 메모리)이 적게..
캐릭터를 간단하게 움직이게 해보려면 뭘 해야할까? Character Class를 상속한 BP나 C++ 클래스 생성 SkeletalMeshComponent의 메쉬 설정과 Animation Blueprint (AnimInstance) 설정 CharacterMovementComponent 의 max walk speed 설정 , 속도는 1초당 속도 예) 기본값 600 은 1초 600cm의 속도 (1 unreal unit = 1cm) AI Charactrer이면 Pawn 카테고리의 AIController Class 와 Auto Possess 를 확인 Player Character이면 GameMode에서 PlayerController Class와 Default Pawn Class를 확인 추가 구현 없다면 그대로 써..
Direct2D 비교적 최근에 나온 라이브러리 DirectX(3D) 기반 참고) DDraw DX7 시절(스타에 쓰인 기술) 2차원 API 요즘에는 안 쓰인다 DX9가 많이 쓰였다 COM API 인터페이스를 극단적으로 분리 다른 기종 간의 통신을 위해 사용 DirectX는 모두 COM으로 되어 있음 Factory, Render Target Factory 생성 Render Target 생성 그리기 Render Target = GDI의 백 버퍼 같은 거 2D Engine Framework Framework = 틀 = 枠 예) 대표적인 프레임워크는 Update, Render 2D 엔진 프레임워크란 결국 API들을 C++로 래핑(클래스 안에 넣음)한 것 e.g. 2개의 하부 구현 추상화 GDI의 API로 만든 엔..