Search in sources :

Example 1 with Attribute

use of com.badlogic.gdx.graphics.g3d.Attribute in project libgdx by libgdx.

the class DefaultShader method bindMaterial.

protected void bindMaterial(final Attributes attributes) {
    int cullFace = config.defaultCullFace == -1 ? defaultCullFace : config.defaultCullFace;
    int depthFunc = config.defaultDepthFunc == -1 ? defaultDepthFunc : config.defaultDepthFunc;
    float depthRangeNear = 0f;
    float depthRangeFar = 1f;
    boolean depthMask = true;
    for (final Attribute attr : attributes) {
        final long t = attr.type;
        if (BlendingAttribute.is(t)) {
            context.setBlending(true, ((BlendingAttribute) attr).sourceFunction, ((BlendingAttribute) attr).destFunction);
            set(u_opacity, ((BlendingAttribute) attr).opacity);
        } else if ((t & IntAttribute.CullFace) == IntAttribute.CullFace)
            cullFace = ((IntAttribute) attr).value;
        else if ((t & FloatAttribute.AlphaTest) == FloatAttribute.AlphaTest)
            set(u_alphaTest, ((FloatAttribute) attr).value);
        else if ((t & DepthTestAttribute.Type) == DepthTestAttribute.Type) {
            DepthTestAttribute dta = (DepthTestAttribute) attr;
            depthFunc = dta.depthFunc;
            depthRangeNear = dta.depthRangeNear;
            depthRangeFar = dta.depthRangeFar;
            depthMask = dta.depthMask;
        } else if (!config.ignoreUnimplemented)
            throw new GdxRuntimeException("Unknown material attribute: " + attr.toString());
    }
    context.setCullFace(cullFace);
    context.setDepthTest(depthFunc, depthRangeNear, depthRangeFar);
    context.setDepthMask(depthMask);
}
Also used : GdxRuntimeException(com.badlogic.gdx.utils.GdxRuntimeException) BlendingAttribute(com.badlogic.gdx.graphics.g3d.attributes.BlendingAttribute) PointLightsAttribute(com.badlogic.gdx.graphics.g3d.attributes.PointLightsAttribute) FloatAttribute(com.badlogic.gdx.graphics.g3d.attributes.FloatAttribute) Attribute(com.badlogic.gdx.graphics.g3d.Attribute) TextureAttribute(com.badlogic.gdx.graphics.g3d.attributes.TextureAttribute) IntAttribute(com.badlogic.gdx.graphics.g3d.attributes.IntAttribute) DirectionalLightsAttribute(com.badlogic.gdx.graphics.g3d.attributes.DirectionalLightsAttribute) CubemapAttribute(com.badlogic.gdx.graphics.g3d.attributes.CubemapAttribute) ColorAttribute(com.badlogic.gdx.graphics.g3d.attributes.ColorAttribute) VertexAttribute(com.badlogic.gdx.graphics.VertexAttribute) DepthTestAttribute(com.badlogic.gdx.graphics.g3d.attributes.DepthTestAttribute) SpotLightsAttribute(com.badlogic.gdx.graphics.g3d.attributes.SpotLightsAttribute) DepthTestAttribute(com.badlogic.gdx.graphics.g3d.attributes.DepthTestAttribute) FloatAttribute(com.badlogic.gdx.graphics.g3d.attributes.FloatAttribute)

Example 2 with Attribute

use of com.badlogic.gdx.graphics.g3d.Attribute in project libgdx by libgdx.

the class ParticleShader method bindMaterial.

protected void bindMaterial(final Renderable renderable) {
    if (currentMaterial == renderable.material)
        return;
    int cullFace = config.defaultCullFace == -1 ? GL20.GL_BACK : config.defaultCullFace;
    int depthFunc = config.defaultDepthFunc == -1 ? GL20.GL_LEQUAL : config.defaultDepthFunc;
    float depthRangeNear = 0f;
    float depthRangeFar = 1f;
    boolean depthMask = true;
    currentMaterial = renderable.material;
    for (final Attribute attr : currentMaterial) {
        final long t = attr.type;
        if (BlendingAttribute.is(t)) {
            context.setBlending(true, ((BlendingAttribute) attr).sourceFunction, ((BlendingAttribute) attr).destFunction);
        } else if ((t & DepthTestAttribute.Type) == DepthTestAttribute.Type) {
            DepthTestAttribute dta = (DepthTestAttribute) attr;
            depthFunc = dta.depthFunc;
            depthRangeNear = dta.depthRangeNear;
            depthRangeFar = dta.depthRangeFar;
            depthMask = dta.depthMask;
        } else if (!config.ignoreUnimplemented)
            throw new GdxRuntimeException("Unknown material attribute: " + attr.toString());
    }
    context.setCullFace(cullFace);
    context.setDepthTest(depthFunc, depthRangeNear, depthRangeFar);
    context.setDepthMask(depthMask);
}
Also used : GdxRuntimeException(com.badlogic.gdx.utils.GdxRuntimeException) BlendingAttribute(com.badlogic.gdx.graphics.g3d.attributes.BlendingAttribute) Attribute(com.badlogic.gdx.graphics.g3d.Attribute) TextureAttribute(com.badlogic.gdx.graphics.g3d.attributes.TextureAttribute) DepthTestAttribute(com.badlogic.gdx.graphics.g3d.attributes.DepthTestAttribute) IntAttribute(com.badlogic.gdx.graphics.g3d.attributes.IntAttribute) DepthTestAttribute(com.badlogic.gdx.graphics.g3d.attributes.DepthTestAttribute)

Aggregations

Attribute (com.badlogic.gdx.graphics.g3d.Attribute)2 BlendingAttribute (com.badlogic.gdx.graphics.g3d.attributes.BlendingAttribute)2 DepthTestAttribute (com.badlogic.gdx.graphics.g3d.attributes.DepthTestAttribute)2 IntAttribute (com.badlogic.gdx.graphics.g3d.attributes.IntAttribute)2 TextureAttribute (com.badlogic.gdx.graphics.g3d.attributes.TextureAttribute)2 GdxRuntimeException (com.badlogic.gdx.utils.GdxRuntimeException)2 VertexAttribute (com.badlogic.gdx.graphics.VertexAttribute)1 ColorAttribute (com.badlogic.gdx.graphics.g3d.attributes.ColorAttribute)1 CubemapAttribute (com.badlogic.gdx.graphics.g3d.attributes.CubemapAttribute)1 DirectionalLightsAttribute (com.badlogic.gdx.graphics.g3d.attributes.DirectionalLightsAttribute)1 FloatAttribute (com.badlogic.gdx.graphics.g3d.attributes.FloatAttribute)1 PointLightsAttribute (com.badlogic.gdx.graphics.g3d.attributes.PointLightsAttribute)1 SpotLightsAttribute (com.badlogic.gdx.graphics.g3d.attributes.SpotLightsAttribute)1