シェーダバージョンチェック
シェーダバージョンチェック
import javax.media.opengl.*;
PShader sd; // シェーダ
void setup() {
size(600, 600, P2D);
println(((PGraphicsOpenGL )g).pgl.gl.glGetString(GL.GL_VERSION));
println(((PGraphicsOpenGL )g).pgl.gl.glGetString(GL2.GL_SHADING_LANGUAGE_VERSION));
sd = loadShader("FragmentShader.glsl");
}
void draw() {
shader(sd);
rect(0, 0, width, height);
}
//---以降はGLSLファイルの内容です。dataディレクトリにFragmentShader.glslと言う名称で保存してください。
const float NEON_WIDTH = 50.0; // 基準点からネオンが有効な距離
void main()
{
vec4 col = vec4(0, 0, 0, 1);
// 基準の位置を決定
float h = 100f;
// cは、座標が基準位置ぴったりであれば1.0。そこからNEON_WIDTHの範囲内であれば、距離に応じて1.0~0.0となる。
float t = abs(gl_FragCoord.y - h) / NEON_WIDTH;
float c = 1.0 - t;
// 結果が0より大きければ、色を加算する。
if(c > 0.0)
{
c = pow(c, 3.0);
vec3 rc = vec3(c, c, c);
col += vec4(rc, 1);
}
gl_FragColor = vec4(col);
}