From 9517539e3b43d21017465180376329439bc25f12 Mon Sep 17 00:00:00 2001 From: Sven Gothel Date: Tue, 12 Aug 2008 08:39:08 +0000 Subject: Working: APX 2500 ES 2.0 + FixedFunction GLSL ES 1.0 +++ javax.media.opengl.glsl - Shader and program state management - Loading and merging shader source code - Loading binaries incl. auto selection of the binary file in respect to the supported binary format. I.e. in case of GLES2.GL_NVIDIA_PLATFORM_BINARY_NV: source: com/sun/opengl/impl/glsl/fixed/shader/ashader.fp binary: com/sun/opengl/impl/glsl/fixed/shader/bin/nvidia/ashader.bfp ShaderCode sc = ShaderCode.create( gl, gl.GL_VERTEX_SHADER, 1, FixedFuncPipeline.class, "shader", "shader/bin", "ashader"); (Derivation of com.sun.javafx.graphics.gl2es2.ShaderUtil) javax.media.opengl.sdk.glsl CompileShaderNVidia implements abstract CompileShader Toolkit to convert JOGL shader source to binaries, according to the location rule as described in ShaderCode. Example: Converts all fixed function shader to binaries. jogl/src/classes/com/sun/opengl/impl/glsl/fixed/shader/scripts/nvidia-apx/glslc-ff.bat (Generalization of com.sun.javafx.graphics.gl2es2.PrecompileNVShader) +++ Fixed function now resides in 'jogl.fixed.jar' - contains shader source and binaries - contains the implementation GL2ES2: - removed glShaderBinaryOrSource() - use glCreateLoadShader() for binary and glCreateCompileShader() for source - using addition glGetError() check for shader upload/compilation - Skipping 'glValidateProgram' in case of ES2 and no compiler, since it fails on APX2500 .. - added: (caching the results) "public Set glGetShaderBinaryFormats()" "public boolean glShaderCompilerAvailable()" - shader-name and binary-data buffer: use 'remaining()' instead of 'limit()' BufferUtil: - adding variant: Buffer newBuffer([] values, int offset, int len) +++ Working on all profiles ES1 + ES2 (CVM) with lighting: demo.es1.cube.Cube demo.es1.cube.CubeImmModeSink demo.es1.cubefbo.Main javabullet.demos.genericjoint.GenericJointDemo git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/branches/JOGL_2_SANDBOX@1749 232f8b59-042b-4e1e-8c03-345bb8c30851 --- .../sun/opengl/impl/glsl/FixedFuncPipeline.java | 499 --------------------- .../sun/opengl/impl/glsl/GLSLArrayDataServer.java | 2 +- .../opengl/impl/glsl/fixed/FixedFuncPipeline.java | 487 ++++++++++++++++++++ .../sun/opengl/impl/glsl/shader/FixedFuncColor.fp | 9 + .../sun/opengl/impl/glsl/shader/FixedFuncColor.vp | 22 + .../opengl/impl/glsl/shader/FixedFuncColorLight.vp | 70 +++ .../impl/glsl/shader/FixedFuncColorTexture.fp | 39 ++ .../impl/glsl/shader/bin/nvidia/FixedFuncColor.bfp | Bin 0 -> 524 bytes .../impl/glsl/shader/bin/nvidia/FixedFuncColor.bvp | Bin 0 -> 2344 bytes .../glsl/shader/bin/nvidia/FixedFuncColorLight.bvp | Bin 0 -> 8787 bytes .../shader/bin/nvidia/FixedFuncColorTexture.bfp | Bin 0 -> 1804 bytes .../sun/opengl/impl/glsl/shader/es_precision.glsl | 14 + .../sun/opengl/impl/glsl/shader/mgl_attribute.glsl | 19 + .../com/sun/opengl/impl/glsl/shader/mgl_const.glsl | 10 + .../sun/opengl/impl/glsl/shader/mgl_lightdef.glsl | 26 ++ .../sun/opengl/impl/glsl/shader/mgl_settexcoord.vp | 35 ++ .../sun/opengl/impl/glsl/shader/mgl_uniform.glsl | 17 + .../opengl/impl/glsl/shader/mgl_uniform_light.glsl | 15 + .../sun/opengl/impl/glsl/shader/mgl_varying.glsl | 12 + .../glsl/shader/scripts/nvidia-apx/glslc-ff.bat | 9 + .../impl/glsl/shader/scripts/nvidia-apx/glslc.bat | 9 + 21 files changed, 794 insertions(+), 500 deletions(-) delete mode 100644 src/classes/com/sun/opengl/impl/glsl/FixedFuncPipeline.java create mode 100644 src/classes/com/sun/opengl/impl/glsl/fixed/FixedFuncPipeline.java create mode 100644 src/classes/com/sun/opengl/impl/glsl/shader/FixedFuncColor.fp create mode 100644 src/classes/com/sun/opengl/impl/glsl/shader/FixedFuncColor.vp create mode 100644 src/classes/com/sun/opengl/impl/glsl/shader/FixedFuncColorLight.vp create mode 100644 src/classes/com/sun/opengl/impl/glsl/shader/FixedFuncColorTexture.fp create mode 100755 src/classes/com/sun/opengl/impl/glsl/shader/bin/nvidia/FixedFuncColor.bfp create mode 100755 src/classes/com/sun/opengl/impl/glsl/shader/bin/nvidia/FixedFuncColor.bvp create mode 100755 src/classes/com/sun/opengl/impl/glsl/shader/bin/nvidia/FixedFuncColorLight.bvp create mode 100755 src/classes/com/sun/opengl/impl/glsl/shader/bin/nvidia/FixedFuncColorTexture.bfp create mode 100644 src/classes/com/sun/opengl/impl/glsl/shader/es_precision.glsl create mode 100644 src/classes/com/sun/opengl/impl/glsl/shader/mgl_attribute.glsl create mode 100644 src/classes/com/sun/opengl/impl/glsl/shader/mgl_const.glsl create mode 100644 src/classes/com/sun/opengl/impl/glsl/shader/mgl_lightdef.glsl create mode 100644 src/classes/com/sun/opengl/impl/glsl/shader/mgl_settexcoord.vp create mode 100644 src/classes/com/sun/opengl/impl/glsl/shader/mgl_uniform.glsl create mode 100644 src/classes/com/sun/opengl/impl/glsl/shader/mgl_uniform_light.glsl create mode 100644 src/classes/com/sun/opengl/impl/glsl/shader/mgl_varying.glsl create mode 100755 src/classes/com/sun/opengl/impl/glsl/shader/scripts/nvidia-apx/glslc-ff.bat create mode 100755 src/classes/com/sun/opengl/impl/glsl/shader/scripts/nvidia-apx/glslc.bat (limited to 'src/classes/com/sun/opengl') diff --git a/src/classes/com/sun/opengl/impl/glsl/FixedFuncPipeline.java b/src/classes/com/sun/opengl/impl/glsl/FixedFuncPipeline.java deleted file mode 100644 index dc7ebaae6..000000000 --- a/src/classes/com/sun/opengl/impl/glsl/FixedFuncPipeline.java +++ /dev/null @@ -1,499 +0,0 @@ - -package com.sun.opengl.impl.glsl; - -import javax.media.opengl.*; -import javax.media.opengl.util.*; -import javax.media.opengl.util.glsl.*; -import java.nio.*; - -public class FixedFuncPipeline { - public static final int MAX_TEXTURE_UNITS = 8; - public static final int MAX_LIGHTS = 8; - - public FixedFuncPipeline(GL2ES2 gl, PMVMatrix pmvMatrix) { - init(gl, pmvMatrix); - } - - public boolean verbose() { return verbose; } - - public void setVerbose(boolean v) { verbose=v; } - - public boolean isValid() { - return shaderState.linked(); - } - - public ShaderState getShaderState() { - return shaderState; - } - - public void enableLighting(boolean enable) { - lightingEnabled=enable; - } - - public boolean lightingEnabled() { - return lightingEnabled; - } - - public int getActiveTextureUnit() { - return activeTextureUnit; - } - - public String getArrayIndexName(int glArrayIndex) { - String name = GLContext.getPredefinedArrayIndexName(glArrayIndex); - switch(glArrayIndex) { - case GL.GL_VERTEX_ARRAY: - case GL.GL_NORMAL_ARRAY: - case GL.GL_COLOR_ARRAY: - break; - case GL.GL_TEXTURE_COORD_ARRAY: - name = name + activeTextureUnit; - } - return name; - } - - public void release(GL2ES2 gl) { - shaderState.release(gl); - shaderProgramColor.release(gl, true); - shaderProgramColorLight.release(gl, true); - shaderProgramColorTexture.release(gl, true); - shaderProgramColorTextureLight.release(gl, true); - } - - public void glEnableClientState(GL2ES2 gl, int glArrayIndex) { - shaderState.glUseProgram(gl, true); - - shaderState.glEnableVertexAttribArray(gl, getArrayIndexName(glArrayIndex)); - textureCoordsEnabled |= (1 << activeTextureUnit); - } - - public void glDisableClientState(GL2ES2 gl, int glArrayIndex) { - shaderState.glUseProgram(gl, true); - - shaderState.glDisableVertexAttribArray(gl, getArrayIndexName(glArrayIndex)); - textureCoordsEnabled &= ~(1 << activeTextureUnit); - } - - public void glVertexPointer(GL2ES2 gl, GLArrayData data) { - shaderState.glUseProgram(gl, true); - shaderState.glVertexAttribPointer(gl, data); - } - - public void glColorPointer(GL2ES2 gl, GLArrayData data) { - shaderState.glUseProgram(gl, true); - shaderState.glVertexAttribPointer(gl, data); - } - - public void glColor4fv(GL2ES2 gl, FloatBuffer data ) { - shaderState.glUseProgram(gl, true); - GLUniformData ud = shaderState.getUniform(mgl_ColorStatic); - if(null!=ud) { - ud.setData(data); - shaderState.glUniform(gl, ud); - } - } - - public void glNormalPointer(GL2ES2 gl, GLArrayData data) { - shaderState.glUseProgram(gl, true); - shaderState.glVertexAttribPointer(gl, data); - } - - public void glTexCoordPointer(GL2ES2 gl, GLArrayData data) { - shaderState.glUseProgram(gl, true); - data.setName( getArrayIndexName(data.getIndex()) ); - shaderState.glVertexAttribPointer(gl, data); - } - - public void glLightfv(GL2ES2 gl, int light, int pname, java.nio.FloatBuffer params) { - shaderState.glUseProgram(gl, true); - light -=GL.GL_LIGHT0; - if(0 <= light && light < MAX_LIGHTS) { - GLUniformData ud = null; - switch(pname) { - case GL.GL_AMBIENT: - ud = shaderState.getUniform(mgl_LightSource+"["+light+"].ambient"); - break; - case GL.GL_DIFFUSE: - ud = shaderState.getUniform(mgl_LightSource+"["+light+"].diffuse"); - break; - case GL.GL_SPECULAR: - ud = shaderState.getUniform(mgl_LightSource+"["+light+"].specular"); - break; - case GL.GL_POSITION: - ud = shaderState.getUniform(mgl_LightSource+"["+light+"].position"); - break; - case GL.GL_SPOT_DIRECTION: - ud = shaderState.getUniform(mgl_LightSource+"["+light+"].spotDirection"); - break; - case GL.GL_SPOT_EXPONENT: - ud = shaderState.getUniform(mgl_LightSource+"["+light+"].spotExponent"); - break; - case GL.GL_SPOT_CUTOFF: - ud = shaderState.getUniform(mgl_LightSource+"["+light+"].spotCutoff"); - break; - case GL.GL_CONSTANT_ATTENUATION: - ud = shaderState.getUniform(mgl_LightSource+"["+light+"].constantAttenuation"); - break; - case GL.GL_LINEAR_ATTENUATION: - ud = shaderState.getUniform(mgl_LightSource+"["+light+"].linearAttenuation"); - break; - case GL.GL_QUADRATIC_ATTENUATION: - ud = shaderState.getUniform(mgl_LightSource+"["+light+"].quadraticAttenuation"); - break; - default: - if(verbose) { - System.err.println("glLightfv pname not within [GL_AMBIENT GL_DIFFUSE GL_SPECULAR GL_POSITION GL_SPOT_DIRECTION]: "+pname); - } - return; - } - if(null!=ud) { - ud.setData(params); - shaderState.glUniform(gl, ud); - } - } else if(verbose) { - System.err.println("glLightfv light not within [0.."+MAX_LIGHTS+"]: "+light); - } - } - - public void glMaterialfv(GL2ES2 gl, int face, int pname, java.nio.FloatBuffer params) { - shaderState.glUseProgram(gl, true); - - switch (face) { - case GL.GL_FRONT: - case GL.GL_FRONT_AND_BACK: - break; - case GL.GL_BACK: - if(verbose) { - System.err.println("glMaterialfv face GL_BACK currently not supported"); - } - break; - default: - } - - GLUniformData ud = null; - switch(pname) { - case GL.GL_AMBIENT: - ud = shaderState.getUniform(mgl_FrontMaterial+".ambient"); - break; - case GL.GL_AMBIENT_AND_DIFFUSE: - glMaterialfv(gl, face, GL.GL_AMBIENT, params); - // fall through intended .. - case GL.GL_DIFFUSE: - ud = shaderState.getUniform(mgl_FrontMaterial+".diffuse"); - break; - case GL.GL_SPECULAR: - ud = shaderState.getUniform(mgl_FrontMaterial+".specular"); - break; - case GL.GL_EMISSION: - ud = shaderState.getUniform(mgl_FrontMaterial+".emission"); - break; - case GL.GL_SHININESS: - ud = shaderState.getUniform(mgl_FrontMaterial+".shininess"); - break; - default: - if(verbose) { - System.err.println("glMaterialfv pname not within [GL_AMBIENT GL_DIFFUSE GL_SPECULAR GL_EMISSION GL_SHININESS]: "+pname); - } - return; - } - if(null!=ud) { - ud.setData(params); - shaderState.glUniform(gl, ud); - } - } - - public void glShadeModel(GL2ES2 gl, int mode) { - shaderState.glUseProgram(gl, true); - GLUniformData ud = shaderState.getUniform(mgl_ShadeModel); - if(null!=ud) { - ud.setData(mode); - shaderState.glUniform(gl, ud); - } - } - - public void glActiveTexture(GL2ES2 gl, int textureUnit) { - textureUnit -= GL.GL_TEXTURE0; - if(0 <= textureUnit && textureUnit0) { + frontColor=mgl_Color; + } else { + frontColor=mgl_ColorStatic; + } + + gl_Position = mgl_PMVMatrix[0] * mgl_PMVMatrix[1] * mgl_Vertex; + + setTexCoord(gl_Position); +} + diff --git a/src/classes/com/sun/opengl/impl/glsl/shader/FixedFuncColorLight.vp b/src/classes/com/sun/opengl/impl/glsl/shader/FixedFuncColorLight.vp new file mode 100644 index 000000000..ce203cfb9 --- /dev/null +++ b/src/classes/com/sun/opengl/impl/glsl/shader/FixedFuncColorLight.vp @@ -0,0 +1,70 @@ +#include es_precision.glsl +#include mgl_lightdef.glsl + +#include mgl_const.glsl +#include mgl_uniform.glsl +#include mgl_uniform_light.glsl +#include mgl_attribute.glsl +#include mgl_varying.glsl + +#include mgl_settexcoord.vp + +void main(void) +{ + vec4 position; + vec3 normal, lightDir, cameraDir, halfDir; + vec4 ambient, diffuse, specular; + float NdotL, NdotHV, dist, attenuation; + int i; + + position = mgl_PMVMatrix[1] * mgl_Vertex; // vertex eye position + + normal = normalize(mgl_NormalMatrix * mgl_Normal); + // cameraPosition: (mgl_PMVMatrix[2] * vec4(0,0,0,1.0)).xyz + cameraDir = normalize( (mgl_PMVMatrix[2] * vec4(0,0,0,1.0)).xyz - mgl_Vertex.xyz ); + + ambient = vec4(0,0,0,0); + diffuse = vec4(0,0,0,0); + specular = vec4(0,0,0,0); + + bool lightEnabled = false; + + for(i=0; i0) { + frontColor=mgl_Color; + } else { + frontColor=mgl_ColorStatic; + } + if( lightEnabled ) { + frontColor *= ambient + diffuse + specular; + } + + gl_Position = mgl_PMVMatrix[0] * position; + + setTexCoord(gl_Position); +} + diff --git a/src/classes/com/sun/opengl/impl/glsl/shader/FixedFuncColorTexture.fp b/src/classes/com/sun/opengl/impl/glsl/shader/FixedFuncColorTexture.fp new file mode 100644 index 000000000..cc4bd0c64 --- /dev/null +++ b/src/classes/com/sun/opengl/impl/glsl/shader/FixedFuncColorTexture.fp @@ -0,0 +1,39 @@ + +#include es_precision.glsl +#include mgl_lightdef.glsl + +#include mgl_const.glsl +#include mgl_uniform.glsl +#include mgl_varying.glsl + +vec4 getTexColor(in sampler2D tex, in int idx) { + vec4 coord; + if(idx==0) { + coord= mgl_TexCoords[0]; + } else if(idx==1) { + coord= mgl_TexCoords[1]; + } else if(idx==2) { + coord= mgl_TexCoords[2]; + } else if(idx==3) { + coord= mgl_TexCoords[3]; + } else if(idx==4) { + coord= mgl_TexCoords[4]; + } else if(idx==5) { + coord= mgl_TexCoords[5]; + } else if(idx==6) { + coord= mgl_TexCoords[6]; + } else { + coord= mgl_TexCoords[7]; + } + return texture2D(tex, coord.st); +} + +void main (void) +{ + vec4 texColor = getTexColor(mgl_ActiveTexture,mgl_ActiveTextureIdx); + if(length(texColor)>0.0) { + gl_FragColor = vec4(frontColor.rgb*texColor.rgb, frontColor.a * texColor.a) ; + } else { + gl_FragColor = frontColor; + } +} diff --git a/src/classes/com/sun/opengl/impl/glsl/shader/bin/nvidia/FixedFuncColor.bfp b/src/classes/com/sun/opengl/impl/glsl/shader/bin/nvidia/FixedFuncColor.bfp new file mode 100755 index 000000000..454354c12 Binary files /dev/null and b/src/classes/com/sun/opengl/impl/glsl/shader/bin/nvidia/FixedFuncColor.bfp differ diff --git a/src/classes/com/sun/opengl/impl/glsl/shader/bin/nvidia/FixedFuncColor.bvp b/src/classes/com/sun/opengl/impl/glsl/shader/bin/nvidia/FixedFuncColor.bvp new file mode 100755 index 000000000..279ef72c7 Binary files /dev/null and b/src/classes/com/sun/opengl/impl/glsl/shader/bin/nvidia/FixedFuncColor.bvp differ diff --git a/src/classes/com/sun/opengl/impl/glsl/shader/bin/nvidia/FixedFuncColorLight.bvp b/src/classes/com/sun/opengl/impl/glsl/shader/bin/nvidia/FixedFuncColorLight.bvp new file mode 100755 index 000000000..5a9deea71 Binary files /dev/null and b/src/classes/com/sun/opengl/impl/glsl/shader/bin/nvidia/FixedFuncColorLight.bvp differ diff --git a/src/classes/com/sun/opengl/impl/glsl/shader/bin/nvidia/FixedFuncColorTexture.bfp b/src/classes/com/sun/opengl/impl/glsl/shader/bin/nvidia/FixedFuncColorTexture.bfp new file mode 100755 index 000000000..375ea6293 Binary files /dev/null and b/src/classes/com/sun/opengl/impl/glsl/shader/bin/nvidia/FixedFuncColorTexture.bfp differ diff --git a/src/classes/com/sun/opengl/impl/glsl/shader/es_precision.glsl b/src/classes/com/sun/opengl/impl/glsl/shader/es_precision.glsl new file mode 100644 index 000000000..fd6abe54e --- /dev/null +++ b/src/classes/com/sun/opengl/impl/glsl/shader/es_precision.glsl @@ -0,0 +1,14 @@ +#ifndef es_precision_glsl +#define es_precision_glsl + +#ifdef GL_ES + #define MEDIUMP mediump + #define HIGHP highp + #define LOWP lowp +#else + #define MEDIUMP + #define HIGHP + #define LOWP +#endif + +#endif // es_precision_glsl diff --git a/src/classes/com/sun/opengl/impl/glsl/shader/mgl_attribute.glsl b/src/classes/com/sun/opengl/impl/glsl/shader/mgl_attribute.glsl new file mode 100644 index 000000000..b09bdb05a --- /dev/null +++ b/src/classes/com/sun/opengl/impl/glsl/shader/mgl_attribute.glsl @@ -0,0 +1,19 @@ + +#ifndef mgl_attribute_glsl +#define mgl_attribute_glsl + +#include es_precision.glsl + +attribute HIGHP vec4 mgl_Vertex; +attribute HIGHP vec3 mgl_Normal; +attribute HIGHP vec4 mgl_Color; +attribute HIGHP vec4 mgl_MultiTexCoord0; +attribute HIGHP vec4 mgl_MultiTexCoord1; +attribute HIGHP vec4 mgl_MultiTexCoord2; +attribute HIGHP vec4 mgl_MultiTexCoord3; +attribute HIGHP vec4 mgl_MultiTexCoord4; +attribute HIGHP vec4 mgl_MultiTexCoord5; +attribute HIGHP vec4 mgl_MultiTexCoord6; +attribute HIGHP vec4 mgl_MultiTexCoord7; + +#endif // mgl_attribute_glsl diff --git a/src/classes/com/sun/opengl/impl/glsl/shader/mgl_const.glsl b/src/classes/com/sun/opengl/impl/glsl/shader/mgl_const.glsl new file mode 100644 index 000000000..1a464a1cb --- /dev/null +++ b/src/classes/com/sun/opengl/impl/glsl/shader/mgl_const.glsl @@ -0,0 +1,10 @@ + +#ifndef mgl_const_glsl +#define mgl_const_glsl + +#include es_precision.glsl + +const LOWP int MAX_TEXTURE_UNITS = 8; // <=gl_MaxTextureImageUnits +const LOWP int MAX_LIGHTS = 8; + +#endif // mgl_const_glsl diff --git a/src/classes/com/sun/opengl/impl/glsl/shader/mgl_lightdef.glsl b/src/classes/com/sun/opengl/impl/glsl/shader/mgl_lightdef.glsl new file mode 100644 index 000000000..98e214139 --- /dev/null +++ b/src/classes/com/sun/opengl/impl/glsl/shader/mgl_lightdef.glsl @@ -0,0 +1,26 @@ +#ifndef mgl_lightdef_glsl +#define mgl_lightdef_glsl + +struct mgl_LightSourceParameters { + vec4 ambient; + vec4 diffuse; + vec4 specular; + vec4 position; + // vec4 halfVector; // is computed here + vec3 spotDirection; + float spotExponent; + float spotCutoff; // (range: [0.0,90.0], 180.0) + //float spotCosCutoff; // (range: [1.0,0.0],-1.0) + float constantAttenuation; + float linearAttenuation; + float quadraticAttenuation; +}; +struct mgl_MaterialParameters { + vec4 ambient; + vec4 diffuse; + vec4 specular; + vec4 emission; + float shininess; +}; + +#endif // mgl_lightdef_glsl diff --git a/src/classes/com/sun/opengl/impl/glsl/shader/mgl_settexcoord.vp b/src/classes/com/sun/opengl/impl/glsl/shader/mgl_settexcoord.vp new file mode 100644 index 000000000..1efe328d0 --- /dev/null +++ b/src/classes/com/sun/opengl/impl/glsl/shader/mgl_settexcoord.vp @@ -0,0 +1,35 @@ +#ifndef mgl_settexcoord_vp +#define mgl_settexcoord_vp + +#include es_precision.glsl + +#include mgl_const.glsl +#include mgl_uniform.glsl +#include mgl_attribute.glsl +#include mgl_varying.glsl + +void setTexCoord(in vec4 defpos) { + /** + * bitwise operator not supported on APX 2500 ES 2.0 + * + mgl_TexCoords[0] = ( 0 != (mgl_TexCoordEnabled & 1) ) ? mgl_MultiTexCoord0 : defpos; + mgl_TexCoords[1] = ( 0 != (mgl_TexCoordEnabled & 2) ) ? mgl_MultiTexCoord1 : defpos; + mgl_TexCoords[2] = ( 0 != (mgl_TexCoordEnabled & 4) ) ? mgl_MultiTexCoord2 : defpos; + mgl_TexCoords[3] = ( 0 != (mgl_TexCoordEnabled & 8) ) ? mgl_MultiTexCoord3 : defpos; + mgl_TexCoords[4] = ( 0 != (mgl_TexCoordEnabled & 16) ) ? mgl_MultiTexCoord4 : defpos; + mgl_TexCoords[5] = ( 0 != (mgl_TexCoordEnabled & 32) ) ? mgl_MultiTexCoord5 : defpos; + mgl_TexCoords[6] = ( 0 != (mgl_TexCoordEnabled & 64) ) ? mgl_MultiTexCoord6 : defpos; + mgl_TexCoords[7] = ( 0 != (mgl_TexCoordEnabled & 128) ) ? mgl_MultiTexCoord7 : defpos; + */ + + mgl_TexCoords[0] = ( 0 != mgl_TexCoordEnabled[0] ) ? mgl_MultiTexCoord0 : defpos; + mgl_TexCoords[1] = ( 0 != mgl_TexCoordEnabled[1] ) ? mgl_MultiTexCoord1 : defpos; + mgl_TexCoords[2] = ( 0 != mgl_TexCoordEnabled[2] ) ? mgl_MultiTexCoord2 : defpos; + mgl_TexCoords[3] = ( 0 != mgl_TexCoordEnabled[3] ) ? mgl_MultiTexCoord3 : defpos; + mgl_TexCoords[4] = ( 0 != mgl_TexCoordEnabled[4] ) ? mgl_MultiTexCoord4 : defpos; + mgl_TexCoords[5] = ( 0 != mgl_TexCoordEnabled[5] ) ? mgl_MultiTexCoord5 : defpos; + mgl_TexCoords[6] = ( 0 != mgl_TexCoordEnabled[6] ) ? mgl_MultiTexCoord6 : defpos; + mgl_TexCoords[7] = ( 0 != mgl_TexCoordEnabled[7] ) ? mgl_MultiTexCoord7 : defpos; +} + +#endif // mgl_settexcoord_vp diff --git a/src/classes/com/sun/opengl/impl/glsl/shader/mgl_uniform.glsl b/src/classes/com/sun/opengl/impl/glsl/shader/mgl_uniform.glsl new file mode 100644 index 000000000..2333e26e2 --- /dev/null +++ b/src/classes/com/sun/opengl/impl/glsl/shader/mgl_uniform.glsl @@ -0,0 +1,17 @@ + +#ifndef mgl_uniform_glsl +#define mgl_uniform_glsl + +#include es_precision.glsl + +#include mgl_const.glsl + +uniform HIGHP mat4 mgl_PMVMatrix[3]; // P, Mv, and Mvi +uniform HIGHP mat3 mgl_NormalMatrix; // transpose(inverse(ModelView)).3x3 +uniform LOWP int mgl_ColorEnabled; +uniform HIGHP vec4 mgl_ColorStatic; +uniform LOWP int mgl_TexCoordEnabled[MAX_TEXTURE_UNITS]; +uniform sampler2D mgl_ActiveTexture; +uniform LOWP int mgl_ActiveTextureIdx; + +#endif // mgl_uniform_glsl diff --git a/src/classes/com/sun/opengl/impl/glsl/shader/mgl_uniform_light.glsl b/src/classes/com/sun/opengl/impl/glsl/shader/mgl_uniform_light.glsl new file mode 100644 index 000000000..0dedb5d5d --- /dev/null +++ b/src/classes/com/sun/opengl/impl/glsl/shader/mgl_uniform_light.glsl @@ -0,0 +1,15 @@ + +#ifndef mgl_uniform_light_glsl +#define mgl_uniform_light_glsl + +#include es_precision.glsl + +#include mgl_const.glsl +#include mgl_lightdef.glsl + +uniform LOWP int mgl_LightsEnabled[MAX_LIGHTS]; + +uniform mgl_LightSourceParameters mgl_LightSource[MAX_LIGHTS]; +uniform mgl_MaterialParameters mgl_FrontMaterial; + +#endif // mgl_uniform_light_glsl diff --git a/src/classes/com/sun/opengl/impl/glsl/shader/mgl_varying.glsl b/src/classes/com/sun/opengl/impl/glsl/shader/mgl_varying.glsl new file mode 100644 index 000000000..fc9f735d1 --- /dev/null +++ b/src/classes/com/sun/opengl/impl/glsl/shader/mgl_varying.glsl @@ -0,0 +1,12 @@ + +#ifndef mgl_varying_glsl +#define mgl_varying_glsl + +#include es_precision.glsl + +#include mgl_const.glsl + +varying vec4 frontColor; +varying vec4 mgl_TexCoords[MAX_TEXTURE_UNITS]; + +#endif // mgl_varying_glsl diff --git a/src/classes/com/sun/opengl/impl/glsl/shader/scripts/nvidia-apx/glslc-ff.bat b/src/classes/com/sun/opengl/impl/glsl/shader/scripts/nvidia-apx/glslc-ff.bat new file mode 100755 index 000000000..b8acba036 --- /dev/null +++ b/src/classes/com/sun/opengl/impl/glsl/shader/scripts/nvidia-apx/glslc-ff.bat @@ -0,0 +1,9 @@ +REM +REM You have to call it from the 'shader' directory, e.g.: +REM scripts\nvidia-apx\glslc-ff.bat +REM +IF !"%JOGLDIR%"==""! GOTO YESPATH +set JOGLDIR=.. +:YESPATH + +java -cp %JOGLDIR%\jogl.core.jar;%JOGLDIR%\jogl.gles2.jar;%JOGLDIR%\jogl.fixed.jar;%JOGLDIR%\jogl.sdk.jar javax.media.opengl.sdk.glsl.CompileShaderNVidia FixedFuncColor.fp FixedFuncColorTexture.fp FixedFuncColorLight.vp FixedFuncColor.vp diff --git a/src/classes/com/sun/opengl/impl/glsl/shader/scripts/nvidia-apx/glslc.bat b/src/classes/com/sun/opengl/impl/glsl/shader/scripts/nvidia-apx/glslc.bat new file mode 100755 index 000000000..9cbea806f --- /dev/null +++ b/src/classes/com/sun/opengl/impl/glsl/shader/scripts/nvidia-apx/glslc.bat @@ -0,0 +1,9 @@ +REM +REM You have to call it from the 'shader' directory, e.g.: +REM scripts\nvidia-apx\glslc.bat +REM +IF !"%JOGLDIR%"==""! GOTO YESPATH +set JOGLDIR=.. +:YESPATH + +java -cp %JOGLDIR%\jogl.core.jar;%JOGLDIR%\jogl.gles2.jar;%JOGLDIR%\jogl.fixed.jar;%JOGLDIR%\jogl.sdk.jar javax.media.opengl.sdk.glsl.CompileShaderNVidia %1 -- cgit v1.2.3