일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Cartoon Rendering
- Virtual Byte
- Private Bytes
- 프로그래밍 기초
- 작업 집합
- URP로 변경
- Toon Shader
- Three(Two) Tone Shading
- Windows Build
- 3d
- 벡터
- OculusMotionVectorPass
- Specular
- 메모리 누수
- C언어
- AppSW
- VR
- 게임 수학
- Cell Shader
- URP
- working set
- ColorGradingLutPass
- 개인 바이트
- Rim Light
- ASW(Application SpaceWarp)
- Cell Look
- 가상 바이트
- Today
- Total
목록게임 프로그래밍(학습 내용 정리)/3D Game Programming (19)
WinCNT
Blending 색을 섞는 행위 3D 그래픽스에서는 주로 픽셀의 색을 섞는 것을 의미한다 (hue saturation) 색을 섞는 행위 자체는 어디에나 일어날 수 있다 DX에서의 색의 값은 일반적으로 0~1이다 색상 간의 연산은 다양함 알파 값은 특별히 Alpha Blending 수많은 색상의 Blending 방법 중 하나일 뿐 섞는 방법은 여러가지가 있다 더하고 정규화하면 Hue의 중간 값, 곱하면 광원의 블렌딩 등등 DX의 Blending DX에서는 미리 Blending의 형태를 정할 수 있다 Target(보통 렌더 타겟)의 픽셀과 지금 그릴 픽셀 BlendState D3D11_BLEND enumeration D3D11_BLEND_OP enumeration RenderState와 비슷하게 비리 만들어..
Post Processing 모든 그리기가 끝난 다음, 뭔가 또 처리하는 것 Blur Bloom/Gloom HDR(Legacy나 PBR과 상관 없는 의미의 HDR) DOF(Depth Of Field, 피사계심도), ExponentialFog(깊이/거리 기반 안개), Motion Blur, SSAO 모든 Deffered Rendering의 기술 Deffered Renddering 픽셀 단위로 데이터가 들어오기 때문에 버텍스의 수와 많아도 상관 없다 픽셀 셰이더의 스펙이 높아지면서 빛을 발휘하기 시작했다 An Implementation of Post Processing 일단 텍스처(렌더 타겟)(들)에 모두 그린다! Blur는 한장, DOF는 두장이 필요하다 등등 그 텍스처들을 적절히 조작한다 화면을 모두 덮..
Depth Buffer 정확히는 Depth-Stencil Buffer 깊이 버퍼를 시각화한 버퍼! (주로 디퍼드 렌더링 상태 중 하나로 선택됨) 어떤 오프젝트가 앞에 있나 없나를 판단 Far면 0(흰색), Near는 1(검정) 디퍼드 렌더링에서는 깊이 버퍼 외에도 알베도(디퓨즈), 노멀 값, 월드 포지션 등등 다양한 데이터를 2차원 텍스처로 만든다 참고로 깊이 버퍼는 각 채널에 깊이 말고 스텐실 정보를 담을 수 있어서 Depth-Stencil Buffer라고 한다 (구성은 다를 수 있음) 스텐실은 거울, 호수 등에 사용되거나 한다 Render Target(렌더 타겟) 렌더링 되는 대상을 말한다 꼭 화면이 아니어도 된다(텍스처 등에 그릴 수도 있음) SRV(셰이더 리소스 뷰, Shader Resource ..
구현은 어렵지 않지만 원리는 어렵다 Normal, Light 노멀 "맵" Map 자체는 텍스처이므로 Diffuse처럼 읽으면 된다 (SRV로 Shader로 보내면 됨) 노멀 맵 자체는 텍스처와 마찬가지로 RGB의 정보이다 Normal Map은 텍스쳐의 RGB 정보에 노말벡터 XYZ를 인코딩한 맵이다 하지만 그 노말 좌표들은 모두 접선 공간(Tangent Space)을 기준으로 작성된다 노멀 맵 쓰는 이유는 픽셀당 조명(Per-Pixel Lighting)을 구현하기 위해서이다 이러한 노말들을 객체공간으로 변환시키기 위해서는 정점마다 접선(Tangent)과 종법선(Binormal), 그리고 법선(Normal) 정보를 가지고 있어야 한다 정점 쉐이더에서 접선과 종법선, 법선을 픽셀로 넘긴 다음 픽셀 쉐이더에서..
Picking 3D 게임에서 뭔가를 집으려면? 2D의 경우 마우스 위치와 스크린의 해상도가 일치함 즉 좌표계가 1:1로 대응하므로 쉬움 3D의 경우 3D에서는 프러스텀, 보이는 영역 안에서 집는 것 Near, Par로 봐도 되고, 카메라의 전방 벡터로 해도 되고... Picking Ray 피킹 지점에서 레이를 쏴서 집는다 깊이에 따라 여러 개가 교차 가능하며 보통은 카메라와 거리 계산을 통해 가장 가까운 것을 잡도록 한다 계산 Screen 좌표계 -> NDC 여기서 Near-Far 반직선을 구함 NDC -> World 월드 공간에서 교차를 구하면 된다 주의점들 직접 구현할만한 것은 Shere와 AABB정도라고 한다 OBB는 상당히 복잡한듯... (함수 쓰자) SSS
Skinnig Animation 다른 말로 Skeletal Animation 버텍스가 여러 개의 Bone의 가중치(Weight)를 가지고 있으며 가중치에 따라 버텍스의 위치 등을 보간해서 애니메이션하는 기법을 말한다 관절 등부드럽게 이어져야 하는 부분에는 다 적용할 수 있다 3D Max Exporter 3D Max의 ASE 익스포트의 디폴트 설정으로는 스키닝 값을 출력할 수 없다 SDK를 설치해서 애드온으로 커스터마이징해야 한다 (복잡한 부분이 많음) Bone List Bone0 Bone1 ... WVertex List WVertex 0 Weight 0 0.3(가중치는 합이 1) Weight 1 0.2 Weight 2 0.5 스키닝이 적용되는 오브젝트(버텍스)들은 어떠한 본한테 어느 정도(즉 가중치)로 ..
참고 사이트 https://onecoke.tistory.com/entry/DirectX3D-ASE-File-%EA%B5%AC%EC%A1%B0 [DirectX3D] ASE File 구조 * DirectX 프로젝트에 ASE 파일의 데이터들을 불러올 때 필요한 데이터 목록 및 주의해야할 것들. * 각 데이터에 대한 자세한 정보는 없음. 1. Scene - *SCENE_FIRSTFRAME : 시작 프레임 - *SCENE_LASTFRAME : 마.. onecoke.tistory.com https://community.khronos.org/t/ase-file/45704/5 SSS
Animation Animation : 움직이는 것 시간에 종속적 영상은 Pre-Rendered 게임은 리얼 타임 렌더링 Animation - Computer Graphics Sprite Animation – 비트맵을 교체 전통적인, Lagacy한 2D 게임들, 셀 애니메이션 등 2D Vector – Morph, Transform, Skinning 스파인, 라이브 2D등의 프로그램 참고로 스파인은 3D처럼 작동한다 본이 있고 특정 본에 대한 가중치가 있는 등등 3D Graphics - Morph, Transform, Skinning 현존하는 모든 3D관련 리얼타임 렌더러은 Morph, Transform, Skinning 중 하나 예를 들어 표정이 있는 게임들은 대부분 Skinning Animation –..
.ASE 파일로부터 Node 정보를 읽어본다 (나중에는 FBX나 Blender의 파이썬 Export 등등) NodeTM 정보를 읽고, Vertex 정보를 재구성 Hierachy Hierarchy(하이어라키, 계층 구조) 계층 구조 - 부모, 자식 관계 부모의 트랜스폼을 자식들이 따라간다 핵심은 World Space Local Space의 변환이다 World Space(세계 공간) 단 하나의 공간 Local Space(지역 공간 / 국소 공간) 오브젝트마다 존재하는 공간 자신을 기준으로 생각한다, 혹은 부모의 트랜스폼을 상속받는다 Camera의 View Space도 일종의 로컬 공간 NodeTM Node_TM 토큰을 만나면 트랜스폼 하나를 만들면 된다 TM_ROW는 행렬의 행 TM_POS 등은 각각의 요소..
ASE Format Ascii Format은 게임 인재원에서 교육용으로 채택한 포맷이다 Ascii Format은 TEXT로 읽어서 파싱하는 방식이며, 구조가 간단하여 교육용으로 적당함 사실 실제 업무에서는 거의 업계 표준이 된 FBX 포맷을 사용한다 ASE Format 개념도 Identifier Scene Scene정보 외에도 애니메이션 정보도 들어가는 토큰 Mesh Tokenizer - 소스를 읽어서 토큰 단위로 나눔 Lex & Yacc - 토큰에 의미를 부여 Parser - 문법을 검사하고 의미에 맞게 처리함 주의점 좌표계 ASE는 3DSMAX 구조이다 좌표 - Y, Z가 바뀜 Face cull - 반대 방향 ABC --> ACB Texture - v좌표 반전 1.0f -v Vertex를 Split해..