public void setShadowmapShader1i(GL2GL3 gl, int i, String name) { shadowmapshader.use(gl); gl.glUniform1i(gl.glGetUniformLocation(shadowmapshader.getID(), name), i); shadowmapshadertess.use(gl); gl.glUniform1i(gl.glGetUniformLocation(shadowmapshadertess.getID(), name), i); shadowmapshadertess.unuse(gl); }
public void shader1f(GL2GL3 gl, float i, String name) { shader.use(gl); gl.glUniform1f(gl.glGetUniformLocation(shader.getID(), name), i); shadertess.use(gl); gl.glUniform1f(gl.glGetUniformLocation(shadertess.getID(), name), i); shadertess.unuse(gl); }
public void setShadowmapShaderTexture(GL2GL3 gl, TexBindSet tbs, String texname) { shadowmapshader.use(gl); gl.glUniform1i(gl.glGetUniformLocation(shadowmapshader.getID(), texname), tbs.texunit); shadowmapshadertess.use(gl); gl.glUniform1i(gl.glGetUniformLocation(shadowmapshadertess.getID(), texname), tbs.texunit); shadowmapshadertess.unuse(gl); }
public void setTessLevel(GL2GL3 gl, int level) { shadowmapshadertess.use(gl); gl.glUniform1i(gl.glGetUniformLocation(shadowmapshadertess.getID(), "tesslevel"), level); shadowmapshadertess.unuse(gl); shadertess.use(gl); gl.glUniform1i(gl.glGetUniformLocation(shadertess.getID(), "tesslevel"), level); shadertess.unuse(gl); }
public void renderingToWindow(GL2GL3 gl, boolean show) { shadertess.use(gl); updateligths(gl, shadertess); scenetess((GL3) gl, shadertess, false); shader.use(gl); updateligths(gl, shader); scene(gl, shader, show); Shader.unuse(gl); }
public void shader1i(GL2GL3 gl, int i, String name) { shader.use(gl); gl.glUniform1i(gl.glGetUniformLocation(shader.getID(), name), i); // gl.glUniform(new GLUniformData(name, i)); shadertess.use(gl); gl.glUniform1i(gl.glGetUniformLocation(shadertess.getID(), name), i); // GLUniformData tmp = new GLUniformData(name, i); // tmp.setLocation(gl.glGetUniformLocation(shadertess.getID(), name)); // gl.glUniform(tmp); shadertess.unuse(gl); }
public void init(GL2GL3 gl, Shader shader, Shader shadertess) { this.shader = shader; shader.use(gl); uniformview = gl.glGetUniformLocation(shader.getID(), "view"); uniformproj = gl.glGetUniformLocation(shader.getID(), "proj"); this.shadertess = shadertess; shadertess.use(gl); uniformviewtess = gl.glGetUniformLocation(shadertess.getID(), "view"); uniformprojtess = gl.glGetUniformLocation(shadertess.getID(), "proj"); shadertess.unuse(gl); }
public void renderingToFBO( GL2GL3 gl, FBO fbo, int offsetx, int offsety, int width, int height, boolean show) { shader.use(gl); fbo.bind(gl); gl.glClear(GL2.GL_COLOR_BUFFER_BIT | GL2.GL_DEPTH_BUFFER_BIT); gl.glViewport(offsetx, offsety, width, height); shader.use(gl); updateligths(gl, shader); scene(gl, shader, show); shadertess.use(gl); updateligths(gl, shadertess); scenetess((GL3) gl, shadertess); shadertess.unuse(gl); fbo.unbind(gl); gl.glFlush(); }
public void ShadowMap(GL2GL3 gl, boolean show) { smapfbo.bind(gl); gl.glClear(GL2.GL_COLOR_BUFFER_BIT | GL2.GL_DEPTH_BUFFER_BIT); gl.glViewport(0, 0, smapwidth, smapheight); shadowmapshadertess.use(gl); gl.glUniform1i(gl.glGetUniformLocation(shadowmapshadertess.getID(), "stage"), 0); smapupdatelightstess(gl); scenetess((GL4) gl, shadowmapshadertess); shadowmapshader.use(gl); gl.glUniform1i(gl.glGetUniformLocation(shadowmapshader.getID(), "stage"), 0); smapupdatelights(gl); scene(gl, shadowmapshader, show); gl.glFlush(); smapfbo.unbind(gl); Shader.unuse(gl); }
public void updatePVMatrixtess(GL2GL3 gl) { shadertess.use(gl); gl.glUniformMatrix4fv(uniformviewtess, 1, false, pvmat.glGetMatrixf(GL2.GL_MODELVIEW)); gl.glUniformMatrix4fv(uniformprojtess, 1, false, pvmat.glGetMatrixf(GL2.GL_PROJECTION)); Shader.unuse(gl); }
public void initShadowmap(GL2GL3 gl, int lightcount, int width, int height) { initLight(lightcount); Ctrlpanel.getInstance().addLightCtrl(realLightcount, this); smapwidth = width; smapheight = height; Tex2DArray shadowmap = new Tex2DArray( GL2.GL_RGB16, GL2.GL_RGB, GL.GL_FLOAT, smapwidth, smapheight, realLightcount, GL.GL_LINEAR, "shadowmap"); Tex2DArray shadowmapdepth = new Tex2DArray( GL2.GL_DEPTH_COMPONENT, GL2.GL_DEPTH_COMPONENT, GL.GL_FLOAT, smapwidth, smapheight, realLightcount, GL.GL_LINEAR, "shadowmapdepth"); shadowmap.init(gl); shadowmapdepth.init(gl); shadowmapB = tum.bind(gl, shadowmap); smapfbo = new FBO(gl); smapfbo.attachTexture(gl, shadowmapB); smapfbo.attachDepth(gl, shadowmapdepth); /*シャドウマップ*/ shadowmapshader = new Shader( "resources/ShaderSource/BaseShaders/Shadowmap/vertsimple.c", null, null, smapgsrc, smapfsrc); shadowmapshader.init(gl); shadowmapshader.use(gl); uniformlightsview = gl.glGetUniformLocation(shadowmapshader.getID(), "lightsview"); uniformlightsproj = gl.glGetUniformLocation(shadowmapshader.getID(), "lightsproj"); uniformlightscolor = gl.glGetUniformLocation(shadowmapshader.getID(), "lightscolor"); uniformlightsattr = gl.glGetUniformLocation(shadowmapshader.getID(), "lightsattr"); uniformlightcount = gl.glGetUniformLocation(shadowmapshader.getID(), "lightcount_real_virtual"); /*シャドウマップテッセレーション*/ shadowmapshadertess = new Shader(smapvsrc, smapcsrc, smapesrc, smapgsrc, smapfsrc); shadowmapshadertess.init(gl); shadowmapshadertess.use(gl); uniformlightsviewtess = gl.glGetUniformLocation(shadowmapshadertess.getID(), "lightsview"); uniformlightsprojtess = gl.glGetUniformLocation(shadowmapshadertess.getID(), "lightsproj"); uniformlightscolortess = gl.glGetUniformLocation(shadowmapshadertess.getID(), "lightscolor"); uniformlightsattrtess = gl.glGetUniformLocation(shadowmapshader.getID(), "lightsattr"); uniformlightcounttess = gl.glGetUniformLocation(shadowmapshadertess.getID(), "lightcount_real_virtual"); }
public void init(GL2GL3 gl) { timer.init(gl); smapfbo = new FBO(gl); texviewer = new TexViewer(); texviewer.init(gl); fxaa = new Filter("resources/ShaderSource/FXAA/vert.c", "resources/ShaderSource/FXAA/frag.c"); fxaa.init(gl); // String filepath = "/home/michael/zheng/Programs/WeatherData/2009100718/"; String filepath = "/home/michael/zheng/Programs/WeatherData/2009100818/"; // String filepath = "/home/michael/zheng/Programs/WeatherData/2008061418/"; // initTestData(gl); scene = new Scene1(); scene.initShadowmap(gl, 2, SHADOWMAPWIDTH, SHADOWMAPHEIGHT); for (int i = 0; i < scene.lightCount(); i++) { scene.lights.get(i).init(gl); // float angle = 2 * (float)Math.PI * i / (scene.lightCount() - 1); // //scene.lights.get(i).lookat(3, 3, i + 1, 0, 0, 0, 0, 1, 0); // scene.lights.get(i).lookat(6*(float)Math.sin(angle), 6*(float)Math.cos(angle), 8, // 0, 0, 0, 0, 1, 0); // scene.lights.get(i).perspectivef(120f, 1, 0.1f, 50f); } scene.lights.get(0).lookatd(4, 4, 10, 0, 0, 0, 0, 1, 0); // scene.lights.get(0).lookatd(0, 0, 50, 0, 0, 0, 0, 1, 0); scene.lights.get(0).orthof(-4, 4, -4, 4, 0, 60); scene.lights.get(0).setattr(0, 1); scene.lights.get(0).setintensity(1.25); // scene.lights.get(2).lookatd(4, 4, 10, 0, 0, 0, 0, 1, 0); // scene.lights.get(2).orthof(-5, 5, -5, 5, 0, 30); scene.lights.get(1).lookatd(4, -4, 10, 0, 0, 0, 0, 1, 0); scene.lights.get(1).orthof(-4, 4, -4, 4, 0, 100); // scene.lights.get(2).lookatd(0, 0, 50, 0, 0, 0, 0, 1, 0); // scene.lights.get(2).orthof(-5, 5, -5, 5, 0, 100); shader = new Shader( "resources/ShaderSource/BaseShaders/SimpleShader/vert.c", null, null, null, "resources/ShaderSource/BaseShaders/SimpleShader/frag.c"); shader.init(gl); shadowmapping = new Shader( "resources/ShaderSource/ShadowMapping/vert.c", null, null, "resources/ShaderSource/ShadowMapping/geom.c", "resources/ShaderSource/ShadowMapping/fragsimple.c"); shadowmapping.init(gl); shadowmapping.use(gl); // tess evalシェーダーはシャドウマップのものを使う shadowmappingtess = new Shader( "resources/ShaderSource/ShadowMapping/vert.c", "resources/ShaderSource/ShadowMapping/ctrl.c", "resources/ShaderSource/BaseShaders/Shadowmap/eval.c", "resources/ShaderSource/ShadowMapping/geom.c", "resources/ShaderSource/ShadowMapping/frag.c"); shadowmappingtess.init(gl); tex = new Tex2D( GL2.GL_RGBA, GL2.GL_RGBA, GL2.GL_FLOAT, 1024, 1024, GL2.GL_LINEAR, GL2.GL_REPEAT, GL2.GL_REPEAT, null, "testimage"); tex.init(gl); tbs = new TexBindSet(tex); tbs.bind(gl); // scene.updateligths(gl, shadowmapping); // scene.lookat(0, 0, 30, 0, 0, 0, 0, 1, 0); // scene.orthof(proj[0], proj[1], proj[2], proj[3], 0, 100); // initの場所はあとで調整 scene.init(gl, shadowmapping, shadowmappingtess); // 円柱オフ scene.shader1i(gl, 0, "offheight"); fbo = new FBO(gl); fbo.attachTexture(gl, tbs); fbo.attachDepthRBO(gl, 1024, 1024); // */ initSceneOrganizer(gl); Ctrlpanel.currentSO = currentSO; }