From 923ca6e77c03d602f9a5a71713cf5d973451687b Mon Sep 17 00:00:00 2001 From: Sven Gothel Date: Tue, 25 Mar 2014 06:41:21 +0100 Subject: ShaderCode: Allow 'srcRoot' to be optional ; RegionRendererImpl01: Allos custom shader --- .../com/jogamp/opengl/util/glsl/ShaderCode.java | 20 ++++++++++++------- .../graph/curve/opengl/RegionRendererImpl01.java | 23 +++++++++++++++++----- 2 files changed, 31 insertions(+), 12 deletions(-) (limited to 'src/jogl') diff --git a/src/jogl/classes/com/jogamp/opengl/util/glsl/ShaderCode.java b/src/jogl/classes/com/jogamp/opengl/util/glsl/ShaderCode.java index 6a64edeb5..264b9e2a6 100644 --- a/src/jogl/classes/com/jogamp/opengl/util/glsl/ShaderCode.java +++ b/src/jogl/classes/com/jogamp/opengl/util/glsl/ShaderCode.java @@ -327,7 +327,7 @@ public class ShaderCode { * @param type either {@link GL2ES2#GL_VERTEX_SHADER}, {@link GL2ES2#GL_FRAGMENT_SHADER} or {@link GL3#GL_GEOMETRY_SHADER} * @param count number of shaders * @param context class used to help resolving the source and binary location - * @param srcRoot relative root path for srcBasenames + * @param srcRoot relative root path for srcBasenames optional * @param srcBasenames basenames w/o path or suffix relative to srcRoot for the shader's source code * @param binRoot relative root path for binBasenames * @param binBasename basename w/o path or suffix relative to binRoot for the shader's binary code @@ -355,11 +355,17 @@ public class ShaderCode { String srcPathString = null; String binFileName = null; - if(null!=srcRoot && null!=srcBasenames && ShaderUtil.isShaderCompilerAvailable(gl)) { + if( null!=srcBasenames && ShaderUtil.isShaderCompilerAvailable(gl) ) { srcPath = new String[srcBasenames.length]; final String srcSuffix = getFileSuffix(false, type); - for(int i=0; i 0 ) { + for(int i=0; i binFmts = ShaderUtil.getShaderBinaryFormats(gl); final String binSuffix = getFileSuffix(true, type); for(Iterator iter=binFmts.iterator(); iter.hasNext(); ) { int bFmt = iter.next().intValue(); - String bFmtPath = getBinarySubPath(bFmt); + final String bFmtPath = getBinarySubPath(bFmt); if(null==bFmtPath) continue; binFileName = binRoot + '/' + bFmtPath + '/' + binBasename + "." + binSuffix; res = create(type, count, context, bFmt, binFileName); @@ -426,7 +432,7 @@ public class ShaderCode { * or to determine the shader binary format (if binary is used). * @param type either {@link GL2ES2#GL_VERTEX_SHADER}, {@link GL2ES2#GL_FRAGMENT_SHADER} or {@link GL3#GL_GEOMETRY_SHADER} * @param context class used to help resolving the source and binary location - * @param srcRoot relative root path for basename + * @param srcRoot relative root path for basename optional * @param binRoot relative root path for basename * @param mutableStringBuilder TODO * @param basenames basename w/o path or suffix relative to srcRoot and binRoot diff --git a/src/jogl/classes/jogamp/graph/curve/opengl/RegionRendererImpl01.java b/src/jogl/classes/jogamp/graph/curve/opengl/RegionRendererImpl01.java index 29483be58..1288910fb 100644 --- a/src/jogl/classes/jogamp/graph/curve/opengl/RegionRendererImpl01.java +++ b/src/jogl/classes/jogamp/graph/curve/opengl/RegionRendererImpl01.java @@ -31,6 +31,7 @@ import javax.media.opengl.GL2ES2; import javax.media.opengl.GLException; import jogamp.graph.curve.opengl.shader.AttributeNames; +import jogamp.opengl.Debug; import com.jogamp.graph.curve.opengl.RenderState; import com.jogamp.graph.curve.opengl.RegionRenderer; @@ -40,6 +41,12 @@ import com.jogamp.opengl.util.glsl.ShaderProgram; import com.jogamp.opengl.util.glsl.ShaderState; public class RegionRendererImpl01 extends RegionRenderer { + private static final String CUSTOM_FP, CUSTOM_VP; + static { + Debug.initSingleton(); + CUSTOM_VP = Debug.getProperty("jogl.debug.graph.curve.vp", false); + CUSTOM_FP = Debug.getProperty("jogl.debug.graph.curve.fp", false); + } public RegionRendererImpl01(final RenderState rs, final int renderModes, final GLCallback enableCallback, final GLCallback disableCallback) { super(rs, renderModes, enableCallback, disableCallback); @@ -48,11 +55,17 @@ public class RegionRendererImpl01 extends RegionRenderer { @Override protected final boolean initImpl(GL2ES2 gl) { final ShaderState st = getShaderState(); - - final ShaderCode rsVp = ShaderCode.create(gl, GL2ES2.GL_VERTEX_SHADER, RegionRendererImpl01.class, "shader", - "shader/bin", getVertexShaderName(), true); - final ShaderCode rsFp = ShaderCode.create(gl, GL2ES2.GL_FRAGMENT_SHADER, RegionRendererImpl01.class, "shader", - "shader/bin", getFragmentShaderName(), true); + final ShaderCode rsVp, rsFp; + if( null != CUSTOM_VP ) { + rsVp = ShaderCode.create(gl, GL2ES2.GL_VERTEX_SHADER, RegionRendererImpl01.class, null, null, CUSTOM_VP, true); + } else { + rsVp = ShaderCode.create(gl, GL2ES2.GL_VERTEX_SHADER, RegionRendererImpl01.class, "shader", "shader/bin", getVertexShaderName(), true); + } + if( null != CUSTOM_FP ) { + rsFp = ShaderCode.create(gl, GL2ES2.GL_FRAGMENT_SHADER, RegionRendererImpl01.class, null, null, CUSTOM_FP, true); + } else { + rsFp = ShaderCode.create(gl, GL2ES2.GL_FRAGMENT_SHADER, RegionRendererImpl01.class, "shader", "shader/bin", getFragmentShaderName(), true); + } rsVp.defaultShaderCustomization(gl, true, true); // rsFp.defaultShaderCustomization(gl, true, true); int pos = rsFp.addGLSLVersion(gl); -- cgit v1.2.3