November 16, 2009

lcNextGenShader.fx and lcHLSLTools.mel

Real-time HLSL Shader for Maya’s Viewport and HLSL helper Mel script.


Download: lcNextGenShader_1.1.fx

Sample Cube Map:




NextGen_SM3 – full shading (requires shader model 3 capable graphics card)

Diffuse_Texture_Only – only the diffuse texture or color, without any other effects

Normal_Map_As_Color – only the normal map color values (helps to find seams)

Specular_Only_SM3 – only the specular effects, light and specular map contributions (requires shader model 3 capable graphics)


backFaceLighting – for single sided polygon objects, the back sides will be lit correctly

ambientColor – a color ‘added’ on top of the final effect

diffuseColor – the Lambert diffuse shading color

specularColor – the Phong specular shading color

glossiness – controls the size of the Phong specular highlight

useDiffuseTexture – use the diffuse texture from ‘diffuseMap’ instead of diffuseColor

transparencyInDiffuse – use the diffuseMap’s alpha channel for transparency

specularInDiffuse – use the diffuseMap’s alpha channel for specular masking

diffuseMap – a diffuse texture

useNormalTexture – use a tangent space normal map texture

specularInNormal – use the normalMap’s alpha channel for specular masking

normalPower – intensity of the normal map effect, 0=no effect

flipGreen – invert the green channel of the normal map (default = true)

normalMap – a tangent space normal map texture

useSpecularMap – use a specularMap for specular coloring and masking

specularMap – a specular texture for highlight coloring and masking

useAmbEnv – use cubeEnvMap for ambient environment lighting – cube map is forced down in mip levels – make sure to use a cube map processed by ATI CubeMapGen for proper filtering

ambPower – intensity of the ambient environment lighting – also multiplied with the ambientColor

useReflEnv - use cubeEnvMap for environment reflections

reflPower – intensity of the environment reflections (has a slight hardcoded Fresnel effect)

cubeEnvMap – a cube map – preferably one processed by ATI CubeMapGen for proper filtering

useGlowTexture – use glowMap for self illumination effects

glowPower – the intensity of the self illumination effect

glowMap – a texture that is ‘added’ on top of the final shader result – self illumination/incandescence

useLightFalloff – use falloff on the point lights

decayScale – scale of the light falloff for the point lights

Note: There are some issues with overlapping transparency planes in Maya’s viewport when using realtime shaders – unfortunately this seems to be a problem with Maya and not the HLSL code itself – so there is no fix available.

Textures in TGA or DDS formats provide the best compatibly with the DirectX environment.


Download: lcHLSLTools.mel

Run with command – lcHLSLTools;

This makes it easier to work with my HLSL shaders – lets you name, create, and assign them – then make the lights and link them to the shader – you can adjust light color across all HLSL shaders – lastly you can reload all the HLSL shaders and File Texture Nodes

Any objects you have selected will be assigned the new shader when you press ‘Make New HLSL Shader’


Note: This tool was designed to work specifically with my own HLSL shaders, and wont work with other .fx shaders because the light names and attributes have been hard coded.


  1. Hey I just used it and its AMAZING!!
    Thank you so much for putting effort in this! Great time saver indeed!
    Just asking, is there a way you can add things like reflection map(like the reflectivity channel in Blinn shaders, not the reflected color channel) and specular power(eccentricity) map channels in future updates? Because I was doing cars and these controls are more important to them than to say character models. Anyways, really appreciate your work, keep it up

  2. maybe the latest version lcNextGenShader_1.3 has what you are looking for, or my new cgfx shader lcUberShader_1.2, which is slightly more advanced

  3. It's amazing Shader, and it's give me a good option for real time screenshot from Maya's view port.