Supported SAS Shader Semantics

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".

Render Semantics

The following are supported render semantics:

Basic Transformations

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).

Geometry Semantics

The following are supported geometry based semantics. Note that unlike HLSL parsers cameras are not supported:

Lighting Semantics

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

Mapping Channel Semantics

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

int texcoord0 : TEXCOORD
<
  int Texcoord = 0;
  int MapChannel = 0;
> = 0;

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.

Miscellaneous Semantics

The following are non-categorized semantics:

Unsupported Semantics

The following semantics defined for SAS 0.8 are not supported by 3ds Max