티스토리 뷰
Texture 쪽은 porting 끝남.
근대 Sampler는 좀 이상하게 된듯
그래서 한번 찍어봄
비율이 안맞음
보니까 native로 하나 그리고 그걸 복붙하는 형식이군
이건 어떻게 context manager나 command list에 cache 두고 draw 시
그리는 식으로 Dx11 로 포팅은 가능하지만
더러워진다. 왜 저딴게 들어가서;;
자유형식으로 기술하고 PSO나 context에서 쑤셔넣으면 거기에 박히는 건데
constant나 몇몇값은 binding 도 없으
공용 API는 SetResource Transition 정도로 멈춰야할듯
확실한건 vulcan 을 좀 보고 결정해야함
vulcan 은 오픈소스 예제 괜찮은거 많던데
괜찮은 sobel 예제
mini engine dx12 - MIT license
float TexelWidth = 1.0f / g_NativeWidth;
float TexelHeight = 1.0f / g_NativeHeight;
float X = Math::Cos((float)SharpeningRotation / 180.0f * 3.14159f) * (float)SharpeningSpread;
float Y = Math::Sin((float)SharpeningRotation / 180.0f * 3.14159f) * (float)SharpeningSpread;
const float WA = (float)SharpeningStrength;
const float WB = 1.0f + 4.0f * WA;
PS shader:
float3 Color = WB * GetColor(uv) - WA * (
GetColor(uv + UVOffset0) + GetColor(uv - UVOffset0) +
GetColor(uv + UVOffset1) + GetColor(uv - UVOffset1));
주로 보던 sharpening kerenl 형이 안보이니
먼 헛짓인가 했는데
http://fourier.eng.hmc.edu/e161/lectures/gradient/node1.html
위와 같이 기술하기도 한단다
WB = 1 + 4 * WA 이니 WB를 풀어서 정리하면
float3 Color = C(uv) + WA * ( 4 * C(uv) - C(uv-dx) - C(uv+dx) - C(uv-dy) - C(uv+dy))
WA 우변을 matrix 폼으로 끄집어 낸다면? 4개랑 -1,-1,-1,-1 이 존재하고 C의 배치는 동서남북 한개씩이므로
1 + WA*(laplace conv pixel(dx, dy))
보통 3x3 위의 커널이면 WA는 1/4 로 두고 factor를 조정하는데 그것 까지 포함해서
했다고 보면 된다
https://pdfs.semanticscholar.org/fcbf/0322f336f5d2470b623fe4115dd4efbea9b7.pdf
WA가 얼마든 이미지 값의 총합은 1로 유지된다 OK
확실히 따라 써보는건 도움이 되네,
X, Y를 그냥 넘어갈뻔 x, y는 원의 한점이고 y, -x는 직교하는 점이므로 회전하는 십자 포인트를 생각하면 됨.
'Game > Mini Engine' 카테고리의 다른 글
Mini engine porting (6) - FXAA (0) | 2017.06.02 |
---|---|
Mini engine porting to DX11 (5) - Gamma correction (0) | 2017.06.02 |
Mini engine porting (3) (0) | 2017.05.27 |
Mini Engine porting (2) (0) | 2017.05.27 |
Mini Engine porting (1) (0) | 2017.05.22 |
- Total
- Today
- Yesterday