diff options
author | Sven Gothel <[email protected]> | 2014-03-25 06:41:21 +0100 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2014-03-25 06:41:21 +0100 |
commit | 923ca6e77c03d602f9a5a71713cf5d973451687b (patch) | |
tree | 834c99f5afef9717722a38ffbd432c4643b42c22 /src/jogl/classes | |
parent | b71f91e67270958bdb2940615a83e4d1ccc9ca0a (diff) |
ShaderCode: Allow 'srcRoot' to be optional ; RegionRendererImpl01: Allos custom shader
Diffstat (limited to 'src/jogl/classes')
-rw-r--r-- | src/jogl/classes/com/jogamp/opengl/util/glsl/ShaderCode.java | 20 | ||||
-rw-r--r-- | src/jogl/classes/jogamp/graph/curve/opengl/RegionRendererImpl01.java | 23 |
2 files changed, 31 insertions, 12 deletions
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 <i>root</i> path for <code>srcBasenames</code> + * @param srcRoot relative <i>root</i> path for <code>srcBasenames</code> optional * @param srcBasenames basenames w/o path or suffix relative to <code>srcRoot</code> for the shader's source code * @param binRoot relative <i>root</i> path for <code>binBasenames</code> * @param binBasename basename w/o path or suffix relative to <code>binRoot</code> 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<srcPath.length; i++) { - srcPath[i] = srcRoot + '/' + srcBasenames[i] + "." + srcSuffix; + if( null != srcRoot && srcRoot.length() > 0 ) { + for(int i=0; i<srcPath.length; i++) { + srcPath[i] = srcRoot + '/' + srcBasenames[i] + "." + srcSuffix; + } + } else { + for(int i=0; i<srcPath.length; i++) { + srcPath[i] = srcBasenames[i] + "." + srcSuffix; + } } res = create(gl, type, count, context, srcPath, mutableStringBuilder); if(null!=res) { @@ -369,12 +375,12 @@ public class ShaderCode { } else { srcPath = null; } - if(null!=binRoot && null!=binBasename) { + if( null!=binBasename ) { Set<Integer> binFmts = ShaderUtil.getShaderBinaryFormats(gl); final String binSuffix = getFileSuffix(true, type); for(Iterator<Integer> 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 <code>binary</code> 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 <i>root</i> path for <code>basename</code> + * @param srcRoot relative <i>root</i> path for <code>basename</code> optional * @param binRoot relative <i>root</i> path for <code>basename</code> * @param mutableStringBuilder TODO * @param basenames basename w/o path or suffix relative to <code>srcRoot</code> and <code>binRoot</code> 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); |