티스토리 뷰

Game/작업일지

Water Flow in Portal 2

newpolaris 2018. 11. 6. 17:23

참고자료:

이해가 안되는 데브리 부분하고 artifact 감추는 몇몇 공식 소개

http://ttmayrin.tistory.com/40

구현 제공

http://graphicsrunner.blogspot.com/2010/08/water-using-flow-maps.html

기대한 것

멀 반복해서 물결을 만든다는 것 같은데 와닫지 않았다.

역시 직접 쪼개서 테스트해봐야 한다;

https://alex.vlachos.com/graphics/Vlachos-SIGGRAPH10-WaterFlow.pdf

// xy 방향을 기록한 flow 맵을 로드한다
vec2 flowmap = texture( uFlowMapSamp, vTexcoord ).rg * 2.0f - 1.0f;

// Sample normal map.
return texture(uNoiseMapSamp, ( vTexcoord*uTexScale ) + flowmap )

xy 방향 -1 to 1 범위를 단순히 더하면 방향에 따란 texture coordinate 가 늘어져서

아래와 같이 흐림이 표시된다

실제로 움직이는 효과를 먹일려면, perlin noise를 사용해서 변화를 줄여야 한다

vec2 flowmap = texture( uFlowMapSamp, vTexcoord ).rg * 2.0f - 1.0f;
// blur 많이 먹힌 noise
float cycleOffset = texture( uNoiseSmoothMapSamp, vTexcoord ).r;

float phase0 = cycleOffset * .5f + uFlowMapOffset0;
float phase1 = cycleOffset * .5f + uFlowMapOffset1;

// Sample normal map.
vec3 normalT0 = texture(uWaveMap0Samp, ( vTexcoord*uTexScale ) + flowmap * phase0 ).xyz;
vec3 normalT1 = texture(uWaveMap1Samp, ( vTexcoord*uTexScale ) + flowmap * phase1 ).xyz;

float flowLerp = ( abs( uHalfCycle - uFlowMapOffset0 ) / uHalfCycle );
return lerp( normalT0, normalT1, flowLerp );

frame에 정해진 사이클의 timestamp 넣어서 돌리면, 어느정도 움직이는 것 처럼 보인다.

단순 물 색만 표시하면,

refract 추가하면,

'Game > 작업일지' 카테고리의 다른 글

RTX 구현 및 응용  (0) 2018.11.08
Parallax mapping  (0) 2018.11.08
uniform update 수작업으로 진행 할 때의 고통  (0) 2018.10.24
2018.10.24 - OpenGL 작업 20일 째  (0) 2018.10.23
Normal Encode  (0) 2018.10.17
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크