Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
javax.media.j3d.GLSLShaderProgramRetained Maven / Gradle / Ivy
/*
* Copyright 2005-2008 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*
*/
package javax.media.j3d;
/**
* The GLSLShaderProgram object is a concrete implementation of a
* ShaderProgram node component for the OpenGL GLSL shading language.
*/
class GLSLShaderProgramRetained extends ShaderProgramRetained {
/**
* Constructs a GLSL shader program node component.
*/
GLSLShaderProgramRetained() {
}
@Override
synchronized void createMirrorObject() {
// System.err.println("GLSLShaderProgramRetained : createMirrorObject");
// This method should only call by setLive().
if (mirror == null) {
GLSLShaderProgramRetained mirrorGLSLSP = new GLSLShaderProgramRetained();
mirror = mirrorGLSLSP;
mirror.source = source;
}
initMirrorObject();
}
// ShaderAttributeValue methods
@Override
ShaderError setUniform1i(Context ctx,
ShaderProgramId shaderProgramId,
ShaderAttrLoc uniformLocation,
int value) {
return Pipeline.getPipeline().setGLSLUniform1i(ctx,
shaderProgramId,
uniformLocation,
value);
}
@Override
ShaderError setUniform1f(Context ctx,
ShaderProgramId shaderProgramId,
ShaderAttrLoc uniformLocation,
float value) {
return Pipeline.getPipeline().setGLSLUniform1f(ctx,
shaderProgramId,
uniformLocation,
value);
}
@Override
ShaderError setUniform2i(Context ctx,
ShaderProgramId shaderProgramId,
ShaderAttrLoc uniformLocation,
int[] value) {
return Pipeline.getPipeline().setGLSLUniform2i(ctx,
shaderProgramId,
uniformLocation,
value);
}
@Override
ShaderError setUniform2f(Context ctx,
ShaderProgramId shaderProgramId,
ShaderAttrLoc uniformLocation,
float[] value) {
return Pipeline.getPipeline().setGLSLUniform2f(ctx,
shaderProgramId,
uniformLocation,
value);
}
@Override
ShaderError setUniform3i(Context ctx,
ShaderProgramId shaderProgramId,
ShaderAttrLoc uniformLocation,
int[] value) {
return Pipeline.getPipeline().setGLSLUniform3i(ctx,
shaderProgramId,
uniformLocation,
value);
}
@Override
ShaderError setUniform3f(Context ctx,
ShaderProgramId shaderProgramId,
ShaderAttrLoc uniformLocation,
float[] value) {
return Pipeline.getPipeline().setGLSLUniform3f(ctx,
shaderProgramId,
uniformLocation,
value);
}
@Override
ShaderError setUniform4i(Context ctx,
ShaderProgramId shaderProgramId,
ShaderAttrLoc uniformLocation,
int[] value) {
return Pipeline.getPipeline().setGLSLUniform4i(ctx,
shaderProgramId,
uniformLocation,
value);
}
@Override
ShaderError setUniform4f(Context ctx,
ShaderProgramId shaderProgramId,
ShaderAttrLoc uniformLocation,
float[] value) {
return Pipeline.getPipeline().setGLSLUniform4f(ctx,
shaderProgramId,
uniformLocation,
value);
}
@Override
ShaderError setUniformMatrix3f(Context ctx,
ShaderProgramId shaderProgramId,
ShaderAttrLoc uniformLocation,
float[] value) {
return Pipeline.getPipeline().setGLSLUniformMatrix3f(ctx,
shaderProgramId,
uniformLocation,
value);
}
@Override
ShaderError setUniformMatrix4f(Context ctx,
ShaderProgramId shaderProgramId,
ShaderAttrLoc uniformLocation,
float[] value) {
return Pipeline.getPipeline().setGLSLUniformMatrix4f(ctx,
shaderProgramId,
uniformLocation,
value);
}
// ShaderAttributeArray methods
@Override
ShaderError setUniform1iArray(Context ctx,
ShaderProgramId shaderProgramId,
ShaderAttrLoc uniformLocation,
int numElements,
int[] value) {
return Pipeline.getPipeline().setGLSLUniform1iArray(ctx,
shaderProgramId,
uniformLocation,
numElements,
value);
}
@Override
ShaderError setUniform1fArray(Context ctx,
ShaderProgramId shaderProgramId,
ShaderAttrLoc uniformLocation,
int numElements,
float[] value) {
return Pipeline.getPipeline().setGLSLUniform1fArray(ctx,
shaderProgramId,
uniformLocation,
numElements,
value);
}
@Override
ShaderError setUniform2iArray(Context ctx,
ShaderProgramId shaderProgramId,
ShaderAttrLoc uniformLocation,
int numElements,
int[] value) {
return Pipeline.getPipeline().setGLSLUniform2iArray(ctx,
shaderProgramId,
uniformLocation,
numElements,
value);
}
@Override
ShaderError setUniform2fArray(Context ctx,
ShaderProgramId shaderProgramId,
ShaderAttrLoc uniformLocation,
int numElements,
float[] value) {
return Pipeline.getPipeline().setGLSLUniform2fArray(ctx,
shaderProgramId,
uniformLocation,
numElements,
value);
}
@Override
ShaderError setUniform3iArray(Context ctx,
ShaderProgramId shaderProgramId,
ShaderAttrLoc uniformLocation,
int numElements,
int[] value) {
return Pipeline.getPipeline().setGLSLUniform3iArray(ctx,
shaderProgramId,
uniformLocation,
numElements,
value);
}
@Override
ShaderError setUniform3fArray(Context ctx,
ShaderProgramId shaderProgramId,
ShaderAttrLoc uniformLocation,
int numElements,
float[] value) {
return Pipeline.getPipeline().setGLSLUniform3fArray(ctx,
shaderProgramId,
uniformLocation,
numElements,
value);
}
@Override
ShaderError setUniform4iArray(Context ctx,
ShaderProgramId shaderProgramId,
ShaderAttrLoc uniformLocation,
int numElements,
int[] value) {
return Pipeline.getPipeline().setGLSLUniform4iArray(ctx,
shaderProgramId,
uniformLocation,
numElements,
value);
}
@Override
ShaderError setUniform4fArray(Context ctx,
ShaderProgramId shaderProgramId,
ShaderAttrLoc uniformLocation,
int numElements,
float[] value) {
return Pipeline.getPipeline().setGLSLUniform4fArray(ctx,
shaderProgramId,
uniformLocation,
numElements,
value);
}
@Override
ShaderError setUniformMatrix3fArray(Context ctx,
ShaderProgramId shaderProgramId,
ShaderAttrLoc uniformLocation,
int numElements,
float[] value) {
return Pipeline.getPipeline().setGLSLUniformMatrix3fArray(ctx,
shaderProgramId,
uniformLocation,
numElements,
value);
}
@Override
ShaderError setUniformMatrix4fArray(Context ctx,
ShaderProgramId shaderProgramId,
ShaderAttrLoc uniformLocation,
int numElements,
float[] value) {
return Pipeline.getPipeline().setGLSLUniformMatrix4fArray(ctx,
shaderProgramId,
uniformLocation,
numElements,
value);
}
/**
* Method to return a flag indicating whether this
* ShaderProgram is supported on the specified Canvas.
*/
@Override
boolean isSupported(Canvas3D cv) {
return cv.shadingLanguageGLSL;
}
/**
* Method to create the native shader.
*/
@Override
ShaderError createShader(Context ctx, ShaderRetained shader, ShaderId[] shaderIdArr) {
return Pipeline.getPipeline().createGLSLShader(ctx, shader.shaderType, shaderIdArr);
}
/**
* Method to destroy the native shader.
*/
@Override
ShaderError destroyShader(Context ctx, ShaderId shaderId) {
return Pipeline.getPipeline().destroyGLSLShader(ctx, shaderId);
}
/**
* Method to compile the native shader.
*/
@Override
ShaderError compileShader(Context ctx, ShaderId shaderId, String source) {
return Pipeline.getPipeline().compileGLSLShader(ctx, shaderId, source );
}
/**
* Method to create the native shader program.
*/
@Override
ShaderError createShaderProgram(Context ctx, ShaderProgramId[] shaderProgramIdArr) {
return Pipeline.getPipeline().createGLSLShaderProgram(ctx, shaderProgramIdArr);
}
/**
* Method to destroy the native shader program.
*/
@Override
ShaderError destroyShaderProgram(Context ctx, ShaderProgramId shaderProgramId) {
return Pipeline.getPipeline().destroyGLSLShaderProgram(ctx, shaderProgramId);
}
/**
* Method to link the native shader program.
*/
@Override
ShaderError linkShaderProgram(Context ctx, ShaderProgramId shaderProgramId, ShaderId[] shaderIds) {
return Pipeline.getPipeline().linkGLSLShaderProgram(ctx, shaderProgramId, shaderIds);
}
@Override
ShaderError bindVertexAttrName(Context ctx, ShaderProgramId shaderProgramId, String attrName, int attrIndex) {
return Pipeline.getPipeline().bindGLSLVertexAttrName(ctx, shaderProgramId, attrName, attrIndex);
}
@Override
void lookupVertexAttrNames(Context ctx, ShaderProgramId shaderProgramId, String[] attrNames, boolean[] errArr) {
// This method is a no-op for GLSL
}
@Override
void lookupShaderAttrNames(Context ctx, ShaderProgramId shaderProgramId,
String[] attrNames, AttrNameInfo[] attrNameInfoArr) {
int numAttrNames = attrNames.length;
ShaderAttrLoc[] locArr = new ShaderAttrLoc[numAttrNames];
int[] typeArr = new int[numAttrNames];
int[] sizeArr = new int[numAttrNames]; // currently unused
boolean[] isArrayArr = new boolean[numAttrNames];
Pipeline.getPipeline().lookupGLSLShaderAttrNames(ctx, shaderProgramId,
numAttrNames, attrNames, locArr, typeArr, sizeArr, isArrayArr);
for (int i = 0; i < numAttrNames; i++) {
attrNameInfoArr[i] = new AttrNameInfo();
attrNameInfoArr[i].setLocation(locArr[i]);
attrNameInfoArr[i].setArray(isArrayArr[i]);
attrNameInfoArr[i].setType(typeArr[i]);
// System.err.println(attrNames[i] +
// " : loc = " + locArr[i] +
// ", type = " + typeArr[i] +
// ", isArray = " + isArrayArr[i] +
// ", size = " + sizeArr[i]);
}
}
/**
* Method to enable the native shader program.
*/
@Override
ShaderError enableShaderProgram(Context ctx, ShaderProgramId shaderProgramId) {
return Pipeline.getPipeline().useGLSLShaderProgram(ctx, shaderProgramId);
}
/**
* Method to disable the native shader program.
*/
@Override
ShaderError disableShaderProgram(Context ctx) {
return Pipeline.getPipeline().useGLSLShaderProgram(ctx, null);
}
}