/** * Set an uniform value for this shader object. * * @param name * uniform variable to change * @param value * the new value */ public void setUniform(final String name, final int value) { final ShaderVariableInt shaderUniform = getShaderUniform(name, ShaderVariableInt.class); shaderUniform.value1 = value; setNeedsRefresh(true); }
private GLSLShaderObjectsState getColorizeShader() { final GLSLShaderObjectsState shader = new GLSLShaderObjectsState(); try { shader.setVertexShader(ResourceLocatorTool.getClassPathResourceAsStream(ColorReplaceEffect.class, shaderDirectory + "fsq.vert")); shader.setFragmentShader(ResourceLocatorTool.getClassPathResourceAsStream(ColorReplaceEffect.class, shaderDirectory + "color_replace.frag")); } catch (final Exception e) { e.printStackTrace(); } shader.setUniform("inputTex", 0); shader.setUniform("colorRampTex", 1); shader.setUniform("redWeight", _redWeight); shader.setUniform("greenWeight", _greenWeight); shader.setUniform("blueWeight", _blueWeight); return shader; }
public void setVertexShader(final InputStream stream, final String name) throws IOException { setVertexShader(load(stream)); _vertexShaderName = name; }
public void setFragmentShader(final InputStream stream, final String name) throws IOException { setFragmentShader(load(stream)); _fragmentShaderName = name; }
protected static void sendToGL(final GLSLShaderObjectsState state, final ContextCapabilities caps) { if (state.getVertexShader() == null && state.getFragmentShader() == null) { logger.warning("Could not find shader resources!" + "(both inputbuffers are null)"); state._needSendShader = false; if (state.getVertexShader() != null) { if (state._vertexShaderID != -1) { removeVertShader(state); ARBShaderObjects.glShaderSourceARB(state._vertexShaderID, state.getVertexShader()); if (state.getFragmentShader() != null) { if (state._fragmentShaderID != -1) { removeFragShader(state); ARBShaderObjects.glShaderSourceARB(state._fragmentShaderID, state.getFragmentShader()); if (state.getGeometryShader() != null) { if (state._geometryShaderID != -1) { removeGeomShader(state); ARBShaderObjects.glShaderSourceARB(state._geometryShaderID, state.getGeometryShader()); if (state.getTessellationControlShader() != null) { if (state._tessellationControlShaderID != -1) { removeTessControlShader(state); state.getTessellationControlShader()); if (state.getTessellationEvaluationShader() != null) {
context.setCurrentState(StateType.GLSLShader, state); if (state.isEnabled()) { if (state._needSendShader) { sendToGL(state, caps); if (!record.isValid() || record.getReference() != state || state.needsRefresh()) { record.setReference(state); if (state.isEnabled() && state._programID != -1) { for (int i = state.getShaderAttributes().size(); --i >= 0;) { final ShaderVariable shaderVariable = state.getShaderAttributes().get(i); if (shaderVariable.needsRefresh) { LwjglShaderUtil.updateAttributeLocation(shaderVariable, state._programID); shaderVariable.needsRefresh = false; LwjglShaderUtil.updateShaderAttribute(renderer, shaderVariable, state.isUseAttributeVBO()); for (int i = state.getShaderUniforms().size(); --i >= 0;) { final ShaderVariable shaderVariable = state.getShaderUniforms().get(i); if (shaderVariable.needsRefresh) { LwjglShaderUtil.updateUniformLocation(shaderVariable, state._programID);
public void setSampleDistance(final float value) { _blurHorizShader.setUniform("sampleDist", value); _blurVertShader.setUniform("sampleDist", value); }
waterShader.setVertexShader(ResourceLocatorTool.getClassPathResourceAsStream(WaterNode.class, currentShaderStr + ".vert")); waterShader.setFragmentShader(ResourceLocatorTool.getClassPathResourceAsStream(WaterNode.class, currentShaderStr + ".frag")); } catch (final IOException e) { waterShader.setUniform("normalMap", 0); waterShader.setUniform("reflection", 1); waterShader.setUniform("dudvMap", 2); if (useRefraction) { waterShader.setUniform("refraction", 3); waterShader.setUniform("depthMap", 4); waterShader.setUniform("foamMap", 5); } else { waterShader.setUniform("foamMap", 3); blurShaderVertical.setVertexShader(ResourceLocatorTool.getClassPathResourceAsStream(WaterNode.class, "com/ardor3d/extension/effect/bloom/bloom_blur.vert")); blurShaderVertical.setFragmentShader(ResourceLocatorTool.getClassPathResourceAsStream(WaterNode.class, "com/ardor3d/extension/effect/bloom/bloom_blur_vertical5_down.frag")); } catch (final IOException ex) { logger.logp(Level.SEVERE, getClass().getName(), "init(Renderer)", "Could not load shaders.", ex); blurShaderVertical.setUniform("RT", 0); blurShaderVertical.setUniform("sampleDist", blurSampleDistance); blurShaderVertical._needSendShader = true;
/** * Set an attribute pointer value for this shader object. * * @param name * attribute variable to change * @param size * the number of rows and cols in the matrix. Must be 2, 3, or 4. * @param normalized * Specifies whether fixed-point data values should be normalized or converted directly as fixed-point * values when they are accessed. * @param data * The actual data to use as attribute pointer */ public void setAttributePointerMatrix(final String name, final int size, final boolean normalized, final FloatBufferData data) { final ShaderVariablePointerFloatMatrix shaderUniform = getShaderAttribute(name, ShaderVariablePointerFloatMatrix.class); shaderUniform.size = size; shaderUniform.normalized = normalized; shaderUniform.data = data; setNeedsRefresh(true); }
_pssmShader = new GLSLShaderObjectsState(); try { _pssmShader.setVertexShader(ResourceLocatorTool.getClassPathResourceAsStream( ParallelSplitShadowMapPass.class, "com/ardor3d/extension/shadow/map/pssm.vert")); if (filter == Filter.None) { _pssmShader.setFragmentShader(ResourceLocatorTool.getClassPathResourceAsStream( ParallelSplitShadowMapPass.class, "com/ardor3d/extension/shadow/map/pssm.frag")); } else if (filter == Filter.Pcf) { _pssmShader.setFragmentShader(ResourceLocatorTool.getClassPathResourceAsStream( ParallelSplitShadowMapPass.class, "com/ardor3d/extension/shadow/map/pssmPCF.frag")); _pssmDebugShader = new GLSLShaderObjectsState(); try { _pssmDebugShader.setVertexShader(ResourceLocatorTool.getClassPathResourceAsStream( ParallelSplitShadowMapPass.class, "com/ardor3d/extension/shadow/map/pssmDebug.vert")); _pssmDebugShader.setFragmentShader(ResourceLocatorTool.getClassPathResourceAsStream( ParallelSplitShadowMapPass.class, "com/ardor3d/extension/shadow/map/pssmDebug.frag")); } catch (final IOException ex) {
_geometryClipmapShader.setUniform("scale", 1f / textureClipmap.getScale()); _geometryClipmapShader.setUniform("textureSize", (float) textureClipmap.getTextureSize()); _geometryClipmapShader.setUniform("texelSize", 1f / textureClipmap.getTextureSize()); _geometryClipmapShader.setUniform("levels", (float) textureClipmap.getTextureLevels()); _geometryClipmapShader.setUniform("validLevels", (float) textureClipmap.getValidLevels() - 1); _geometryClipmapShader.setUniform("showDebug", textureClipmap.isShowDebug() ? 1.0f : 0.0f); _geometryClipmapShader.setNeedsRefresh(true);
RenderState.StateType.GLSLShader, _states.get(RenderState.StateType.GLSLShader)); if (glsl != null && glsl.getShaderDataLogic() != null) { glsl.setMesh(this); glsl.setNeedsRefresh(true);
/** * Set the contents for our vertex shader * * @param shader * the shader contents. */ public void setVertexShader(final ByteBuffer shader) { setVertexShader(shader, ""); }
/** * Set the contents for our fragment shader * * @param shader * the shader contents. */ public void setFragmentShader(final String shader) { setFragmentShader(shader, ""); }
/** * Creates a new WaterRenderPass * * @param cam * main rendercam to use for reflection settings etc * @param renderScale * how many times smaller the reflection/refraction textures should be compared to the main display * @param useProjectedShader * true - use the projected setup for variable height water meshes, false - use the flast shader setup * @param useRefraction * enable/disable rendering of refraction textures */ public WaterNode(final Camera cam, final int renderScale, final boolean useProjectedShader, final boolean useRefraction) { this.cam = cam; this.useProjectedShader = useProjectedShader; this.useRefraction = useRefraction; this.renderScale = renderScale; resetParameters(); waterShader = new GLSLShaderObjectsState(); blurShaderVertical = new GLSLShaderObjectsState(); cullBackFace = new CullState(); cullBackFace.setEnabled(true); cullBackFace.setCullFace(CullState.Face.None); }
if (state.getVertexShader() == null && state.getFragmentShader() == null) { logger.warning("Could not find shader resources!" + "(both inputbuffers are null)"); state._needSendShader = false; if (state.getVertexShader() != null) { if (state._vertexShaderID != -1) { removeVertShader(state); final byte array[] = new byte[state.getVertexShader().limit()]; state.getVertexShader().rewind(); state.getVertexShader().get(array); if (gl.isGL2()) { gl.getGL2().glShaderSourceARB(state._vertexShaderID, 1, new String[] { new String(array) }, if (state.getFragmentShader() != null) { if (state._fragmentShaderID != -1) { removeFragShader(state); final byte array[] = new byte[state.getFragmentShader().limit()]; state.getFragmentShader().rewind(); state.getFragmentShader().get(array); if (gl.isGL2()) { gl.getGL2().glShaderSourceARB(state._fragmentShaderID, 1, new String[] { new String(array) }, if (state.getGeometryShader() != null) { if (state._geometryShaderID != -1) { removeGeomShader(state); final byte array[] = new byte[state.getGeometryShader().limit()];
context.setCurrentState(StateType.GLSLShader, state); if (state.isEnabled()) { if (state._needSendShader) { sendToGL(state, caps); if (!record.isValid() || record.getReference() != state || state.needsRefresh()) { record.setReference(state); if (state.isEnabled() && state._programID != -1) { final List<ShaderVariable> attribs = state.getShaderAttributes(); for (int i = attribs.size(); --i >= 0;) { final ShaderVariable shaderVariable = attribs.get(i); shaderVariable.needsRefresh = false; JoglShaderUtil.updateShaderAttribute(renderer, shaderVariable, state.isUseAttributeVBO()); final List<ShaderVariable> uniforms = state.getShaderUniforms(); for (int i = uniforms.size(); --i >= 0;) { final ShaderVariable shaderVariable = uniforms.get(i);
public void setExposureCutoff(final float value) { _extractionShader.setUniform("exposureCutoff", value); }
/** * Set an attribute pointer value for this shader object. * * @param name * attribute variable to change * @param size * Specifies the number of values for each element of the generic vertex attribute array. Must be 1, 2, * 3, or 4. * @param normalized * Specifies whether fixed-point data values should be normalized or converted directly as fixed-point * values when they are accessed. * @param unsigned * Specifies wheter the data is signed or unsigned * @param stride * Specifies the byte offset between consecutive attribute values. If stride is 0 (the initial value), * the attribute values are understood to be tightly packed in the array. * @param data * The actual data to use as attribute pointer */ public void setAttributePointer(final String name, final int size, final boolean normalized, final boolean unsigned, final int stride, final ShortBufferData data) { final ShaderVariablePointerShort shaderUniform = getShaderAttribute(name, ShaderVariablePointerShort.class); shaderUniform.size = size; shaderUniform.normalized = normalized; shaderUniform.unsigned = unsigned; shaderUniform.stride = stride; shaderUniform.data = data; setNeedsRefresh(true); }
/** * Set the contents for our vertex shader * * @param shader * the shader contents. */ public void setVertexShader(final String shader) { setVertexShader(shader, ""); }