シェーダバージョンチェック

シェーダバージョンチェック

シェーダバージョンチェック

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);
}