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】




