Cycles: support for specular color in solid shading mode, available in

the material panel.

Patch by Phillipp Oeser (D62) with some minor modifications, thanks!
This commit is contained in:
2014-11-21 14:07:25 +01:00
parent 419c2723d3
commit 9124ecb16b
2 changed files with 31 additions and 14 deletions

View File

@@ -1391,7 +1391,7 @@ static struct GPUMaterialState {
/* fixed function material, alpha handed by caller */
static void gpu_material_to_fixed(GPUMaterialFixed *smat, const Material *bmat, const int gamma, const Object *ob, const int new_shading_nodes)
{
if (new_shading_nodes || bmat->mode & MA_SHLESS) {
if (bmat->mode & MA_SHLESS) {
copy_v3_v3(smat->diff, &bmat->r);
smat->diff[3]= 1.0;
@@ -1401,6 +1401,19 @@ static void gpu_material_to_fixed(GPUMaterialFixed *smat, const Material *bmat,
zero_v4(smat->spec);
smat->hard= 0;
}
else if (new_shading_nodes) {
copy_v3_v3(smat->diff, &bmat->r);
smat->diff[3]= 1.0;
copy_v3_v3(smat->spec, &bmat->specr);
smat->spec[3] = 1.0;
smat->hard= CLAMPIS(bmat->har, 0, 128);
if (gamma) {
linearrgb_to_srgb_v3_v3(smat->diff, smat->diff);
linearrgb_to_srgb_v3_v3(smat->spec, smat->spec);
}
}
else {
mul_v3_v3fl(smat->diff, &bmat->r, bmat->ref + bmat->emit);
smat->diff[3]= 1.0; /* caller may set this to bmat->alpha */