Recommended Parameter Values#
How to use these tables#
Each section names the shader and the values to enter. The neutral ksAmbient / ksDiffuse is 0.225.
Sections with a clear layer on top (clear coat, varnish, tyre shine) list a lower ksAmbient / ksDiffuse, for a
texture holding the bare colour; a texture taken from the finished, coated object takes 0.225.
- Using another neutral: multiply
ksSpecular, sunSpecular and the clear-layer sections’ ksAmbient /
ksDiffuse by your neutral ÷ 0.225.
Using a different shader#
ksPerPixelReflection values on ksPerPixelNM or ksTyres: use them as they are.
ksPerPixelMultiMap_NMDetail values on plain ksPerPixelMultiMap: use them as they are and set sunSpecular 0.
ksPerPixelMultiMap_NMDetail values on ksPerPixelReflection, ksPerPixelNM or ksTyres: add 1 to
ksSpecularEXP and divide fresnelEXP by (0.8 + 0.2 × fresnelMaxLevel). The other way round, subtract 1 and
multiply.
1a. Coated Textured Surface (vinyl, leather, faux leather)#
| Parameter |
Value |
| Shader |
ksPerPixelMultiMap_NMDetail |
ksAmbient |
0.225 |
ksDiffuse |
0.225 |
ksSpecular |
0.056 |
ksSpecularEXP |
13 |
fresnelC |
0.041 |
fresnelEXP |
6.3 |
fresnelMaxLevel |
0.31 |
Ungrained gloss vinyl: use Glossy Plastic (2). Varnished or lacquered wood: use Varnished Wood (1c).
1b. Matte Leather#
| Parameter |
Value |
| Shader |
ksPerPixelMultiMap_NMDetail |
ksAmbient |
0.225 |
ksDiffuse |
0.225 |
ksSpecular |
0.038 |
ksSpecularEXP |
9.4 |
fresnelC |
0.037 |
fresnelEXP |
6.2 |
fresnelMaxLevel |
0.18 |
Unfinished nubuck: use Synthetic Fabric (15).
1c. Varnished Wood (gloss-lacquered wood trim)#
| Parameter |
Value |
| Shader |
ksPerPixelMultiMap |
ksAmbient |
0.16 |
ksDiffuse |
0.16 |
ksSpecular |
0 |
ksSpecularEXP |
30 |
fresnelC |
0.095 |
fresnelEXP |
4.5 |
fresnelMaxLevel |
0.82 |
sunSpecular |
0.46 |
sunSpecularEXP |
1800 |
Texture: the bare wood’s colour. Painted wood: use the painted surfaces (3c, 17a, 17b).
2. Glossy Plastic#
| Parameter |
Value |
| Shader |
ksPerPixelMultiMap |
ksAmbient |
0.225 |
ksDiffuse |
0.225 |
ksSpecular |
0.0059 |
ksSpecularEXP |
17 |
fresnelC |
0.045 |
fresnelEXP |
6.2 |
fresnelMaxLevel |
0.46 |
sunSpecular |
0.39 |
sunSpecularEXP |
260 |
2b. Satin Plastic#
| Parameter |
Value |
| Shader |
ksPerPixelMultiMap |
ksAmbient |
0.225 |
ksDiffuse |
0.225 |
ksSpecular |
0.016 |
ksSpecularEXP |
10 |
fresnelC |
0.038 |
fresnelEXP |
6.2 |
fresnelMaxLevel |
0.20 |
sunSpecular |
0.084 |
sunSpecularEXP |
74 |
3. Rough Plastic#
| Parameter |
Value |
| Shader |
ksPerPixelMultiMap_NMDetail |
ksAmbient |
0.225 |
ksDiffuse |
0.225 |
ksSpecular |
0.027 |
ksSpecularEXP |
7.2 |
fresnelC |
0.034 |
fresnelEXP |
6.1 |
fresnelMaxLevel |
0.11 |
3c. Smooth Painted Surface (bumpers, signs, body panels, smooth painted metal/plastic)#
| Parameter |
Value |
| Shader |
ksPerPixelMultiMap |
ksAmbient |
0.15 |
ksDiffuse |
0.15 |
ksSpecular |
0 |
ksSpecularEXP |
30 |
fresnelC |
0.11 |
fresnelEXP |
4.4 |
fresnelMaxLevel |
0.81 |
sunSpecular |
0.47 |
sunSpecularEXP |
1800 |
Paint over a rough substrate: use Rough Painted Surface with Clear Coat (17a).
Set ksSpecular to 1.0 and keep the rest.
| Parameter |
Value |
| Shader |
ksPerPixelReflection |
ksAmbient |
0.225 |
ksDiffuse |
0.225 |
ksSpecular |
0.42 |
ksSpecularEXP |
19 |
fresnelC |
0.63 |
fresnelEXP |
9.4 |
fresnelMaxLevel |
0.73 |
- Texture: near-black, sRGB ≈ 0.17 (linear 0.02), with dirt and oxide on top.
- Recessed chrome (grilles, wheel spokes, trim set into the body): MultiMap with AO in
txMaps.b.
| Parameter |
Value |
| Shader |
ksPerPixelMultiMap |
ksAmbient |
0.225 |
ksDiffuse |
0.225 |
ksSpecular |
0.13 |
ksSpecularEXP |
8.7 |
fresnelC |
0.59 |
fresnelEXP |
5.5 |
fresnelMaxLevel |
0.49 |
sunSpecular |
0.70 |
sunSpecularEXP |
20 |
- Texture: near-black, sRGB ≈ 0.17 (linear 0.02), with dirt and oxide on top.
- Powder coat: use Powder Coat (17b).
6a. Grass#
| Parameter |
Value |
| Shader |
ksPerPixelReflection |
ksAmbient |
0.225 |
ksDiffuse |
0.225 |
ksSpecular |
0.0088 |
ksSpecularEXP |
3.6 |
fresnelC |
0.024 |
fresnelEXP |
7.0 |
fresnelMaxLevel |
0.033 |
6b. Grass Multilayer#
| Parameter |
Value |
| Shader |
ksMultilayer_fresnel_nm |
ksAmbient |
0.225 |
ksDiffuse |
0.225 |
ksSpecular |
0 (unused) |
ksSpecularEXP |
46 |
fresnelC |
0.039 |
fresnelEXP |
7.5 |
fresnelMaxLevel |
1.0 |
tarmacSpecularMultiplier |
1.5 |
These rules apply to every multilayer section:
magicMult other than 1: divide fresnelC, tarmacSpecularMultiplier and fresnelMaxLevel by it.
The peak cannot rise above magicMult.
- Glare streak sparkling on the detail normal map: lower
ksSpecularEXP.
7a. Gravel and Sand#
| Parameter |
Value |
| Shader |
ksPerPixelReflection |
ksAmbient |
0.225 |
ksDiffuse |
0.225 |
ksSpecular |
0.0091 |
ksSpecularEXP |
2.8 |
fresnelC |
0.033 |
fresnelEXP |
6.7 |
fresnelMaxLevel |
0.029 |
7b. Gravel and Sand Multilayer#
| Parameter |
Value |
| Shader |
ksMultilayer_fresnel_nm |
ksAmbient |
0.225 |
ksDiffuse |
0.225 |
ksSpecular |
0 (unused) |
ksSpecularEXP |
46 |
fresnelC |
0.040 |
fresnelEXP |
8.0 |
fresnelMaxLevel |
1.0 |
tarmacSpecularMultiplier |
1.2 |
9a. Raw Wood#
| Parameter |
Value |
| Shader |
ksPerPixelReflection |
ksAmbient |
0.225 |
ksDiffuse |
0.225 |
ksSpecular |
0.013 |
ksSpecularEXP |
4.2 |
fresnelC |
0.033 |
fresnelEXP |
7.0 |
fresnelMaxLevel |
0.045 |
Varnished wood: use Varnished Wood (1c). Painted wood: use the painted surfaces (3c, 17a, 17b).
10a. Rough Concrete#
| Parameter |
Value |
| Shader |
ksPerPixelReflection |
ksAmbient |
0.225 |
ksDiffuse |
0.225 |
ksSpecular |
0.0073 |
ksSpecularEXP |
2.1 |
fresnelC |
0.033 |
fresnelEXP |
7.0 |
fresnelMaxLevel |
0.023 |
10a-iv. Painted Concrete (kerbs, painted floors, painted walls)#
| Parameter |
Value |
| Shader |
ksPerPixelReflection |
ksAmbient |
0.225 |
ksDiffuse |
0.225 |
ksSpecular |
0.032 |
ksSpecularEXP |
8.7 |
fresnelC |
0.036 |
fresnelEXP |
7.5 |
fresnelMaxLevel |
0.15 |
Heavily scuffed kerbs: use Smooth New Tarmac, Painted Rough Concrete (11a).
10b. Concrete Multilayer#
| Parameter |
Value |
| Shader |
ksMultilayer_fresnel_nm |
ksAmbient |
0.225 |
ksDiffuse |
0.225 |
ksSpecular |
0 (unused) |
ksSpecularEXP |
46 |
fresnelC |
0.033 |
fresnelEXP |
8.5 |
fresnelMaxLevel |
1.0 |
tarmacSpecularMultiplier |
0.88 |
11a. Smooth New Tarmac, Painted Rough Concrete#
| Parameter |
Value |
| Shader |
ksPerPixelReflection |
ksAmbient |
0.225 |
ksDiffuse |
0.225 |
ksSpecular |
0.020 |
ksSpecularEXP |
6.0 |
fresnelC |
0.033 |
fresnelEXP |
7.3 |
fresnelMaxLevel |
0.081 |
11b. Asphalt — Smooth New Tarmac Multilayer#
| Parameter |
Value |
| Shader |
ksMultilayer_fresnel_nm |
ksAmbient |
0.225 |
ksDiffuse |
0.225 |
ksSpecular |
0 (unused) |
ksSpecularEXP |
46 |
fresnelC |
0 |
fresnelEXP |
4.4 |
fresnelMaxLevel |
1.0 |
tarmacSpecularMultiplier |
2.0 |
12a. Asphalt — Grainy Old Tarmac#
| Parameter |
Value |
| Shader |
ksPerPixelReflection |
ksAmbient |
0.225 |
ksDiffuse |
0.225 |
ksSpecular |
0.0099 |
ksSpecularEXP |
3.1 |
fresnelC |
0.034 |
fresnelEXP |
6.9 |
fresnelMaxLevel |
0.032 |
12b. Asphalt — Grainy Old Tarmac Multilayer#
| Parameter |
Value |
| Shader |
ksMultilayer_fresnel_nm |
ksAmbient |
0.225 |
ksDiffuse |
0.225 |
ksSpecular |
0 (unused) |
ksSpecularEXP |
46 |
fresnelC |
0.042 |
fresnelEXP |
7.8 |
fresnelMaxLevel |
1.0 |
tarmacSpecularMultiplier |
1.3 |
13. Billboard Trees (Leaves) — ksTree shader#
| Parameter |
Value |
ksAmbient |
0.225 |
ksDiffuse |
0.225 |
ksSpecular |
0 |
ksSpecularEXP |
1 |
14. Natural Fabric — cotton, wool, felt (headliner, pillars, cloth seats)#
| Parameter |
Value |
| Shader |
ksPerPixelMultiMap_NMDetail |
ksAmbient |
0.225 |
ksDiffuse |
0.225 |
ksSpecular |
0.0064 |
ksSpecularEXP |
1.3 |
fresnelC |
0.032 |
fresnelEXP |
4.0 |
fresnelMaxLevel |
0.020 |
15. Synthetic Fabric — polyester, nylon, Alcantara (seats, door cards, sport trim)#
| Parameter |
Value |
| Shader |
ksPerPixelMultiMap_NMDetail |
ksAmbient |
0.225 |
ksDiffuse |
0.225 |
ksSpecular |
0.018 |
ksSpecularEXP |
5.3 |
fresnelC |
0.033 |
fresnelEXP |
5.9 |
fresnelMaxLevel |
0.066 |
Coarse synthetic cloth: use Natural Fabric (14).
16. Painted White Lines on Road, Smooth Concrete#
| Parameter |
Value |
| Shader |
ksPerPixelReflection |
ksAmbient |
0.225 |
ksDiffuse |
0.225 |
ksSpecular |
0.027 |
ksSpecularEXP |
7.5 |
fresnelC |
0.035 |
fresnelEXP |
7.4 |
fresnelMaxLevel |
0.12 |
Tyre lettering#
- Separate
ksTyres lettering material: these values.
- Lettering in the tyre texture: the higher
ksSpecular goes on the material, the diffuse alpha masks the other part.
- Tyre shine: lettering alpha ≈0.65. Worn tyre:
ksSpecular 0.015 on the material, rubber alpha ≈0.56.
17a. Rough Painted Surface with Clear Coat (textured body paint, rough painted trim)#
| Parameter |
Value |
| Shader |
ksPerPixelMultiMap_NMDetail |
ksAmbient |
0.15 |
ksDiffuse |
0.15 |
ksSpecular |
0.016 |
ksSpecularEXP |
30 |
fresnelC |
0.11 |
fresnelEXP |
4.4 |
fresnelMaxLevel |
0.81 |
Smooth substrate: use Smooth Painted Surface (3c). No clear coat: use Powder Coat (17b).
Set ksSpecular to 1.0 and keep the rest.
17b. Powder Coat and Matte Finishes (powder coat, textured plastic, weathered paint)#
| Parameter |
Value |
| Shader |
ksPerPixelMultiMap_NMDetail |
ksAmbient |
0.225 |
ksDiffuse |
0.225 |
ksSpecular |
0.040 |
ksSpecularEXP |
9.8 |
fresnelC |
0.038 |
fresnelEXP |
6.2 |
fresnelMaxLevel |
0.19 |
Clear-coated: use Rough Painted Surface with Clear Coat (17a).
18a. Window Glass (windscreen, side windows, rear glass)#
| Parameter |
Value |
| Shader |
ksPerPixelReflection |
ksAmbient |
0.225 |
ksDiffuse |
0.225 |
ksSpecular |
1.4 |
ksSpecularEXP |
20000 |
fresnelC |
0.50 |
fresnelEXP |
3.9 |
fresnelMaxLevel |
0.88 |
isAdditive |
0 |
These values are for the outer mesh: normals facing out, seen only from outside the car.
| Texture |
Alpha |
RGB (0–255) |
| Old car, untinted |
0 |
40, 40, 40 |
| New car, blue-green tint |
0 |
15, 29, 33 |
Dust: white at alpha ≈0.01, about 1% coverage.
Inner mesh#
- Shader
ksWindscreen, normals facing into the cabin: seen only from inside the car.
- It has no
ksSpecular, ksSpecularEXP or fresnel settings, so nothing in the tables above applies to it.
- Texture alpha below 0.5: invisible, except toward the sun, where it shows as glare on dust and dirt.
- Texture alpha 0.5 or above: visible at all times as an opaque layer. Don’t use it on a window.
- Clean glass: RGB black, alpha 0. Dust: RGB white, alpha below 0.5.
Outer mesh with Material_Glass#
ksAmbient / ksDiffuse 0.56, fresnelC 0.24. It ignores ksSpecular, ksSpecularEXP, fresnelEXP,
fresnelMaxLevel and isAdditive.
| Texture |
Alpha at extThicknessMult 1 |
RGB (0–255) |
| Old car, untinted |
0.11 |
13, 13, 13 |
| New car, blue-green tint |
0.18 |
0, 12, 15 |
18b. Lamp Outer Glass (headlights, stop, tail, turn and fog lights)#
| Parameter |
Clear |
Coloured |
| Shader |
ksPerPixelReflection |
ksPerPixelReflection |
ksAmbient |
0.225 |
0.225 |
ksDiffuse |
0.225 |
0.225 |
ksSpecular |
0.88 |
0.82 |
ksSpecularEXP |
20000 |
20000 |
fresnelC |
0.67 |
0.23 |
fresnelEXP |
3.3 |
3.2 |
fresnelMaxLevel |
1.0 |
0.85 |
isAdditive |
1 |
0 |
Every colour uses the Coloured values; only the texture changes.
| Texture |
Values |
Alpha |
RGB (0–255) |
| Clear |
Clear |
0.38 |
12, 12, 12 |
| Worn, at the scratches |
Clear |
0.47 |
77, 77, 77 |
| Red (stop, tail, rear turn) |
Coloured |
0.76 |
58, 0, 0 |
| Amber (turn) |
Coloured |
0.61 |
66, 9, 0 |
| Selective yellow (fog) |
Coloured |
0.40 |
85, 77, 0 |
Worn glass between the scratches: the clear texture, with as much haze as the wear calls for.
With Material_Glass#
ksAmbient / ksDiffuse 0.56, fresnelC 0.28 for clear and 0.20 for coloured glass. It reads only ksDiffuse,
fresnelC and, for dynamic lights, ksAmbient.
| Texture |
Alpha at extThicknessMult 1 |
RGB (0–255) |
| Clear |
0.082 |
0, 0, 0 |
| Worn, at the scratches |
0.18 |
123, 123, 123 |
| Red (stop, tail, rear turn) |
0.76 |
56, 0, 0 |
| Amber (turn) |
0.66 |
58, 8, 0 |
| Selective yellow (fog) |
0.51 |
62, 55, 0 |
18c. Projector Lens (round low-beam and fog lens that blurs the bowl behind it)#
| Parameter |
Low beam (dark bowl) |
Fog (bright bowl) |
| Shader |
ksPerPixelReflection |
ksPerPixelReflection |
ksAmbient |
0.225 |
0.225 |
ksDiffuse |
0.225 |
0.225 |
ksSpecular |
0.45 |
0.68 |
ksSpecularEXP |
20000 |
20000 |
fresnelC |
0.24 |
0.51 |
fresnelEXP |
3.4 |
4.5 |
fresnelMaxLevel |
0.88 |
0.91 |
isAdditive |
1 |
1 |
| Texture |
Alpha |
RGB (0–255) |
| Low beam (dark bowl) |
0.75 |
50, 50, 50 |
| Fog (bright bowl) |
0.50 |
50, 50, 50 |
Alpha: 0.75 where the bowl and bulb are only just made out through the lens, 0.50 where they show fairly clearly.
18d. Gauge / Instrument Glass (glass or plexiglass)#
| Parameter |
Value |
| Shader |
ksPerPixelReflection |
ksAmbient |
0.225 |
ksDiffuse |
0.225 |
ksSpecular |
1.4 |
ksSpecularEXP |
20000 |
fresnelC |
0.55 |
fresnelEXP |
4.2 |
fresnelMaxLevel |
0.90 |
isAdditive |
0 |
| Texture |
Alpha |
RGB (0–255) |
| Clear |
0 |
17, 17, 17 |
| Worn, at the scratches |
0.036 |
173, 173, 173 |
With Material_Glass#
ksAmbient / ksDiffuse 0.56, fresnelC 0.31. It reads only ksDiffuse, fresnelC and, for dynamic lights,
ksAmbient.
| Texture |
Alpha at extThicknessMult 1 |
RGB (0–255) |
| Clear |
0.23 |
2, 2, 2 |
| Worn, at the scratches |
0.31 |
113, 113, 113 |
19. Refracted Glass (Tail Light Inner Patterned Glass)#
| Parameter |
Clear |
Coloured |
| Shader |
ksPerPixelNM |
ksPerPixelNM |
ksAmbient |
0.225 |
0.225 |
ksDiffuse |
0.225 |
0.225 |
ksSpecular |
0.89 |
0.82 |
ksSpecularEXP |
20000 |
20000 |
fresnelC |
0.64 |
0.23 |
fresnelEXP |
2.7 |
3.2 |
fresnelMaxLevel |
1.0 |
0.85 |
isAdditive |
1 |
0 |
Alpha goes in the normal map’s alpha channel, RGB in the diffuse texture. Every colour uses the Coloured values,
the same as 18b’s.
| Texture |
Values |
Alpha |
RGB (0–255) |
| Clear |
Clear |
0.38 |
13, 13, 13 |
| Red |
Coloured |
0.76 |
58, 0, 0 |
| Amber |
Coloured |
0.61 |
66, 9, 0 |
| Selective yellow |
Coloured |
0.40 |
85, 77, 0 |
20. Frosted Glass (Modern Car Tail Lights)#
| Parameter |
Clear |
Smoked |
| Shader |
ksPerPixelReflection + Material_Glass |
ksPerPixelReflection + Material_Glass |
ksAmbient |
0.56 |
0.56 |
ksDiffuse |
0.56 |
0.56 |
fresnelC |
0.32 |
0.26 |
Frosting blur on what is seen through it: extRefractionBias.
| Texture |
Alpha at extThicknessMult 1 |
RGB (0–255) |
| Clear |
0.17 |
111, 111, 111 |
| Smoked |
0.83 |
16, 16, 16 |
21. Headlight / Tail Light / Indicator Reflector#
| Parameter |
Value |
| Shader |
ksPerPixelMultiMap |
ksAmbient |
0.225 |
ksDiffuse |
0.225 |
ksSpecular |
0 |
ksSpecularEXP |
26 |
fresnelC |
0.87 |
fresnelEXP |
12 |
fresnelMaxLevel |
0.90 |
sunSpecular |
2.7 |
sunSpecularEXP |
170 |
Texture: near-black, sRGB ≈ 0.17 (linear 0.02).
22. Blacked-Out Headlight Reflector (Glossy Black Painted)#
| Parameter |
Value |
| Shader |
ksPerPixelMultiMap |
ksAmbient |
0.225 |
ksDiffuse |
0.225 |
ksSpecular |
0.0019 |
ksSpecularEXP |
20 |
fresnelC |
0.047 |
fresnelEXP |
6.2 |
fresnelMaxLevel |
0.55 |
sunSpecular |
0.41 |
sunSpecularEXP |
350 |
23. Tyre Rubber — ksTyres shader#
Wheel-arch glow: move fresnelMaxLevel toward the worn-tyre value, at the cost of a flatter sidewall.
23a. Fresh Tyre with Tyre Shine#
| Parameter |
Value |
| Shader |
ksTyres |
ksAmbient |
0.15 |
ksDiffuse |
0.15 |
ksSpecular |
0.091 |
ksSpecularEXP |
46 |
fresnelC |
0.038 |
fresnelEXP |
7.4 |
fresnelMaxLevel |
0.20 |
Same texture as the worn tyre.
23b. Worn Tyre without Tyre Shine#
| Parameter |
Value |
| Shader |
ksTyres |
ksAmbient |
0.225 |
ksDiffuse |
0.225 |
ksSpecular |
0.0082 |
ksSpecularEXP |
1.8 |
fresnelC |
0.033 |
fresnelEXP |
6.7 |
fresnelMaxLevel |
0.029 |
24. Rubber Trim (weather strips, wipers, interior seals)#
| Parameter |
Value |
| Shader |
ksPerPixelReflection |
ksAmbient |
0.225 |
ksDiffuse |
0.225 |
ksSpecular |
0.032 |
ksSpecularEXP |
8.7 |
fresnelC |
0.036 |
fresnelEXP |
7.5 |
fresnelMaxLevel |
0.15 |