Water Ball Note of How I Implement Water Ball Shader

概要

  1. 用 Ray Marching 做中心透明的凸透鏡
  2. 用正方形的類 Worley Noise 讓凸透鏡變形 (Cellular3D / iq elevated / TX95 Las^Mercury 都可以)

World 凸透鏡

在 World 中,產生凸透鏡的重點:

  1. pos.y = pos.y * 0.5 從圓球變橢圓球
  2. distance = abs(distance) 會讓光進入圓球後,依照離園心的遠近,加速通過。因為中心離圓心遠,所以跑更快。
  3. 球內密度為固定值,調整到中心光線正好可以透光的密度。

Ray Marching

  1. 先取得 shortest distance 並算出最近的點,目的是著色用,著色需要知道高低點。
  2. 其他部份都是一般的做法。

https://www.shadertoy.com/view/ssyyWt