List of usage examples for org.lwjgl.opengl GL20 GL_VERTEX_SHADER
int GL_VERTEX_SHADER
To view the source code for org.lwjgl.opengl GL20 GL_VERTEX_SHADER.
Click Source Link
From source file:org.jogamp.glg2d.impl.shader.AbstractShaderPipeline.java
License:Apache License
protected void attachShaders() { if (vertexShaderFileName != null) { vertexShaderId = compileShader(GL20.GL_VERTEX_SHADER, getClass(), vertexShaderFileName); GL20.glAttachShader(programId, vertexShaderId); }//from w ww.j a v a 2 s . com if (geometryShaderFileName != null) { geometryShaderId = compileShader(GL32.GL_GEOMETRY_SHADER, getClass(), geometryShaderFileName); GL20.glAttachShader(programId, geometryShaderId); } if (fragmentShaderFileName != null) { fragmentShaderId = compileShader(GL20.GL_FRAGMENT_SHADER, getClass(), fragmentShaderFileName); GL20.glAttachShader(programId, fragmentShaderId); } }
From source file:org.spout.engine.renderer.shader.ClientShader.java
License:Open Source License
private void doCompileShader(String vsource, String fsource) { if (((Client) Spout.getEngine()).getRenderMode() == RenderMode.GL11) { return;//from w w w. ja v a 2 s .c o m } //Create a new Shader object on the GPU program = GL20.glCreateProgram(); int vShader = ShaderHelper.compileShader(vsource, GL20.GL_VERTEX_SHADER); GL20.glAttachShader(program, vShader); int fShader = ShaderHelper.compileShader(fsource, GL20.GL_FRAGMENT_SHADER); GL20.glAttachShader(program, fShader); GL20.glLinkProgram(program); int status = GL20.glGetProgram(program, GL20.GL_LINK_STATUS); if (status != GL11.GL_TRUE) { String error = GL20.glGetProgramInfoLog(program, 255); throw new ShaderCompileException("Link Error: " + error); } if (validateShader) { GL20.glValidateProgram(this.program); if (GL20.glGetProgram(program, GL20.GL_VALIDATE_STATUS) != GL11.GL_TRUE) { String info = GL20.glGetProgramInfoLog(program, 255); System.out.println("Validate Log: \n" + info); } System.out.println("Attached Shaders: " + GL20.glGetProgram(program, GL20.GL_ATTACHED_SHADERS)); int activeAttributes = GL20.glGetProgram(program, GL20.GL_ACTIVE_ATTRIBUTES); System.out.println("Active Attributes: " + activeAttributes); int maxAttributeLength = GL20.glGetProgram(program, GL20.GL_ACTIVE_ATTRIBUTE_MAX_LENGTH); for (int i = 0; i < activeAttributes; i++) { System.out.println("\t" + GL20.glGetActiveAttrib(program, i, maxAttributeLength)); } int activeUniforms = GL20.glGetProgram(program, GL20.GL_ACTIVE_UNIFORMS); System.out.println("Active Uniforms: " + activeUniforms); int maxUniformLength = GL20.glGetProgram(program, GL20.GL_ACTIVE_UNIFORM_MAX_LENGTH); for (int i = 0; i < activeUniforms; i++) { System.out.println("\t" + GL20.glGetActiveUniform(program, i, maxUniformLength)); } } System.out.println("Compiled Shader with id: " + program); }
From source file:org.terasology.rendering.assets.GLSLShaderProgramInstance.java
License:Apache License
private void compileShaderProgram(int featureHash) { compileShader(GL20.GL_FRAGMENT_SHADER, featureHash); compileShader(GL20.GL_VERTEX_SHADER, featureHash); int shaderProgram = GL20.glCreateProgram(); shaderPrograms.put(featureHash, shaderProgram); GL20.glAttachShader(shaderProgram, fragmentPrograms.get(featureHash)); GL20.glAttachShader(shaderProgram, vertexPrograms.get(featureHash)); GL20.glLinkProgram(shaderProgram);/*from ww w .j a v a 2 s . co m*/ GL20.glValidateProgram(shaderProgram); }
From source file:org.terasology.rendering.assets.GLSLShaderProgramInstance.java
License:Apache License
private void compileShader(int type, int featureHash) { int shaderId = GL20.glCreateShader(type); StringBuilder shader = createShaderBuilder(); // Add the activated features for this shader for (int i = 0; i < ShaderProgramFeatures.FEATURE_ALL.ordinal(); ++i) { if ((ShaderProgramFeatures.values()[i].getValue() & featureHash) > 0) { shader.append("#define ").append(ShaderProgramFeatures.values()[i].name()).append("\n"); }/*www .j a v a 2 s . co m*/ } shader.append("\n"); shader.append(includedDefines); shader.append(includedUniforms); if (type == GL20.GL_FRAGMENT_SHADER) { shader.append(includedFunctionsFragment).append("\n"); } else { shader.append(includedFunctionsVertex).append("\n"); } if (type == GL20.GL_FRAGMENT_SHADER) { shader.append(shaderProgramBase.getFragShader()); } else if (type == GL20.GL_VERTEX_SHADER) { shader.append(shaderProgramBase.getVertShader()); } String debugShaderType = "UNKNOWN"; if (type == GL20.GL_FRAGMENT_SHADER) { fragmentPrograms.put(featureHash, shaderId); debugShaderType = "FRAGMENT"; } else if (type == GL20.GL_VERTEX_SHADER) { vertexPrograms.put(featureHash, shaderId); debugShaderType = "VERTEX"; } // Dump all final shader sources to the log directory try { final String strippedTitle = shaderProgramBase.getTitle().replace(":", ""); File file = new File(PathManager.getInstance().getLogPath(), debugShaderType.toLowerCase() + "_" + strippedTitle + "_" + featureHash + ".glsl"); FileWriter fileWriter = new FileWriter(file); BufferedWriter out = new BufferedWriter(fileWriter); out.write(shader.toString()); out.close(); } catch (Exception e) { logger.error("Failed to dump shader source."); } GL20.glShaderSource(shaderId, shader.toString()); GL20.glCompileShader(shaderId); StringBuilder error = new StringBuilder(); boolean success = printLogInfo(shaderId, error); String errorLine = ""; if (error.length() > 0) { try { Pattern p = Pattern.compile("-?\\d+"); Matcher m = p.matcher(error.toString()); int counter = 0; while (m.find()) { if (counter++ % 2 == 1) { int lineNumberInt = Integer.valueOf(m.group()); Scanner reader = new Scanner(shader.toString()); for (int i = 0; i < lineNumberInt - 1; ++i) { reader.nextLine(); } errorLine = reader.nextLine(); errorLine = "Error prone line: '" + errorLine + "'"; logger.warn("{}", error); logger.warn("{}", errorLine); break; } } } catch (Exception e) { // Do nothing... } } if (!success) { String errorMessage = debugShaderType + " Shader '" + shaderProgramBase.getTitle() + "' failed to compile. Terasology might not look quite as good as it should now...\n\n" + error + "\n\n" + errorLine; logger.error("{}", errorMessage); JOptionPane.showMessageDialog(null, errorMessage, "Shader compilation error", JOptionPane.ERROR_MESSAGE); } }
From source file:org.terasology.rendering.assets.MaterialShader.java
License:Apache License
private void compileShaderProgram() { String finalVert = ShaderProgram.createShaderBuilder().append(IncludedFunctionsVertex).append('\n') .append(vertShader).toString(); String finalFrag = ShaderProgram.createShaderBuilder().append(IncludedFunctionsFragment).append('\n') .append(fragShader).toString(); valid = true;/*from w w w . ja v a 2s. co m*/ compileShader(GL20.GL_FRAGMENT_SHADER, finalFrag); compileShader(GL20.GL_VERTEX_SHADER, finalVert); }
From source file:org.terasology.rendering.assets.MaterialShader.java
License:Apache License
private void compileShader(int type, String shaderCode) { int shaderId = GL20.glCreateShader(type); if (type == GL20.GL_FRAGMENT_SHADER) { fragmentProgram = shaderId;//ww w. j a v a 2s . c o m } else if (type == GL20.GL_VERTEX_SHADER) { vertexProgram = shaderId; } GL20.glShaderSource(shaderId, shaderCode); GL20.glCompileShader(shaderId); verifyCompile(shaderId); }
From source file:org.terasology.rendering.assets.Shader.java
License:Apache License
private void compileShaderProgram() { String finalVert = createShaderBuilder().append(IncludedFunctionsVertex).append('\n').append(vertShader) .toString();/*from w w w . j a v a2 s .c o m*/ String finalFrag = createShaderBuilder().append(IncludedFunctionsFragment).append('\n').append(fragShader) .toString(); valid = true; compileShader(GL20.GL_FRAGMENT_SHADER, finalFrag); compileShader(GL20.GL_VERTEX_SHADER, finalVert); }
From source file:org.terasology.rendering.opengl.GLSLShader.java
License:Apache License
private void compileShaders(Set<ShaderProgramFeature> features) { compileShader(GL20.GL_FRAGMENT_SHADER, features); compileShader(GL20.GL_VERTEX_SHADER, features); }
From source file:org.terasology.rendering.opengl.GLSLShader.java
License:Apache License
private void compileShader(int type, Set<ShaderProgramFeature> features) { int shaderId = GL20.glCreateShader(type); StringBuilder shader = createShaderBuilder(); // Add the activated features for this shader for (ShaderProgramFeature feature : features) { shader.append("#define ").append(feature.name()).append("\n"); }/*w w w .j a v a 2 s. c o m*/ shader.append("\n"); shader.append(includedDefines); shader.append(includedUniforms); if (type == GL20.GL_FRAGMENT_SHADER) { shader.append(includedFunctionsFragment).append("\n"); } else { shader.append(includedFunctionsVertex).append("\n"); } if (type == GL20.GL_FRAGMENT_SHADER) { shader.append(shaderProgramBase.getFragmentProgram()); } else if (type == GL20.GL_VERTEX_SHADER) { shader.append(shaderProgramBase.getVertexProgram()); } String debugShaderType = "UNKNOWN"; int featureHash = ShaderProgramFeature.getBitset(features); if (type == GL20.GL_FRAGMENT_SHADER) { fragmentPrograms.put(featureHash, shaderId); debugShaderType = "FRAGMENT"; } else if (type == GL20.GL_VERTEX_SHADER) { vertexPrograms.put(featureHash, shaderId); debugShaderType = "VERTEX"; } // Dump all final shader sources to the log directory final String strippedTitle = getURI().toString().replace(":", "-"); Path path = PathManager.getInstance().getShaderLogPath() .resolve(debugShaderType.toLowerCase() + "_" + strippedTitle + "_" + featureHash + ".glsl"); try (BufferedWriter writer = Files.newBufferedWriter(path, TerasologyConstants.CHARSET)) { writer.write(shader.toString()); } catch (IOException e) { logger.error("Failed to dump shader source."); } GL20.glShaderSource(shaderId, shader.toString()); GL20.glCompileShader(shaderId); StringBuilder error = new StringBuilder(); boolean success = printLogInfo(shaderId, error); String errorLine = ""; if (error.length() > 0) { try { Pattern p = Pattern.compile("-?\\d+"); Matcher m = p.matcher(error.toString()); int counter = 0; while (m.find()) { if (counter++ % 2 == 1) { int lineNumberInt = Integer.valueOf(m.group()); try (Scanner reader = new Scanner(shader.toString())) { for (int i = 0; i < lineNumberInt - 1; ++i) { reader.nextLine(); } errorLine = reader.nextLine(); errorLine = "Error prone line: '" + errorLine + "'"; logger.warn("{} \n Line: {}", error, errorLine); } break; } } } catch (Exception e) { logger.error("Error parsing shader compile error: {}", error, e); } } if (!success) { String errorMessage = debugShaderType + " Shader '" + getURI() + "' failed to compile. Terasology might not look quite as good as it should now...\n\n" + error + "\n\n" + errorLine; logger.error(errorMessage); JOptionPane.showMessageDialog(null, errorMessage, "Shader compilation error", JOptionPane.ERROR_MESSAGE); } }
From source file:org.terasology.rendering.shader.ShaderProgram.java
License:Apache License
private void compileShaderProgram() { compileShader(GL20.GL_FRAGMENT_SHADER); compileShader(GL20.GL_VERTEX_SHADER); shaderProgram = GL20.glCreateProgram(); GL20.glAttachShader(shaderProgram, fragmentProgram); GL20.glAttachShader(shaderProgram, vertexProgram); GL20.glLinkProgram(shaderProgram);// ww w . j a v a2 s .c om GL20.glValidateProgram(shaderProgram); }