シェーダバージョンチェック
シェーダバージョンチェック
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); }