{
    "definitions": {
        "bitmap": {
            "properties": {
                "id": {
                    "type": "string"
                },
                "resource_type": {
                    "enum": [
                        "asset",
                        "file",
                        "resource",
                        "user"
                    ],
                    "type": "string"
                },
                "type": {
                    "enum": [
                        "compressed",
                        "compressed_cubemap",
                        "cubemap",
                        "uncompressed"
                    ],
                    "type": "string"
                }
            },
            "required": [
                "resource_type",
                "type",
                "id"
            ],
            "type": "object"
        },
        "bitmap_texture_properties": {
            "properties": {
                "bitmap": {
                    "$ref": "#/definitions/bitmap"
                },
                "texture_parameters": {
                    "$ref": "#/definitions/texture_parameters"
                },
                "type": {
                    "pattern": "bitmap",
                    "type": "string"
                }
            },
            "required": [
                "bitmap",
                "type"
            ],
            "type": "object"
        },
        "texture": {},
        "texture_filter_type": {
            "enum": [
                "GL_LINEAR",
                "GL_NEAREST",
                "GL_NEAREST_MIPMAP_NEAREST",
                "GL_NEAREST_MIPMAP_LINEAR",
                "GL_LINEAR_MIPMAP_NEAREST",
                "GL_LINEAR_MIPMAP_LINEAR"
            ],
            "type": "string"
        },
        "texture_parameters": {
            "properties": {
                "anisotropic_value": {
                    "enum": [
                        1,
                        2,
                        4,
                        8,
                        16
                    ],
                    "type": "integer"
                },
                "mag_filter_type": {
                    "$ref": "#/definitions/texture_filter_type"
                },
                "min_filter_type": {
                    "$ref": "#/definitions/texture_filter_type"
                },
                "wrap_s_type": {
                    "$ref": "#/definitions/texture_wrap_type"
                },
                "wrap_t_type": {
                    "$ref": "#/definitions/texture_wrap_type"
                }
            },
            "type": "object"
        },
        "texture_wrap_type": {
            "enum": [
                "GL_CLAMP_TO_EDGE",
                "GL_MIRRORED_REPEAT",
                "GL_REPEAT"
            ],
            "type": "string"
        }
    },
    "oneOf": [
        {
            "$ref": "#/definitions/bitmap_texture_properties"
        }
    ],
    "type": "object"
}