テラByteの時代にキロByte

shader又はdemosceneに関係する事

2019-05-12から1日間の記事一覧

--shader(GLSL)の小技 11-- rayの勢いを抑えて中途半端な距離を利用する

今回の奴は最近みつけたスキルです。 ネーミング的にはゴーストなんて呼ぶのが良いかななんて思ってます。 使用例として www.shadertoy.com vec3 col=vec3(0); for(i=1.0;i>0.0;i-=1./30.0) { t+=d=map(p)*(0.2*sin(iTime)+0.6); if(d<0.001) { if(uv.y>0.0)…

--shader(GLSL)の小技 10-- raymarchingでmod()を使わないで大量モデル描写

raymarchingでmod()を使わないで大量モデル描写する。TDFのデモで使った手法だけど、誰もとってくれないので、自分で解説する事にしました。 一個一個をバウンディングして範囲に入っていたら、z値を比較し、手前なら描写という手法。GPUによるがGeForce GTX…

--shader(GLSL)の小技 09-- オブジェクトをある点に向かす

オブジェクトをある点に向かすには、mat3()を使います。lookat行列と同じ作り方をします。 違うのは、かける順番。 本当は逆行列を使うのでしょうけど、GLSLの場合は、かける順番を後にすると逆行列扱いになるようです。 // point at vec3 w=normalize(ta-q)…

--shader(GLSL)の小技 08-- Capsuleの距離関数からオペレーション部分を取り出した

Inigo Quilez :: fractals, computer graphics, mathematics, shaders, demoscene and more ここにある sdCapsule の距離関数 float sdCapsule( vec3 p, vec3 a, vec3 b, float r ) { vec3 pa = p - a, ba = b - a; float h = clamp( dot(pa,ba)/dot(ba,ba),…

--shader(GLSL)の小技 07-- 立面と側面の距離関数を使って3次元の距離関数

立面と側面の距離関数を使って3次元の距離関数作る方法。 2次元の距離関数取得 -> 2次元の距離関数取得 で3次元の距離関数になる。 2次元の距離関数を用意します。 float lengthN(vec2 v, float n) { vec2 tmp = pow(abs(v), vec2(n)); return pow(tmp.x…

--shader(GLSL)の小技 06-- raycastをraymarchigに同居させて文字を描く

raycastをraymarchigに同居させて文字を描くことをやってみます。 細かい説明は、そのうちに追記します。何故なら、すっかりアルゴリズムを忘れてました。 raycastはエフェクトに使える可能性があるので、又、取り上げてみます。 shaderの中に文字が出るのは…