Example usage for com.badlogic.gdx.graphics.glutils ShaderProgram setUniformMatrix

List of usage examples for com.badlogic.gdx.graphics.glutils ShaderProgram setUniformMatrix

Introduction

In this page you can find the example usage for com.badlogic.gdx.graphics.glutils ShaderProgram setUniformMatrix.

Prototype

public void setUniformMatrix(int location, Matrix3 matrix) 

Source Link

Usage

From source file:airfoil.Main.java

License:Open Source License

protected final void renderMeshTriangles(Mesh mesh) {
    final ShaderProgram bodyShader = this.bodyShader;
    if (null != bodyShader) {

        if (null != mesh) {
            final Matrix4 camera = this.getCamera();

            bodyShader.begin();//from   w w  w  .  j a va  2  s  .c o m

            bodyShader.setUniformMatrix("u_camera", camera);
            bodyShader.setUniformf("u_color", Color.YELLOW);
            bodyShader.setUniformf("u_light", LightNormal);
            bodyShader.setUniformf("u_mat", Material);

            mesh.render(bodyShader, GL20.GL_TRIANGLES);

            bodyShader.end();
        }
    }
}

From source file:airfoil.Main.java

License:Open Source License

protected final void renderMeshLines(Mesh mesh) {
    final ShaderProgram axesShader = this.axesShader;
    if (null != axesShader) {

        if (null != mesh) {
            final Matrix4 camera = this.getCamera();

            axesShader.begin();//w  ww .j  a  v a  2  s .c  o  m

            axesShader.setUniformMatrix("u_camera", camera);
            axesShader.setUniformf("u_color", Color.YELLOW);
            axesShader.setUniformf("u_light", LightNormal);
            axesShader.setUniformf("u_mat", Material);

            mesh.render(axesShader, GL20.GL_LINES);

            axesShader.end();
        }
    }
}

From source file:ve.ucv.ciens.ccg.nxtar.graphics.shaders.DirectionalLightPerPixelShader.java

License:Apache License

@Override
public void render(Renderable renderable) {
    ShaderProgram program;
    int index;//from   w w  w .  j  ava 2 s.c o  m
    boolean bonesEnabled;
    Vector3 lightPosition;
    Color diffuseLightColor;
    Color diffuseColor;
    Color specularColor;
    Color ambientColor;
    float shininess;

    // Get material colors.
    if (renderable.environment != null && renderable.environment.directionalLights != null
            && renderable.environment.directionalLights.size >= 1) {
        lightPosition = renderable.environment.directionalLights.get(0).direction;
        diffuseLightColor = renderable.environment.directionalLights.get(0).color;
    } else {
        lightPosition = DEFAULT_LIGHT;
        diffuseLightColor = Color.WHITE;
    }

    if (renderable.material.has(ColorAttribute.Diffuse))
        diffuseColor = ((ColorAttribute) renderable.material.get(ColorAttribute.Diffuse)).color;
    else
        diffuseColor = Color.WHITE;

    if (renderable.material.has(ColorAttribute.Specular))
        specularColor = ((ColorAttribute) renderable.material.get(ColorAttribute.Specular)).color;
    else
        specularColor = Color.BLACK;

    if (renderable.environment != null && renderable.environment.has(ColorAttribute.AmbientLight))
        ambientColor = ((ColorAttribute) renderable.environment.get(ColorAttribute.AmbientLight)).color;
    else
        ambientColor = Color.BLACK;

    if (renderable.material.has(FloatAttribute.Shininess))
        shininess = ((FloatAttribute) renderable.material.get(FloatAttribute.Shininess)).value;
    else
        shininess = DEFAULT_SHININESS;

    if (renderable.mesh.getVertexAttribute(VertexAttributes.Usage.BoneWeight) != null) {
        program = skinningProgram;
        index = 0;
        bonesEnabled = true;
    } else {
        program = baseProgram;
        index = 1;
        bonesEnabled = false;
    }

    program.begin();

    // Set camera dependant uniforms.
    program.setUniformMatrix(u_projTrans[index], this.camera.combined);
    program.setUniformf(u_cameraPos[index], this.camera.position);

    // Set model dependant uniforms.
    program.setUniformMatrix(u_geomTrans[index], renderable.worldTransform);
    program.setUniformMatrix(u_normalMatrix[index],
            normalMatrix.set(renderable.worldTransform).toNormalMatrix());
    program.setUniformf(u_lightPos[index], lightPosition);
    program.setUniformf(u_lightDiffuse[index], diffuseLightColor);
    program.setUniformf(u_materialDiffuse[index], diffuseColor);
    program.setUniformf(u_specular[index], specularColor);
    program.setUniformf(u_ambient[index], ambientColor);
    program.setUniformf(u_shiny[index], shininess);

    // Set the bones uniforms.
    if (bonesEnabled) {
        for (int i = 0; i < MAX_NUM_BONES; i++) {
            if (renderable.bones != null && i < renderable.bones.length && renderable.bones[i] != null)
                skinningProgram.setUniformMatrix(u_bones[i], renderable.bones[i]);
            else
                skinningProgram.setUniformMatrix(u_bones[i], IDENTITY);
        }
    }

    renderable.mesh.render(program, renderable.primitiveType, renderable.meshPartOffset,
            renderable.meshPartSize);

    program.end();
}