Search in sources :

Example 1 with FloatAttribute

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

the class Model method convertMaterial.

protected Material convertMaterial(ModelMaterial mtl, TextureProvider textureProvider) {
    Material result = new Material();
    result.id = mtl.id;
    if (mtl.ambient != null)
        result.set(new ColorAttribute(ColorAttribute.Ambient, mtl.ambient));
    if (mtl.diffuse != null)
        result.set(new ColorAttribute(ColorAttribute.Diffuse, mtl.diffuse));
    if (mtl.specular != null)
        result.set(new ColorAttribute(ColorAttribute.Specular, mtl.specular));
    if (mtl.emissive != null)
        result.set(new ColorAttribute(ColorAttribute.Emissive, mtl.emissive));
    if (mtl.reflection != null)
        result.set(new ColorAttribute(ColorAttribute.Reflection, mtl.reflection));
    if (mtl.shininess > 0f)
        result.set(new FloatAttribute(FloatAttribute.Shininess, mtl.shininess));
    if (mtl.opacity != 1.f)
        result.set(new BlendingAttribute(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA, mtl.opacity));
    ObjectMap<String, Texture> textures = new ObjectMap<String, Texture>();
    // FIXME uvScaling/uvTranslation totally ignored
    if (mtl.textures != null) {
        for (ModelTexture tex : mtl.textures) {
            Texture texture;
            if (textures.containsKey(tex.fileName)) {
                texture = textures.get(tex.fileName);
            } else {
                texture = textureProvider.load(tex.fileName);
                textures.put(tex.fileName, texture);
                disposables.add(texture);
            }
            TextureDescriptor descriptor = new TextureDescriptor(texture);
            descriptor.minFilter = texture.getMinFilter();
            descriptor.magFilter = texture.getMagFilter();
            descriptor.uWrap = texture.getUWrap();
            descriptor.vWrap = texture.getVWrap();
            float offsetU = tex.uvTranslation == null ? 0f : tex.uvTranslation.x;
            float offsetV = tex.uvTranslation == null ? 0f : tex.uvTranslation.y;
            float scaleU = tex.uvScaling == null ? 1f : tex.uvScaling.x;
            float scaleV = tex.uvScaling == null ? 1f : tex.uvScaling.y;
            switch(tex.usage) {
                case ModelTexture.USAGE_DIFFUSE:
                    result.set(new TextureAttribute(TextureAttribute.Diffuse, descriptor, offsetU, offsetV, scaleU, scaleV));
                    break;
                case ModelTexture.USAGE_SPECULAR:
                    result.set(new TextureAttribute(TextureAttribute.Specular, descriptor, offsetU, offsetV, scaleU, scaleV));
                    break;
                case ModelTexture.USAGE_BUMP:
                    result.set(new TextureAttribute(TextureAttribute.Bump, descriptor, offsetU, offsetV, scaleU, scaleV));
                    break;
                case ModelTexture.USAGE_NORMAL:
                    result.set(new TextureAttribute(TextureAttribute.Normal, descriptor, offsetU, offsetV, scaleU, scaleV));
                    break;
                case ModelTexture.USAGE_AMBIENT:
                    result.set(new TextureAttribute(TextureAttribute.Ambient, descriptor, offsetU, offsetV, scaleU, scaleV));
                    break;
                case ModelTexture.USAGE_EMISSIVE:
                    result.set(new TextureAttribute(TextureAttribute.Emissive, descriptor, offsetU, offsetV, scaleU, scaleV));
                    break;
                case ModelTexture.USAGE_REFLECTION:
                    result.set(new TextureAttribute(TextureAttribute.Reflection, descriptor, offsetU, offsetV, scaleU, scaleV));
                    break;
            }
        }
    }
    return result;
}
Also used : BlendingAttribute(com.badlogic.gdx.graphics.g3d.attributes.BlendingAttribute) ObjectMap(com.badlogic.gdx.utils.ObjectMap) ModelMaterial(com.badlogic.gdx.graphics.g3d.model.data.ModelMaterial) FloatAttribute(com.badlogic.gdx.graphics.g3d.attributes.FloatAttribute) TextureDescriptor(com.badlogic.gdx.graphics.g3d.utils.TextureDescriptor) ColorAttribute(com.badlogic.gdx.graphics.g3d.attributes.ColorAttribute) ModelTexture(com.badlogic.gdx.graphics.g3d.model.data.ModelTexture) Texture(com.badlogic.gdx.graphics.Texture) ModelTexture(com.badlogic.gdx.graphics.g3d.model.data.ModelTexture) TextureAttribute(com.badlogic.gdx.graphics.g3d.attributes.TextureAttribute)

Example 2 with FloatAttribute

use of com.badlogic.gdx.graphics.g3d.attributes.FloatAttribute 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)

Aggregations

BlendingAttribute (com.badlogic.gdx.graphics.g3d.attributes.BlendingAttribute)2 ColorAttribute (com.badlogic.gdx.graphics.g3d.attributes.ColorAttribute)2 FloatAttribute (com.badlogic.gdx.graphics.g3d.attributes.FloatAttribute)2 TextureAttribute (com.badlogic.gdx.graphics.g3d.attributes.TextureAttribute)2 Texture (com.badlogic.gdx.graphics.Texture)1 VertexAttribute (com.badlogic.gdx.graphics.VertexAttribute)1 Attribute (com.badlogic.gdx.graphics.g3d.Attribute)1 CubemapAttribute (com.badlogic.gdx.graphics.g3d.attributes.CubemapAttribute)1 DepthTestAttribute (com.badlogic.gdx.graphics.g3d.attributes.DepthTestAttribute)1 DirectionalLightsAttribute (com.badlogic.gdx.graphics.g3d.attributes.DirectionalLightsAttribute)1 IntAttribute (com.badlogic.gdx.graphics.g3d.attributes.IntAttribute)1 PointLightsAttribute (com.badlogic.gdx.graphics.g3d.attributes.PointLightsAttribute)1 SpotLightsAttribute (com.badlogic.gdx.graphics.g3d.attributes.SpotLightsAttribute)1 ModelMaterial (com.badlogic.gdx.graphics.g3d.model.data.ModelMaterial)1 ModelTexture (com.badlogic.gdx.graphics.g3d.model.data.ModelTexture)1 TextureDescriptor (com.badlogic.gdx.graphics.g3d.utils.TextureDescriptor)1 GdxRuntimeException (com.badlogic.gdx.utils.GdxRuntimeException)1 ObjectMap (com.badlogic.gdx.utils.ObjectMap)1