티스토리 뷰
지난번의 먼가 안타깝게 실험하다 끝난 결과를 뒤로하고 또 미러를 구현할일이 생겨 정리.
지난번 글을 정리하자면,
Environment reflection 을 구현하려면 결국 mapping 을 해서 그걸 참조로 해서 그리는게 싼 편이다.
근대, 거울의 구현은 기초 강좌를 보면 mirrored matrix를 곱해서 그림자를 빼고 그리는데
이 과정자체가 거울 시야에서 일정거리에 있는 개체들 모두에 대해,
stencil or depth buffer 로 그리는 식이다.
http://www.inf.ed.ac.uk/teaching/courses/cg/lectures/slides9.pdf
이런식이면, 거울의 텍스쳐라던가 바닥 텍스쳐를 추가하려면 쉐이더 코드를 고치던가 blend 해야한다.
또한 그리는데 비용이 들어간다.
혹시, 기존에 존재하는 environment mapping 된 cube나 sphere를 사용하려고하면,
Luna에서 적힌것 처럼 위치 정보가 빠졌기 때문에(?) 확대되거나 거리가 맞지 않게 보인다. (cube 생성 시점은 공중에 있기 때문에)
이걸 수정하기 위해 object-oriented box 직사각형 맵에서 correction 한게 아래 내용이다.
AABB나 OOB가 필수 인지는 정확히 확인은 못했다. depth map으로 어떻게 안되나?
흠, 바닥에서 어떻게되는지 실험을 위해 코드를 보았다.
난 멀짠건가
if ( gReflectionEnabled )
{
float3 incident = -toEye;
float3 n = float3(1, 0, 0);
float t = dot(-n, gEyePosW) - gRadius;
float nu = dot(n, incident);
t = t / nu;
if (t > 0) {
float3 correctedVec = normalize(incident * t / nu + (gEyePosW - gEnvMapCenterW));
float4 reflectionColor = gCubeMap.Sample(samAnisotropic, correctedVec);
litColor += gMaterial.Reflect*reflectionColor;
}
}
개판으로 나와서, 원래 일반 reflect code로 바꿔서 테스트
원래 이렇게 까지 잘못나오나?
아 보다 보니 기억난다.
방향백터로 lookup 하는 식이라 근거리 객체는 바보가 된다.
그리고 위의 식은,
214, 215를 짜본거다. 싸이트에서 이부분.
하다가 안되서 normal 을 강제로 지정한것도 남아있네;
mirror는 포기하고 AABB로 잡아서 그냥 적당히 AABB를 잡아서 구현하였다.
전에 시간 쓴게 아까워서 해본건데.
여러 버그가 보인다. 구현 잘못했나벼. SSR이나 해야겠다.
Update: 찾다보니 더보이고, 나쁘지 않아 보인다. 쓰레기처럼 보였는데;
SSR과 합친단다.. 미... https://www.gamedev.net/forums/topic/667710-localizing-image-based-reflections-issues-questions/
우선 링크들 http://c0de517e.blogspot.kr/2015/03/being-more-wrong-parallax-corrected.html https://www.youtube.com/redirect?v=ZH6s1hbwoQQ&event=video_description&redir_token=pRT8HXIhDaHWCH4Z39syRh5ZXsp8MTUwOTExNjc0MEAxNTA5MDMwMzQw&q=http%3A%2F%2F13thsfg.us.to%2Ffiles%2Fparallaxcubemaps.zip https://www.youtube.com/watch?v=m1YrDGcI4cs (거울이다)
https://www.youtube.com/watch?v=f8_oEg2s8dM (자료 공개 잘해주는 일본 아저씨 - 큐브간 혼합은 지원 안함) https://sites.google.com/site/monshonosuana/directxno-hanashi-1/directx-141 https://github.com/vorg/pex-experiments/tree/master/local-cubemap-reflections (http://marcinignac.com/blog/modular-webgl-with-pex/) https://gist.github.com/marklundin/4f3374383adf071f8bdb1206dba79eff
https://shellsphinx.github.io/2017/05/08/homeproject2/
https://www.youtube.com/watch?v=Vo2fO_3U8tE https://www.youtube.com/watch?v=_XxKxNpubsQ https://www.youtube.com/watch?v=dBytHE5hqvg https://www.youtube.com/watch?v=ZH6s1hbwoQQ
'Game > MMD' 카테고리의 다른 글
Mirror (4) (0) | 2017.10.24 |
---|---|
SSR(Screen space reflection) (1) (0) | 2017.10.24 |
SV_Target 지정시에도 변화가 없을때 (0) | 2017.10.23 |
Pixel shader : shader did not run. no output. (0) | 2017.10.20 |
Bloom + Emmisive (2) (0) | 2017.10.18 |
- Total
- Today
- Yesterday