diff options
-rw-r--r-- | intern/cycles/blender/addon/ui.py | 30 | ||||
-rw-r--r-- | source/blender/gpu/intern/gpu_draw.c | 15 |
2 files changed, 31 insertions, 14 deletions
diff --git a/intern/cycles/blender/addon/ui.py b/intern/cycles/blender/addon/ui.py index e4f34f3a5aa..bce98df8d40 100644 --- a/intern/cycles/blender/addon/ui.py +++ b/intern/cycles/blender/addon/ui.py @@ -1020,20 +1020,9 @@ class CyclesMaterial_PT_settings(CyclesButtonsPanel, Panel): cmat = mat.cycles split = layout.split() - - col = split.column(align=True) - col.prop(mat, "diffuse_color", text="Viewport Color") - col.prop(mat, "alpha") - - col = split.column(align=True) - col.label() - col.prop(mat, "pass_index") - - split = layout.split() - col = split.column() - col.label(text="Surface:") - col.prop(cmat, "sample_as_light", text="Multiple Importance") + col.prop(mat, "pass_index") + col.prop(cmat, "sample_as_light") col.prop(cmat, "use_transparent_shadow") col = split.column() @@ -1044,6 +1033,21 @@ class CyclesMaterial_PT_settings(CyclesButtonsPanel, Panel): col.prop(cmat, "volume_interpolation", text="") col.prop(cmat, "homogeneous_volume", text="Homogeneous") + layout.separator() + layout.label("Viewport Shading:") + + split = layout.split() + + col = split.column() + col.label("Diffuse") + col.label("Specular") + col.label("Hardness") + + col = split.column() + col.prop(mat, "diffuse_color", text="") + col.prop(mat, "specular_color", text="") + col.prop(mat, "specular_hardness", text="") + class CyclesTexture_PT_context(CyclesButtonsPanel, Panel): bl_label = "" diff --git a/source/blender/gpu/intern/gpu_draw.c b/source/blender/gpu/intern/gpu_draw.c index 622e7b5ce9e..0034b1c0d11 100644 --- a/source/blender/gpu/intern/gpu_draw.c +++ b/source/blender/gpu/intern/gpu_draw.c @@ -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 */ |