프로그래밍 2020. 4. 17. 13:11
728x90

 

문득,

부드러운 그림자 외곽출력을 위해서,

그림자 버퍼의 필터링을 이용할수있지 않을까 라는 생각이 들었다

 

동일한 장면의 깊이를 기록한 그림자 버퍼 2장을 준비한다

하나는 필터링을 NONE 으로,

하나는 필터링을 LINEAR 로,

 

그림자 계산은 깊이버퍼 그림자와 동일하게,

자신거리가 깊이버퍼거리 보다 크면, 자신이 가리워졌다고 판단

그림자 색상을 넣는다

(보통, 똑같은 색상이 사용된다)

 

단, 여기서는 두장의 버퍼를 이용해서,

(부드러운 필터링이 들어간 버퍼값 - 필터링없는 버퍼값) 을 그림자 색상으로 사용하면 어떨까하는

생각이었다

 

필터링이 들어간 버퍼쪽이 외곽의 값이 클테니까 - 필터링없는 버퍼값을 빼주면,

그림자의 외각쪽이 부드러워질것 같았다

(값이 1에 가까울수록, 즉 클수록 그림자가 연해지는 효과)

 

그런데 일단, 필터링 NONE 의 경우,

장면의 깊이값이 보간되지 않아, 기울기나 경사가 있는 곳에서는

깊이값이 렌더링픽셀 깊이값과 동일해야할 경우에도,

좀더 작거나, 좀더 큰 경우가 생긴다

즉, 값이 부정확하다

 

 

그래서, 장면 전체적으로, 패턴화되는 얼룩을 만들어 내는 문제가 있다,

 

 

 

 

 

테스트를 해본 결과로는,

필터를 한값과 하지않은값의 차이도 매우 미묘해서,

그 차이가 0.0000001 뭐 이런값의 차이를 보이는것 같고,

결과값에 1000000 정도는 곱해주어야, 약간의 색상 변화를 볼수있다

(곱해주는 값이 작으면, 예상하듯 다 같이 검게 출력)

 

위의 등고선에서,

검은 부분은 (필터링한애 - 하지않은애) 값차이가 너무 작아서

0.00000001 이런 경우 거의 검정으로 출력,

0.00000001 * 1000000 = 0.01

 

등고선에서, 비어있는부분은, 0.000001 정도의 값인데

0.000001 * 1000000 = 1

 

결국 저렇게 출력되는 것으로 생각되어진다

 

 

그럼, 

각각의 필터링 단계를 한단계씩 높여보면 어떨까??

 

 

음,

 

동일한 결과이다

 

 

나의 결론적으로는,

필터링 단계가 높을수록 보간이 잘되어, 부드러운 값변화가 이루어지고,

필터링 단계가 낮을수록 보간이 성기어서, 덜 부드러운,

중간중간 튀는 값들이 만들어져서 저런식의 패턴화가

출력되는것 같은데,

 

좀더 정확히는 필터링계산을 살펴봐야겠지만,

계속 보고, 테스트하다보니,,,

 

좀 지친다,

더 이상 하기가 싫어,,,

 

 

 

하아,,,,,,

괜히했다,,,,,,

 

T.T

 

내시간 돌려도오~~~~~~~~~~~~~~~~~~~~~~~~~

 

 

 

728x90
posted by BK dddDang
: