float2 uv = float2(i.uv - 0.5)*2;
uv.x = abs(uv.x) - 0.5;
float segment = length(uv - float2(clamp(uv.x, - 0.25, 0.25),0));
col.rgb = 1 - step(0.05, segment) + float3(uv,0);
이전 포스트에서 저희는 UV를 굴절시키는 함수를 구현 했습니다. 이제 기존 쉐이더에 추가해봅시다.
float2 result = uv - (rotateMatrix * min(0,distance) * 2);
절대값 함수로 UV를 대칭시켰으니 굴절 또한 대칭 될 것입니다.
uv -= (rotateMatrix * min(0, dot(uv, rotateMatrix) ) * 2);
float segment = length(uv - float2( clamp(uv.x, -_var, _var), 0) );
uv -= (rotateMatrix * max(0, dot(uv, rotateMatrix) ) * 2);
float segment = length(uv - float2( clamp(uv.x, -_var, _var), 0) );
원하던 모양대로 작동합니다. min이 아니라 max로 바꾸면 양수 방향으로 굴절 하는 것을 수 있습니다.
저희가 원하던 모양이 나왔습니다. 이제 프랙탈 도형으로서 지금까지의 과정을 원하는 만큼 반복할 수 있게 해봅시다.
コメント