일단 깊이버퍼값도 있고 뷰 프로젝션 역행렬도 있는 상태인데 여기서 스크린 좌표계를 어떻게 클립 좌표계로 바꿔줘야할지 모르겠음
오픈 GL에서는
vec4 ndcCoords = vec4(
2.0*(gl_FragCoord.x / screenWidth) - 1.0,
2.0*(gl_FragCoord.y / screenHeight) - 1.0,
2.0*depthValue - 1.0,
1.0);
이런식으로 쓰던데 스크린 좌표계가 달라졌으니 공식도 달라져야하잖아
아무리 찾아도 관련된 코드가 안보이는데 어떻게 고쳐줘야할까?
일단 내가 찾아보고 써본 코드는 이거임
float4 ndcCoords = float4(
pixel.x / width * 2 - 1,
pixel.y / height * (-2) + 1,
depthValue * 2 - 1,
1.0);
언리얼갤로
글도 이틀에 한번씩 올라오는곳에 어케 질문을올림
이런거 계산 못하는 나같은 게이들은 언리얼이나 유니티를 해야하는 거시와요
아래 식이 틀렸다는거임? 딱히 문제없어보이는데
Depth를 저렇게하는게 맞는지 모르겠음 xy 좌표계는 msdn에 있는데 Z가 어케 처리되는지가 안나와서
다렉 만진지 하도 오래되서 긴가민가 하긴한데 아마 맞을거임. opengl 이랑 z 축 반전되는 쪽은 view space 쪽일거라 그쪽에서만 조심하면 될걸?
어쩌다보니 아님말고 식이 되어버린거같은데 여튼 화이팅
ㄱㅅㄱㅅ 쉐이더 돌리다 이쪽부분에서 터지던데 이부분때문이 아녔나보네...
쫌 찾아봤는데 dx ndc coord 에서 z 범위 0~1 네. opengl 은 -1~1 이고. z 에 *2 -1 한거 빼야겠는데?
깊이 버퍼에 기록한 값 그대로 쓰면 되는건가 그럼?
그럴듯?
https://www.slideshare.net/Mark_Kilgard/opengl-32-and-more/26-Direct3D_vs_OpenGL_Coordinate_System
이거한번
봐봐 opengl coord system이랑 비교한 슬라이드
ㅇㅋㅇㅋ 땡큐
ㅋㅋㅋㅋㅋ 그렇게하니까 z값 110억나옴 뭔가 잘못한듯 ㅋㅋ
x,y 는 정상적으로 나오고?
ㅇㅇ xy는 정상적인 값으로 나옴
지금 쉐이더 어케 작동하는지 올려볼게