jit.gl.shader / GLSL でフォグ #maxmsp #jitter #glsl
OpenGL Superbibleのサンプルコードです。
JXS / GLSL
<jittershader name="mrr-3colored-lights"> <description> </description> <language name="glsl" version="1.2"> <program name="vp" type="vertex"> <![CDATA[ #version 120 void main(void) { gl_Position = gl_ModelViewProjectionMatrix *gl_Vertex; vec3 lightPos = gl_LightSource[0].position.xyz; vec3 N = normalize(gl_NormalMatrix * gl_Normal); vec4 V = gl_ModelViewMatrix *gl_Vertex; vec3 L = normalize(lightPos - V.xyz); vec3 H = normalize(L + vec3(0,0,1)); const float specularExp = 128.0; float NdotL =max(0,dot(N,L)); vec4 diffuse = gl_Color * vec4(NdotL); float NdotH = max(0,dot(N,H)); vec4 specular = vec4(0); if(NdotL >0){ specular = vec4(pow ( NdotH,specularExp)); } gl_FogFragCoord =length(V); gl_FrontColor = (diffuse + specular); } ]]> </program> <program name="fp" type="fragment"> <![CDATA[ #version 120 void main() { const float e = 2.71828; float fogFactor = pow(0.5 *gl_FogFragCoord,2); fogFactor = clamp(pow(e,-fogFactor),0,1); const vec4 fogColor =vec4(0.5,0.5,0.5,0.4); gl_FragColor = mix(fogColor,gl_Color,fogFactor); } ]]> </program> </language> </jittershader>
Vertex Shaderの方でカメラからの距離を算出しておいて、Fragment Shadreで色を計算する時にFogの方程式を使ってFog量を決めています。
Recent entries
- jit.gl.gridshape の matrixoutput についてのメモ #max8
- jit.gl.pix で簡易モーションブラー #max8 #jitter
- jit.gl.pix で Gold Noise #max8 #jitter
- Gen で配列をつくる検討 #Max8
- Package Managerで配布されているease objectを使いやすくしてイージング #max8
- Node for Max を用いて、定形外のUDPデータを受信 #Max8 #n4m
- 平ハウス物語 – 山田尚子監督作品 非公式ファンイベント
- The Splendid Expression – GITADORA×NOSTALGIA
- ghost in my place【from DEEMO II】
- EP “Boys O’Clock”
- 7th Album “多次元宇宙論”
- LEON.jpのWEB特集「大人のいい時間」にAromが紹介されました。
- 音できらめくキャンドルライト Arom(第2世代)発売開始
- EP “Strange Story”
- 都市の呼吸【from Cytus II】