This shows you the differences between two versions of the page.
modding:developerinfo:models:materials [2018/07/04 17:07] chregu |
modding:developerinfo:models:materials [2019/03/19 10:18] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ==== Materials ==== | ||
- | Materials are stored in the ''.mtl'' format in the ''res\models\material\'' folder. | ||
- | |||
- | === Overview === | ||
- | |||
- | The format mainly consists of a list of properties. The material type (''type'') specifies the required set of properties (see below for a reference). ''order'' is used for sorting the materials for rendering, if two materials have the same type. | ||
- | |||
- | <code lua> | ||
- | function data() | ||
- | return { | ||
- | order = 0, -- render order (used for same materials only) | ||
- | params = { -- holds list of properties | ||
- | | ||
- | }, | ||
- | type = "PHYSICAL" -- material type | ||
- | } | ||
- | end | ||
- | </code> | ||
- | |||
- | === Reference === | ||
- | |||
- | == Properties == | ||
- | |||
- | <code lua> | ||
- | props = { -- properties for standard-shading (Phong reflection model) | ||
- | coeffs = { 1, 1, 0.25, 20 } -- Ka, Kd, Ks, specular exponent (shininess) | ||
- | } | ||
- | </code> | ||
- | |||
- | <code lua> | ||
- | two_sided = { -- two sided materials | ||
- | twoSided = false, | ||
- | flipNormal = false | ||
- | } | ||
- | </code> | ||
- | |||
- | <code lua> | ||
- | light_scale = { | ||
- | lightScale = 15.0 -- scale RGB-texture-value of emissive materials | ||
- | } | ||
- | </code> | ||
- | |||
- | <code lua> | ||
- | alpha_scale = { | ||
- | alphaScale = 1.0 -- scale alpha value of transparent materials | ||
- | } | ||
- | </code> | ||
- | |||
- | <code lua> | ||
- | normal_scale = { | ||
- | normalScale = 1.0 -- scale normals of materials with normal mapping | ||
- | } | ||
- | </code> | ||
- | |||
- | <code lua> | ||
- | alpha_test = { | ||
- | preferAlphaToCoverage = false, -- enable Alpha to coverage (requires multisampling) | ||
- | alphaThreshold = 0.5, -- discard pixels with lower alpha | ||
- | blend = true -- enable alpha blending | ||
- | } | ||
- | </code> | ||
- | |||
- | <code lua> | ||
- | color_blend = { | ||
- | albedoScale = 0.07, -- scale gray value (which is overlayed with color) | ||
- | color = { 50/255, 85/255, 38/255} -- color used for blending | ||
- | } | ||
- | |||
- | color_blend = { | ||
- | albedoScales = { 1.1, 1.9, 1.8, 0.5 }, | ||
- | colors = { } | ||
- | } | ||
- | </code> | ||
- | |||
- | <code lua> | ||
- | dirt_rust = { | ||
- | dirtColor = { 62/255, 58/255, 51/255 }, | ||
- | dirtOpacity = 5/100, | ||
- | dirtScale = 100/12.5, | ||
- | | ||
- | rustColor = { 89/255, 61/255, 38/255 }, | ||
- | rustOpacity = 50/100, | ||
- | rustScale = 100/34.77 | ||
- | } | ||
- | </code> | ||
- | |||
- | <code lua> | ||
- | fade_out_range = { -- start/end for calculating fade out alpha | ||
- | fadeOutEndDist = 20000, | ||
- | fadeOutStartDist = 10000, | ||
- | } | ||
- | </code> | ||
- | |||
- | <code lua> | ||
- | polygon_offset = { -- parameters for OpenGL function glPolygonOffset() | ||
- | factor = -4.0, | ||
- | units = -4.0 | ||
- | } | ||
- | </code> | ||
- | |||
- | **Maps** | ||
- | |||
- | Maps are used to describe the textures used by a material. There are three types: two dimensional (''TWOD''), cube map (''CUBE_MAP'') and an array of two dimensional textures (''TWOD_ARRAY''). The accepted file formats are ''TGA'' and preferably ''DDS''. | ||
- | |||
- | <code lua> | ||
- | map_albedo_opacity = { | ||
- | type = "TWOD", -- texture type: TWOD, CUBE_MAP, TWOD_ARRAY | ||
- | fileName = "models/vehicle/bus/bus_d40_albedo_opacity.dds", | ||
- | | ||
- | magFilter = "LINEAR", -- maps to GL_TEXTURE_MAG_FILTER: NEAREST, LINEAR | ||
- | minFilter = "LINEAR_MIPMAP_LINEAR", -- maps to GL_TEXTURE_MIN_FILTER: NEAREST, LINEAR, LINEAR_MIPMAP_LINEAR | ||
- | wrapS = "CLAMP_TO_EDGE", -- maps to GL_TEXTURE_WRAP_S: REPEAT, CLAMP_TO_EDGE | ||
- | wrapT = "CLAMP_TO_EDGE", -- maps to GL_TEXTURE_WRAP_T: REPEAT, CLAMP_TO_EDGE | ||
- | | ||
- | mipmapAlphaScale = 0, -- scale alpha channel on mip map generation | ||
- | compressionAllowed = true, -- texture compression | ||
- | redGreen = false, -- two channel format (BC5) | ||
- | scaleDownAllowed = false -- texture can be scaled down, if texture quality is not set to 'Very high' | ||
- | } | ||
- | </code> | ||
- | |||
- | **Operations** | ||
- | |||
- | A material can use multiple overlay operations (currently at most two) with textures. For each operation, a map and a set of parameters have to be specified. Apart from being disabled (''NO_OP''), there are three types of operations. There are three modi of obtaining the texture coordinates for the overlay texture: use the local coordinates (''NORMAL''), the world coordinates (''WORLD_XY'') or the uv-coordinates (''TEXCOORD''). | ||
- | |||
- | <code lua> | ||
- | operation = { | ||
- | op = "OVERLAY", -- NO_OP, MULTIPLICATION, OVERLAY, LINEAR_BURN | ||
- | mode = "NORMAL", -- TEXCOORD, WORLD_XY, NORMAL | ||
- | scale = { 0.05, 0.5 }, -- scale of overlay texture | ||
- | opacity = 0.5 -- opacity of operation | ||
- | }, | ||
- | |||
- | map_op = { | ||
- | | ||
- | } | ||
- | </code> | ||
- | |||
- | == Material Types == | ||
- | |||
- | REFLECTIVE | ||
- | * ''props'' | ||
- | * ''two_sided'' | ||
- | * ''map_color_reflect'' | ||
- | * ''fade_out_range'' | ||
- | * ''map_env'' | ||
- | * ''polygon_offset'' | ||
- | |||
- | REFLECTIVE_NRML_MAP | ||
- | * ''props'' | ||
- | * ''two_sided'' | ||
- | * ''map_color_reflect'' | ||
- | * ''map_normal'' | ||
- | * ''fade_out_range'' | ||
- | * ''map_env'' | ||
- | * ''polygon_offset'' | ||
- | |||
- | REFLECTIVE_OP | ||
- | * ''props'' | ||
- | * ''operation'' | ||
- | * ''two_sided'' | ||
- | * ''map_color_reflect'' | ||
- | * ''fade_out_range'' | ||
- | * ''map_env'' | ||
- | * ''map_op'' | ||
- | * ''polygon_offset'' | ||
- | |||
- | REFLECTIVE_NRML_MAP_OP | ||
- | * ''operation'' | ||
- | * ''props'' | ||
- | * ''map_normal'' | ||
- | * ''map_color_reflect'' | ||
- | * ''two_sided'' | ||
- | * ''fade_out_range'' | ||
- | * ''map_env'' | ||
- | * ''polygon_offset'' | ||
- | * ''map_op'' | ||
- | |||
- | PHYSICAL | ||
- | * ''two_sided'' | ||
- | * ''fade_out_range'' | ||
- | * ''map_metal_gloss_ao'' | ||
- | * ''map_albedo'' | ||
- | * ''polygon_offset'' | ||
- | |||
- | PHYSICAL_OP | ||
- | * ''two_sided'' | ||
- | * ''operation_1'' | ||
- | * ''map_metal_gloss_ao'' | ||
- | * ''fade_out_range'' | ||
- | * ''operation_2'' | ||
- | * ''polygon_offset'' | ||
- | * ''map_albedo'' | ||
- | * ''map_op_1'' | ||
- | * ''map_op_2'' | ||
- | |||
- | PHYSICAL_NRML_MAP | ||
- | * ''two_sided'' | ||
- | * ''map_normal'' | ||
- | * ''fade_out_range'' | ||
- | * ''map_metal_gloss_ao'' | ||
- | * ''map_albedo'' | ||
- | * ''polygon_offset'' | ||
- | * ''normal_scale'' | ||
- | |||
- | PHYSICAL_NRML_MAP_CBLEND | ||
- | * ''map_normal'' | ||
- | * ''two_sided'' | ||
- | * ''map_metal_gloss_ao'' | ||
- | * ''fade_out_range'' | ||
- | * ''polygon_offset'' | ||
- | * ''map_albedo'' | ||
- | * ''map_cblend'' | ||
- | * ''color_blend'' | ||
- | * ''normal_scale'' | ||
- | |||
- | PHYSICAL_NRML_MAP_CBLEND_DIRT | ||
- | * ''map_normal'' | ||
- | * ''two_sided'' | ||
- | * ''map_metal_gloss_ao'' | ||
- | * ''fade_out_range'' | ||
- | * ''map_albedo'' | ||
- | * ''polygon_offset'' | ||
- | * ''map_cblend_dirt_rust'' | ||
- | * ''map_dirt'' | ||
- | * ''map_dirt_normal'' | ||
- | * ''map_rust'' | ||
- | * ''map_rust_normal'' | ||
- | * ''color_blend'' | ||
- | * ''dirt_rust'' | ||
- | * ''normal_scale'' | ||
- | |||
- | PHYSICAL_NRML_MAP_OP | ||
- | * ''map_normal'' | ||
- | * ''two_sided'' | ||
- | * ''operation_1'' | ||
- | * ''map_metal_gloss_ao'' | ||
- | * ''fade_out_range'' | ||
- | * ''polygon_offset'' | ||
- | * ''map_albedo'' | ||
- | * ''map_op_1'' | ||
- | * ''map_op_2'' | ||
- | * ''operation_2'' | ||
- | * ''normal_scale'' | ||
- | |||
- | PHYSICAL_NRML_MAP_CBLEND_OP | ||
- | * ''map_normal'' | ||
- | * ''two_sided'' | ||
- | * ''map_metal_gloss_ao'' | ||
- | * ''fade_out_range'' | ||
- | * ''polygon_offset'' | ||
- | * ''map_albedo'' | ||
- | * ''map_cblend'' | ||
- | * ''map_op_1'' | ||
- | * ''map_op_2'' | ||
- | * ''color_blend'' | ||
- | * ''operation_1'' | ||
- | * ''operation_2'' | ||
- | * ''normal_scale'' | ||
- | |||
- | PHYSICAL_NRML_MAP_OP_UV1_AO | ||
- | * ''map_normal'' | ||
- | * ''two_sided'' | ||
- | * ''map_metal_gloss_ao'' | ||
- | * ''fade_out_range'' | ||
- | * ''polygon_offset'' | ||
- | * ''map_albedo'' | ||
- | * ''map_op_1'' | ||
- | * ''map_ao'' | ||
- | * ''map_op_2'' | ||
- | * ''operation_1'' | ||
- | * ''operation_2'' | ||
- | * ''normal_scale'' | ||
- | |||
- | PHYSICAL_NRML_MAP_OP_UV1_AO | ||
- | * ''map_normal'' | ||
- | * ''two_sided'' | ||
- | * ''map_metal_gloss_ao'' | ||
- | * ''fade_out_range'' | ||
- | * ''polygon_offset'' | ||
- | * ''map_albedo'' | ||
- | * ''map_op_1'' | ||
- | * ''map_ao'' | ||
- | * ''map_op_2'' | ||
- | * ''operation_1'' | ||
- | * ''operation_2'' | ||
- | * ''normal_scale'' | ||
- | |||
- | PHYSICAL_OP_GLOSS_ONLY | ||
- | * ''two_sided'' | ||
- | * ''fade_out_range'' | ||
- | * ''operation_1'' | ||
- | * ''map_albedo_gloss'' | ||
- | * ''map_op_2'' | ||
- | * ''map_op_1'' | ||
- | * ''polygon_offset'' | ||
- | * ''operation_2'' | ||
- | |||
- | PHYSICAL_OP_GLOSS_ONLY | ||
- | * ''two_sided'' | ||
- | * ''fade_out_range'' | ||
- | * ''operation_1'' | ||
- | * ''map_albedo_gloss'' | ||
- | * ''map_op_2'' | ||
- | * ''map_op_1'' | ||
- | * ''polygon_offset'' | ||
- | * ''operation_2'' | ||
- | |||
- | SKINNING_TEXTURED | ||
- | * ''props'' | ||
- | * ''two_sided'' | ||
- | * ''map_color'' | ||
- | |||
- | SKINNING_PHYS_CBLEND4 | ||
- | * ''two_sided'' | ||
- | * ''map_albedo'' | ||
- | * ''map_cblend'' | ||
- | * ''map_metal_gloss_ao'' | ||
- | * ''color_blend'' | ||
- | |||
- | SKINNING_PHYS_NRML_MAP_CBLEND4 | ||
- | * ''two_sided'' | ||
- | * ''map_normal'' | ||
- | * ''map_albedo'' | ||
- | * ''map_cblend'' | ||
- | * ''map_metal_gloss_ao'' | ||
- | * ''color_blend'' | ||
- | * ''normal_scale'' | ||
- | |||
- | PHYSICAL_ALPHA_NRML_MAP | ||
- | * ''map_normal'' | ||
- | * ''two_sided'' | ||
- | * ''normal_scale'' | ||
- | * ''alpha_scale'' | ||
- | * ''map_albedo_alpha'' | ||
- | * ''alpha_test'' | ||
- | * ''map_metal_gloss_ao'' | ||
- | * ''fade_out_range'' | ||
- | * ''polygon_offset'' | ||
- | |||
- | PHYSICAL_ALPHA_NRML_MAP_OP | ||
- | * ''map_normal'' | ||
- | * ''two_sided'' | ||
- | * ''map_albedo_alpha'' | ||
- | * ''alpha_test'' | ||
- | * ''alpha_scale'' | ||
- | * ''normal_scale'' | ||
- | * ''map_metal_gloss_ao'' | ||
- | * ''fade_out_range'' | ||
- | * ''map_op_1'' | ||
- | * ''map_op_2'' | ||
- | * ''polygon_offset'' | ||
- | * ''operation_1'' | ||
- | * ''operation_2'' | ||
- | |||
- | PHYS_TRANSPARENT | ||
- | * ''two_sided'' | ||
- | * ''map_albedo_opacity'' | ||
- | * ''alpha_scale'' | ||
- | * ''alpha_test'' | ||
- | * ''fade_out_range'' | ||
- | * ''map_metal_gloss_ao'' | ||
- | * ''polygon_offset'' | ||
- | |||
- | PHYS_TRANSPARENT_NRML_MAP | ||
- | * ''map_normal'' | ||
- | * ''map_albedo_opacity'' | ||
- | * ''two_sided'' | ||
- | * ''normal_scale'' | ||
- | * ''alpha_scale'' | ||
- | * ''alpha_test'' | ||
- | * ''map_metal_gloss_ao'' | ||
- | * ''fade_out_range'' | ||
- | * ''polygon_offset'' | ||
- | |||
- | PHYS_TRANSPARENT_NRML_MAP_CBLEND_DIRT | ||
- | * ''map_normal'' | ||
- | * ''map_albedo_opacity'' | ||
- | * ''two_sided'' | ||
- | * ''alpha_test'' | ||
- | * ''alpha_scale'' | ||
- | * ''dirt_rust'' | ||
- | * ''normal_scale'' | ||
- | * ''map_metal_gloss_ao'' | ||
- | * ''fade_out_range'' | ||
- | * ''map_cblend_dirt_rust'' | ||
- | * ''map_dirt'' | ||
- | * ''map_dirt_normal'' | ||
- | * ''map_rust'' | ||
- | * ''map_rust_normal'' | ||
- | * ''polygon_offset'' | ||
- | * ''color_blend'' | ||
- | |||
- | PHYSICAL_NRML_MAP_CBLEND_DIRT_LOGO | ||
- | * ''map_normal'' | ||
- | * ''two_sided'' | ||
- | * ''map_metal_gloss_ao'' | ||
- | * ''fade_out_range'' | ||
- | * ''map_albedo'' | ||
- | * ''polygon_offset'' | ||
- | * ''map_cblend_dirt_rust'' | ||
- | * ''map_dirt'' | ||
- | * ''map_dirt_normal'' | ||
- | * ''map_rust'' | ||
- | * ''map_rust_normal'' | ||
- | * ''map_logo'' | ||
- | * ''color_blend'' | ||
- | * ''dirt_rust'' | ||
- | * ''normal_scale'' | ||
- | |||
- | TRANSPARENT | ||
- | * ''props'' | ||
- | * ''two_sided'' | ||
- | * ''alpha_scale'' | ||
- | * ''alpha_test'' | ||
- | * ''fade_out_range'' | ||
- | * ''map_color_alpha'' | ||
- | * ''polygon_offset'' | ||
- | |||
- | TRANSPARENT_DETAIL | ||
- | * ''props'' | ||
- | * ''two_sided'' | ||
- | * ''map_detail'' | ||
- | * ''alpha_scale'' | ||
- | * ''alpha_test'' | ||
- | * ''fade_out_range'' | ||
- | * ''map_color_alpha'' | ||
- | * ''polygon_offset'' | ||
- | |||
- | TRANSPARENT_NRML_MAP | ||
- | * ''props'' | ||
- | * ''two_sided'' | ||
- | * ''map_normal'' | ||
- | * ''alpha_scale'' | ||
- | * ''alpha_test'' | ||
- | * ''fade_out_range'' | ||
- | * ''map_color_alpha'' | ||
- | * ''polygon_offset'' | ||
- | |||
- | TRANSPARENT_OP | ||
- | * ''operation'' | ||
- | * ''props'' | ||
- | * ''two_sided'' | ||
- | * ''alpha_test'' | ||
- | * ''alpha_scale'' | ||
- | * ''fade_out_range'' | ||
- | * ''polygon_offset'' | ||
- | * ''map_op'' | ||
- | * ''map_color_alpha'' | ||
- | |||
- | TRANSPARENT_NRML_MAP_OP | ||
- | * ''operation'' | ||
- | * ''props'' | ||
- | * ''map_normal'' | ||
- | * ''two_sided'' | ||
- | * ''alpha_test'' | ||
- | * ''alpha_scale'' | ||
- | * ''fade_out_range'' | ||
- | * ''map_op'' | ||
- | * ''map_color_alpha'' | ||
- | * ''polygon_offset'' | ||
- | |||
- | EMISSIVE | ||
- | * ''two_sided'' | ||
- | * ''light_scale'' | ||
- | * ''fade_out_range'' | ||
- | * ''map_emissive'' | ||
- | * ''polygon_offset'' | ||
- | |||
- | LEAF_CARD | ||
- | * ''props'' | ||
- | * ''alpha_scale'' | ||
- | * ''alpha_test'' | ||
- | * ''fade_out_range'' | ||
- | * ''map_color_alpha'' | ||
- | * ''map_normal'' | ||
- | |||
- | BILLBOARD | ||
- | * ''props'' | ||
- | * ''alpha_scale'' | ||
- | * ''alpha_test'' | ||
- | * ''fade_out_range'' | ||
- | * ''map_color_alpha'' | ||
- | * ''billboard'' | ||
- | * ''map_normal'' | ||
- | |||
- | BILLBOARD_MULTI | ||
- | * ''props'' | ||
- | * ''fade_out_ranges'' | ||
- | * ''alpha_scales'' | ||
- | * ''alpha_test'' | ||
- | * ''map_color_alpha'' | ||
- | * ''map_normal'' | ||
- | * ''billboards'' |