aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2014-03-25 06:41:21 +0100
committerSven Gothel <[email protected]>2014-03-25 06:41:21 +0100
commit923ca6e77c03d602f9a5a71713cf5d973451687b (patch)
tree834c99f5afef9717722a38ffbd432c4643b42c22
parentb71f91e67270958bdb2940615a83e4d1ccc9ca0a (diff)
ShaderCode: Allow 'srcRoot' to be optional ; RegionRendererImpl01: Allos custom shader
-rw-r--r--src/jogl/classes/com/jogamp/opengl/util/glsl/ShaderCode.java20
-rw-r--r--src/jogl/classes/jogamp/graph/curve/opengl/RegionRendererImpl01.java23
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);