Class TessellationShaderProgram

java.lang.Object
gaiasky.util.gdx.shader.ExtShaderProgram
gaiasky.util.gdx.shader.TessellationShaderProgram
All Implemented Interfaces:
com.badlogic.gdx.utils.Disposable

public class TessellationShaderProgram extends ExtShaderProgram
  • Field Details

    • POSITION_ATTRIBUTE

      public static final String POSITION_ATTRIBUTE
      default name for position attributes
      See Also:
    • COLOR_ATTRIBUTE

      public static final String COLOR_ATTRIBUTE
      default name for color attributes
      See Also:
    • TEXCOORD_ATTRIBUTE

      public static final String TEXCOORD_ATTRIBUTE
      default name for texture coordinates attributes, append texture unit number
      See Also:
    • pedantic

      public static boolean pedantic
      flag indicating whether attributes invalid input: '&' uniforms must be present at all times
    • prependVertexCode

      public static String prependVertexCode
      code that is always added to the vertex shader code, typically used to inject a #version line. Note that this is added as-is, you should include a newline (`\n`) if needed.
    • prependTessControlCode

      public static String prependTessControlCode
    • prependTessEvaluationCode

      public static String prependTessEvaluationCode
    • prependFragmentCode

      public static String prependFragmentCode
      code that is always added to every fragment shader code, typically used to inject a #version line. Note that this is added as-is, you should include a newline (`\n`) if needed.
  • Constructor Details

    • TessellationShaderProgram

      public TessellationShaderProgram(String vertexShader, String tessellationControlShader, String tessellationEvaluationShader, String fragmentShader)
  • Method Details

    • invalidateAllShaderPrograms

      public static void invalidateAllShaderPrograms(com.badlogic.gdx.Application app)
      Invalidates all shaders so the next time they are used new handles are generated
      Parameters:
      app -
    • clearAllShaderPrograms

      public static void clearAllShaderPrograms(com.badlogic.gdx.Application app)
    • getManagedStatus

      public static String getManagedStatus()
    • getNumManagedShaderPrograms

      public static int getNumManagedShaderPrograms()
      Returns:
      the number of managed shader programs currently loaded
    • createProgram

      protected int createProgram()
      Overrides:
      createProgram in class ExtShaderProgram
    • getLog

      public String getLog()
      Overrides:
      getLog in class ExtShaderProgram
      Returns:
      the log info for the shader compilation and program linking stage. The shader needs to be bound for this method to have an effect.
    • isCompiled

      public boolean isCompiled()
      Overrides:
      isCompiled in class ExtShaderProgram
      Returns:
      whether this ShaderProgram compiled successfully.
    • fetchUniformLocation

      public int fetchUniformLocation(String name, boolean pedantic)
      Overrides:
      fetchUniformLocation in class ExtShaderProgram
    • setUniformi

      public void setUniformi(String name, int value)
      Sets the uniform with the given name. The ShaderProgram must be bound for this to work.
      Overrides:
      setUniformi in class ExtShaderProgram
      Parameters:
      name - the name of the uniform
      value - the value
    • setUniformi

      public void setUniformi(int location, int value)
      Overrides:
      setUniformi in class ExtShaderProgram
    • setUniformi

      public void setUniformi(String name, int value1, int value2)
      Sets the uniform with the given name. The ShaderProgram must be bound for this to work.
      Overrides:
      setUniformi in class ExtShaderProgram
      Parameters:
      name - the name of the uniform
      value1 - the first value
      value2 - the second value
    • setUniformi

      public void setUniformi(int location, int value1, int value2)
      Overrides:
      setUniformi in class ExtShaderProgram
    • setUniformi

      public void setUniformi(String name, int value1, int value2, int value3)
      Sets the uniform with the given name. The ShaderProgram must be bound for this to work.
      Overrides:
      setUniformi in class ExtShaderProgram
      Parameters:
      name - the name of the uniform
      value1 - the first value
      value2 - the second value
      value3 - the third value
    • setUniformi

      public void setUniformi(int location, int value1, int value2, int value3)
      Overrides:
      setUniformi in class ExtShaderProgram
    • setUniformi

      public void setUniformi(String name, int value1, int value2, int value3, int value4)
      Sets the uniform with the given name. The ShaderProgram must be bound for this to work.
      Overrides:
      setUniformi in class ExtShaderProgram
      Parameters:
      name - the name of the uniform
      value1 - the first value
      value2 - the second value
      value3 - the third value
      value4 - the fourth value
    • setUniformi

      public void setUniformi(int location, int value1, int value2, int value3, int value4)
      Overrides:
      setUniformi in class ExtShaderProgram
    • setUniformf

      public void setUniformf(String name, float value)
      Sets the uniform with the given name. The ShaderProgram must be bound for this to work.
      Overrides:
      setUniformf in class ExtShaderProgram
      Parameters:
      name - the name of the uniform
      value - the value
    • setUniformf

      public void setUniformf(int location, float value)
      Overrides:
      setUniformf in class ExtShaderProgram
    • setUniformf

      public void setUniformf(String name, float value1, float value2)
      Sets the uniform with the given name. The ShaderProgram must be bound for this to work.
      Overrides:
      setUniformf in class ExtShaderProgram
      Parameters:
      name - the name of the uniform
      value1 - the first value
      value2 - the second value
    • setUniformf

      public void setUniformf(int location, float value1, float value2)
      Overrides:
      setUniformf in class ExtShaderProgram
    • setUniformf

      public void setUniformf(String name, float value1, float value2, float value3)
      Sets the uniform with the given name. The ShaderProgram must be bound for this to work.
      Overrides:
      setUniformf in class ExtShaderProgram
      Parameters:
      name - the name of the uniform
      value1 - the first value
      value2 - the second value
      value3 - the third value
    • setUniformf

      public void setUniformf(int location, float value1, float value2, float value3)
      Overrides:
      setUniformf in class ExtShaderProgram
    • setUniformf

      public void setUniformf(String name, float value1, float value2, float value3, float value4)
      Sets the uniform with the given name. The ShaderProgram must be bound for this to work.
      Overrides:
      setUniformf in class ExtShaderProgram
      Parameters:
      name - the name of the uniform
      value1 - the first value
      value2 - the second value
      value3 - the third value
      value4 - the fourth value
    • setUniformf

      public void setUniformf(int location, float value1, float value2, float value3, float value4)
      Overrides:
      setUniformf in class ExtShaderProgram
    • setUniform1fv

      public void setUniform1fv(String name, float[] values, int offset, int length)
      Overrides:
      setUniform1fv in class ExtShaderProgram
    • setUniform1fv

      public void setUniform1fv(int location, float[] values, int offset, int length)
      Overrides:
      setUniform1fv in class ExtShaderProgram
    • setUniform2fv

      public void setUniform2fv(String name, float[] values, int offset, int length)
      Overrides:
      setUniform2fv in class ExtShaderProgram
    • setUniform2fv

      public void setUniform2fv(int location, float[] values, int offset, int length)
      Overrides:
      setUniform2fv in class ExtShaderProgram
    • setUniform3fv

      public void setUniform3fv(String name, float[] values, int offset, int length)
      Overrides:
      setUniform3fv in class ExtShaderProgram
    • setUniform3fv

      public void setUniform3fv(int location, float[] values, int offset, int length)
      Overrides:
      setUniform3fv in class ExtShaderProgram
    • setUniform4fv

      public void setUniform4fv(String name, float[] values, int offset, int length)
      Overrides:
      setUniform4fv in class ExtShaderProgram
    • setUniform4fv

      public void setUniform4fv(int location, float[] values, int offset, int length)
      Overrides:
      setUniform4fv in class ExtShaderProgram
    • setUniformMatrix

      public void setUniformMatrix(String name, com.badlogic.gdx.math.Matrix4 matrix)
      Sets the uniform matrix with the given name. The ShaderProgram must be bound for this to work.
      Overrides:
      setUniformMatrix in class ExtShaderProgram
      Parameters:
      name - the name of the uniform
      matrix - the matrix
    • setUniformMatrix

      public void setUniformMatrix(String name, com.badlogic.gdx.math.Matrix4 matrix, boolean transpose)
      Sets the uniform matrix with the given name. The ShaderProgram must be bound for this to work.
      Overrides:
      setUniformMatrix in class ExtShaderProgram
      Parameters:
      name - the name of the uniform
      matrix - the matrix
      transpose - whether the matrix should be transposed
    • setUniformMatrix

      public void setUniformMatrix(int location, com.badlogic.gdx.math.Matrix4 matrix)
      Overrides:
      setUniformMatrix in class ExtShaderProgram
    • setUniformMatrix

      public void setUniformMatrix(int location, com.badlogic.gdx.math.Matrix4 matrix, boolean transpose)
      Overrides:
      setUniformMatrix in class ExtShaderProgram
    • setUniformMatrix

      public void setUniformMatrix(String name, com.badlogic.gdx.math.Matrix3 matrix)
      Sets the uniform matrix with the given name. The ShaderProgram must be bound for this to work.
      Overrides:
      setUniformMatrix in class ExtShaderProgram
      Parameters:
      name - the name of the uniform
      matrix - the matrix
    • setUniformMatrix

      public void setUniformMatrix(String name, com.badlogic.gdx.math.Matrix3 matrix, boolean transpose)
      Sets the uniform matrix with the given name. The ShaderProgram must be bound for this to work.
      Overrides:
      setUniformMatrix in class ExtShaderProgram
      Parameters:
      name - the name of the uniform
      matrix - the matrix
      transpose - whether the uniform matrix should be transposed
    • setUniformMatrix

      public void setUniformMatrix(int location, com.badlogic.gdx.math.Matrix3 matrix)
      Overrides:
      setUniformMatrix in class ExtShaderProgram
    • setUniformMatrix

      public void setUniformMatrix(int location, com.badlogic.gdx.math.Matrix3 matrix, boolean transpose)
      Overrides:
      setUniformMatrix in class ExtShaderProgram
    • setUniformMatrix3fv

      public void setUniformMatrix3fv(String name, FloatBuffer buffer, int count, boolean transpose)
      Sets an array of uniform matrices with the given name. The ShaderProgram must be bound for this to work.
      Overrides:
      setUniformMatrix3fv in class ExtShaderProgram
      Parameters:
      name - the name of the uniform
      buffer - buffer containing the matrix data
      transpose - whether the uniform matrix should be transposed
    • setUniformMatrix4fv

      public void setUniformMatrix4fv(String name, FloatBuffer buffer, int count, boolean transpose)
      Sets an array of uniform matrices with the given name. The ShaderProgram must be bound for this to work.
      Overrides:
      setUniformMatrix4fv in class ExtShaderProgram
      Parameters:
      name - the name of the uniform
      buffer - buffer containing the matrix data
      transpose - whether the uniform matrix should be transposed
    • setUniformMatrix4fv

      public void setUniformMatrix4fv(int location, float[] values, int offset, int length)
      Overrides:
      setUniformMatrix4fv in class ExtShaderProgram
    • setUniformMatrix4fv

      public void setUniformMatrix4fv(String name, float[] values, int offset, int length)
      Overrides:
      setUniformMatrix4fv in class ExtShaderProgram
    • setUniformf

      public void setUniformf(String name, com.badlogic.gdx.math.Vector2 values)
      Sets the uniform with the given name. The ShaderProgram must be bound for this to work.
      Overrides:
      setUniformf in class ExtShaderProgram
      Parameters:
      name - the name of the uniform
      values - x and y as the first and second values respectively
    • setUniformf

      public void setUniformf(int location, com.badlogic.gdx.math.Vector2 values)
      Overrides:
      setUniformf in class ExtShaderProgram
    • setUniformf

      public void setUniformf(String name, com.badlogic.gdx.math.Vector3 values)
      Sets the uniform with the given name. The ShaderProgram must be bound for this to work.
      Overrides:
      setUniformf in class ExtShaderProgram
      Parameters:
      name - the name of the uniform
      values - x, y and z as the first, second and third values respectively
    • setUniformf

      public void setUniformf(int location, com.badlogic.gdx.math.Vector3 values)
      Overrides:
      setUniformf in class ExtShaderProgram
    • setUniformf

      public void setUniformf(String name, com.badlogic.gdx.graphics.Color values)
      Sets the uniform with the given name. The ShaderProgram must be bound for this to work.
      Overrides:
      setUniformf in class ExtShaderProgram
      Parameters:
      name - the name of the uniform
      values - r, g, b and a as the first through fourth values respectively
    • setUniformf

      public void setUniformf(int location, com.badlogic.gdx.graphics.Color values)
      Overrides:
      setUniformf in class ExtShaderProgram
    • setVertexAttribute

      public void setVertexAttribute(String name, int size, int type, boolean normalize, int stride, Buffer buffer)
      Sets the vertex attribute with the given name. The ShaderProgram must be bound for this to work.
      Overrides:
      setVertexAttribute in class ExtShaderProgram
      Parameters:
      name - the attribute name
      size - the number of components, must be >= 1 and invalid input: '<'= 4
      type - the type, must be one of GL20.GL_BYTE, GL20.GL_UNSIGNED_BYTE, GL20.GL_SHORT, GL20.GL_UNSIGNED_SHORT,GL20.GL_FIXED, or GL20.GL_FLOAT. GL_FIXED will not work on the desktop
      normalize - whether fixed point data should be normalized. Will not work on the desktop
      stride - the stride in bytes between successive attributes
      buffer - the buffer containing the vertex attributes.
    • setVertexAttribute

      public void setVertexAttribute(int location, int size, int type, boolean normalize, int stride, Buffer buffer)
      Overrides:
      setVertexAttribute in class ExtShaderProgram
    • setVertexAttribute

      public void setVertexAttribute(String name, int size, int type, boolean normalize, int stride, int offset)
      Sets the vertex attribute with the given name. The ShaderProgram must be bound for this to work.
      Overrides:
      setVertexAttribute in class ExtShaderProgram
      Parameters:
      name - the attribute name
      size - the number of components, must be >= 1 and invalid input: '<'= 4
      type - the type, must be one of GL20.GL_BYTE, GL20.GL_UNSIGNED_BYTE, GL20.GL_SHORT, GL20.GL_UNSIGNED_SHORT,GL20.GL_FIXED, or GL20.GL_FLOAT. GL_FIXED will not work on the desktop
      normalize - whether fixed point data should be normalized. Will not work on the desktop
      stride - the stride in bytes between successive attributes
      offset - byte offset into the vertex buffer object bound to GL20.GL_ARRAY_BUFFER.
    • setVertexAttribute

      public void setVertexAttribute(int location, int size, int type, boolean normalize, int stride, int offset)
      Overrides:
      setVertexAttribute in class ExtShaderProgram
    • begin

      public void begin()
      Makes OpenGL ES 2.0 use this vertex and fragment shader pair. When you are done with this shader you have to call ShaderProgram.end().
      Overrides:
      begin in class ExtShaderProgram
    • end

      public void end()
      Disables this shader. Must be called when one is done with the shader. Don't mix it with dispose, that will release the shader resources.
      Overrides:
      end in class ExtShaderProgram
    • disableVertexAttribute

      public void disableVertexAttribute(String name)
      Disables the vertex attribute with the given name
      Overrides:
      disableVertexAttribute in class ExtShaderProgram
      Parameters:
      name - the vertex attribute name
    • disableVertexAttribute

      public void disableVertexAttribute(int location)
      Overrides:
      disableVertexAttribute in class ExtShaderProgram
    • enableVertexAttribute

      public void enableVertexAttribute(String name)
      Enables the vertex attribute with the given name
      Overrides:
      enableVertexAttribute in class ExtShaderProgram
      Parameters:
      name - the vertex attribute name
    • enableVertexAttribute

      public void enableVertexAttribute(int location)
      Overrides:
      enableVertexAttribute in class ExtShaderProgram
    • setAttributef

      public void setAttributef(String name, float value1, float value2, float value3, float value4)
      Sets the given attribute
      Overrides:
      setAttributef in class ExtShaderProgram
      Parameters:
      name - the name of the attribute
      value1 - the first value
      value2 - the second value
      value3 - the third value
      value4 - the fourth value
    • hasAttribute

      public boolean hasAttribute(String name)
      Overrides:
      hasAttribute in class ExtShaderProgram
      Parameters:
      name - the name of the attribute
      Returns:
      whether the attribute is available in the shader
    • getAttributeType

      public int getAttributeType(String name)
      Overrides:
      getAttributeType in class ExtShaderProgram
      Parameters:
      name - the name of the attribute
      Returns:
      the type of the attribute, one of GL20.GL_FLOAT, GL20.GL_FLOAT_VEC2 etc.
    • getAttributeLocation

      public int getAttributeLocation(String name)
      Overrides:
      getAttributeLocation in class ExtShaderProgram
      Parameters:
      name - the name of the attribute
      Returns:
      the location of the attribute or -1.
    • getAttributeSize

      public int getAttributeSize(String name)
      Overrides:
      getAttributeSize in class ExtShaderProgram
      Parameters:
      name - the name of the attribute
      Returns:
      the size of the attribute or 0.
    • hasUniform

      public boolean hasUniform(String name)
      Overrides:
      hasUniform in class ExtShaderProgram
      Parameters:
      name - the name of the uniform
      Returns:
      whether the uniform is available in the shader
    • getUniformType

      public int getUniformType(String name)
      Overrides:
      getUniformType in class ExtShaderProgram
      Parameters:
      name - the name of the uniform
      Returns:
      the type of the uniform, one of GL20.GL_FLOAT, GL20.GL_FLOAT_VEC2 etc.
    • getUniformLocation

      public int getUniformLocation(String name)
      Overrides:
      getUniformLocation in class ExtShaderProgram
      Parameters:
      name - the name of the uniform
      Returns:
      the location of the uniform or -1.
    • getUniformSize

      public int getUniformSize(String name)
      Overrides:
      getUniformSize in class ExtShaderProgram
      Parameters:
      name - the name of the uniform
      Returns:
      the size of the uniform or 0.
    • getAttributes

      public String[] getAttributes()
      Overrides:
      getAttributes in class ExtShaderProgram
      Returns:
      the attributes
    • getUniforms

      public String[] getUniforms()
      Overrides:
      getUniforms in class ExtShaderProgram
      Returns:
      the uniforms
    • getVertexShaderSource

      public String getVertexShaderSource()
      Overrides:
      getVertexShaderSource in class ExtShaderProgram
      Returns:
      the source of the vertex shader
    • getFragmentShaderSource

      public String getFragmentShaderSource()
      Overrides:
      getFragmentShaderSource in class ExtShaderProgram
      Returns:
      the source of the fragment shader
    • dispose

      public void dispose()
      Description copied from class: ExtShaderProgram
      Disposes all resources associated with this shader. Must be called when the shader is no longer used.
      Specified by:
      dispose in interface com.badlogic.gdx.utils.Disposable
      Overrides:
      dispose in class ExtShaderProgram