The following is a list of 3ds Max supported semantics for DirectX 9 hardware rendered materials through the SAS based parsers. The Microsoft SAS 0.8 specification with and without scene effect source identified by the paramId strings "0x0003" and "0x0001" respectively, and the Cg parser identified by the paramId string "0x0002".
The following are supported render semantics:
The following are supported basic transformations (note that unlike HLSL parser the names are longer and use INVERSE instead of I and TRANSPOSE instead of T).
The following are supported geometry based semantics. Note that unlike HLSL parsers cameras are not supported:
The following lighting based semantics are used to populate the light drop downs with the correct style of light.
3ds Max has its own lighting semantic that differ from the SAS 0.8 specification. You can use the 3ds Max semantics by identifying Max specific sections in the shader file using #ifdef / #else / #endif blocks, as in the following example.
/// Point Lamp 0 float3 Lamp0Pos : POSITION < string Object = "PointLight0"; string UIName = "Light Position"; string Space = "World"; int refID = 0; > = {-0.5f,2.0f,1.25f}; #ifdef _MAX_ float3 Lamp0Color : LIGHTCOLOR < int LightRef = 0; string UIWidget = "None"; > = float3(1.0f, 1.0f, 1.0f); #else float3 Lamp0Color : Specular < string UIName = "Lamp 0"; string Object = "Pointlight0"; string UIWidget = "Color"; > = {1.0f,1.0f,1.0f}; #endif
3ds Max has the concept of mapping channels. The TEXCOORD semantic allows the developer to define which channel is provided on which texture coordinate input for the vertex shader.
The following is an example of its usage
This will provide mapping channel 0 (the vertex color channel) to texcoord0. Currently the actual value of the parameter, in this case texcoord0, is ignored, and the parser only reads the annotation.
The following are non-categorized semantics:
The following semantics defined for SAS 0.8 are not supported by 3ds Max