티스토리 뷰
근대 바닥이 검정색은 말이 안되는데;
문제 찾아 삼만리
전에는 살짝만 검색하면 나오던 SSAO 구현들이 지금은 검색해도 나오지도 안는다 ^^
VS_OUTPUT GeometryVS( VS_INPUT input )
{
VS_OUTPUT output;
output.HPosition = mul( float4(input.Pos,1), g_WorldViewProjection );
output.PositionV = mul( input.Pos, (float3x3)g_WorldView );
output.NormalV = mul(input.Pos, (float3x3)g_WorldView);
return output;
}
으아, Normal에 Pos를 넣었는데도 먼가 있어보이는 결과를 내준 구현에 감사를
NdcDepthToViewDepth(sampleDepth)
새로넣은 Depth는 NDC이므로 View로 돌려야한다
Normal Texture Image 이다.
평면일 경우 위 처럼 단색이 찍혀야한다. 난 왜 그라데이션을 보고 이쁘다고만 생각했을까;
으아 갈길이 멀다
바닥의 저 음영은 먼가
축소하니 흔적이 보인다
가짜인듯. LUNA 꺼에 모델을 강제로 적용해보니 이런 형태.
하지만 위에 개체를 없애고 바닥만 보이니 문제 없네
그럼 내껀 도대체 머가 문제인가
- Offset 을 잘못 계산함
보면 알겠지만 식이 틀렸다, 우선 순서부터; 20만 같은 값 나오는데 0.5를 더하다니 예전에 대충 되는 것 같아서 ProjTex 대신 위의 식을 사용했던게 원인 나눈뒤 texture 좌표계로 환산하기 위해 (0.5, -0.5)를 곱해야한다. openGL과 MS의 차이 (z축 방향땜시 인듯)
- Random 은 왜이런가
으아 16F 인데 32로 초기화 했다
- 카메라 Depth 가 너무크고 개체에 비해 Radius 가 넘 크다
이전 Near, Far 가 0.1, 1000000 일 때,
장면이 잘안나와서 홧김에 바꾼값인데 까먹고 있었다 normal 값을 -1로 초기화 해뒀지만 작아서 안먹히고 있었다
1, 1000 으로 바꾸고 난뒤
occlusion += (sampleDepth <= Sample.z ? 1.0 : 0.0) * rangeCheck * dp;
위와 같이 비교하는 식을 써서 문제다.
내부에 음영은 Scale 이 작아서 offset의 x, y 가 영향을 많이 받아서 멀리 떨어진 부분을 참조해서 발생한 것
scaling 을 도입하면,
Range Check를 추가하면
'Game > DirectX 11' 카테고리의 다른 글
Environment mapping (1) (0) | 2017.05.13 |
---|---|
SSAO(4) (0) | 2017.05.10 |
SSAO(2) (0) | 2017.05.07 |
Bool HLSL (0) | 2017.05.05 |
SSAO (1) (1) | 2017.05.05 |
- Total
- Today
- Yesterday