일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Three(Two) Tone Shading
- ColorGradingLutPass
- working set
- Toon Shader
- Private Bytes
- C언어
- 게임 수학
- Cartoon Rendering
- URP
- 작업 집합
- 가상 바이트
- Cell Shader
- Cell Look
- AppSW
- 개인 바이트
- 벡터
- ASW(Application SpaceWarp)
- Rim Light
- URP로 변경
- VR
- 3d
- 프로그래밍 기초
- OculusMotionVectorPass
- Specular
- 메모리 누수
- Virtual Byte
- Windows Build
- Today
- Total
목록전체 글 (258)
WinCNT
Bloom 빛이 Blooding하는 느낌 Blur 효과를 사용한다 Bloom을 위해서는 우선 밝은 부분을 Bloom Curve 추출해야 한다 (1.2와 같은 파마리터 수치는 알아서 설정) //#define BLOOMCURVE_METHOD_1 //#define BLOOMCURVE_METHOD_2 #define BLOOMCURVE_METHOD_3 float GetBloomCurve( float x, float threshold ) { float result = x; x *= 2.0f; #ifdef BLOOMCURVE_METHOD_1 result = x*0.05+max(0,x-threshold)*0.5; // default threshold = 1.26 #endif #ifdef BLOOMCURVE_METHOD..
Radial Blur과 비슷하면서 다른 Motion Blur Motion Blur의 종류 Full Scene Motion Blur : 카메라가 운동(이동, 회전)할 때 발생 Object Motion Blur : 카메라는 고정, 오브젝트가 운동할 때 발생 Full Scene Motion Blur보다 Object Motion Blur는 조금 만들기가 까다롭다 Full Scene Motion Blur의 원리 1, 2번 보충 Depth는 미리 보관해 둔다 Depth가 있으면 3차원 공간 상에 어디에 있는지 구할 수 있음 텍스처 좌표를 투영 좌표계의 x, y로 바꾸고, 거기에 깊이 값에서 z를 가져오면 투영 좌표계에서의 버텍스의 좌표가 나온다 직전 프레임의 View, Projection 행렬을 가지고 있는다 (사..
Shader 색을 칠하는 부분 Renderer의 핵심적인 부분 Rendering-Pipeline의 프로그램 가능한 부분 그래픽스 카드들이 지원하는 버텍스와 폴리곤으로 3D를 표현하는 3D 기반에서는 특히 Vertext Shader와 Pixel Shader가 가장 중요하다 (복셀 기반 3D 등은 알아서 만들어야 한다) Shader 버전별 차이 DX와 Feature Level은 완전히 일치하진 않음 DX9 - Moedl 2.0, 3.0 20년 정도 대세였던 모델(와우) DX10 - Model 4.0 흥행 실패 DX11 - Shader Model 5.0 DX9의 불합리한 부분이 많이 개선되고 흥행에도 성공함 HLSL(Hight-Level Shader Language) C/C++과 비슷한 문법 이전에는 어셈블리..
배열 포인트의 선언 int _tmp[10]; int(&_refTem)[10] = _tmp; 응용하면 _countof 혹은 ARRAYSIZE와 같은 같은 외계인 코드도 쓸 수 있다... https://stackoverflow.com/questions/4064134/arraysize-c-macro-how-does-it-work ARRAYSIZE C++ macro: how does it work? OK, I'm not entirely a newbie, but I cannot say I understand the following macro. The most confusing part is the division with value cast to size_t: what on earth does that acco..
집중선과 같은 효과를 주는 Post Processing 기법 중 하나 액션 게임, 레이싱 게임 등에 자주 사용된다 Center로 향하는 Direction 벡터를 구한 뒤 정규화 원본 값과 누적된 값를 가중치로 선형 보간한다 SSS
Post Processing : 실시간 이미지 보정 Post Processing의 한계 이미지 왜곡은 불가능하다 Warping, Morphy 등 Morphy는 캐릭터 표정 변화에 사용하기도 한다 (표정 2개를 만들고 버텍스를 보간) Blur(혹은 Bokeh) Bloom 필터를 최초로 잘 만든 사람이 일본인(마사키 카와세)이라 Bokeh라는 용어가 전문 용어로도 사용되고 있다 Blur는 이미지를 흐릿하게 번지게 하는 것 가장 유명한 Blur 알고리즘은 Gaussian Blur이다 Gaussian 분포 함수 Gaussian Blur에 사용되는 함수 2차원 Plot[(E^(-(x^2)/2))/(Sqrt[2Pi]),{x,-4,4}] 3차원 Plot3D[(E^(-(((x^2)+(y^2))/(2*(1.398)^2)..
참고 사이트 https://docs.microsoft.com/ko-kr/cpp/c-runtime-library/reference/beginthread-beginthreadex?view=msvc-170 _beginthread, _beginthreadex 자세한 정보: _beginthread, _beginthreadex docs.microsoft.com https://docs.microsoft.com/ko-kr/cpp/parallel/concrt/concurrency-runtime?view=msvc-170 동시성 런타임 자세한 정보: 동시성 런타임 docs.microsoft.com 동시성 런라임에서 PPL(병렬 패턴 라이브러리)를 특히 추천! 다만 동시성 런타임을 사용하기 위해서는 Modern C++를 배울..
Renderer 그림을 만들어주는 것 DirectX는 투영될 것을 상정한 폴리곤 기반의 렌더러 그래서 실제 물리적인 세상과는 다른 점들이 많다 터레인 시스템 효율성 때문에 사용 Engine Diagram 3D 엔진의 카테고리 Graphis Library(API들의 모음) 예전의 그래픽스 엔진들(Gamebryo 이전) 예) BitBlt Renderer + Editor 모델 뷰어나 맵 에디터 정도 추가 유니티/언리얼 3, 4 이전의 과도기 Component 기반의 솔루션 기존 스펙 + MultiPlatform, Hot Reload/Play, Component, Serialize, Metadata Visual Scripting(Coding) 3D 엔진은 무엇으로 구성되어 있을까 크게 2가지 축 Renderin..
3D Graphics Engine 3차원 그래픽스 엔진 엔진이란 말이 퍼지기 전에는 라이브러리 / API라고 부르기도 했다 실제로 전에는 라이브러리, API와 같이 유용한 함수를 공용으로 사용하는 정도였음 솔루션은 에디터까지 포함한다 엔진(Engine) 계속 잘 돌아가는 것이 엔진이다 일단 돌아가야 하고 퍼포먼스가 잘 나와야 하고 리소스 관리 등이 잘 되어야 하고 사용하기 편해야 하며 기능이 많아야 한다 등등 4학기의 핵심은 우선 리소스 관리이다 Specification 모델링 소프트웨어에서 제작한 모델을 로드하는 것이 최소 조건 가능하다면 PBR이 적용된 엔진이 있으면 베스트? https://google.github.io/filament/Filament.html Physically Based Rende..
예전 카툰 렌더링은 Outer Line이 정말 중요하게 여겨졌지만 현재는 딱히 중요하게 여기지 않은 것이 트랜드가 되었다 Cartoon의 3요소 Specular Reflection (Two)Tone Shading Rim Lighting Toon shading의 3가지 방법 1. 전통적인 Texture LUT사용 N dot L을 밝기 값으로 사용하지 않고 텍스처의 U 좌표로 사용하는 법 이 방법의 장점은 텍스처를 바꾸기만 해도 다양한 효과를 나타낼 수 있다는 것 (팀 포트리스에서도 적용함) 2. ceil() 혹은 floor()함수 사용 N dot L의 값을 경계로 나눠서 구분한다 음영이 너무 칼같이 끊어지기 때문에 현재 트렌드에는 좀 맞지 않는다 3. smoothstep()함수 사용 smoothstep은 ..