티스토리 뷰

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
링크