Workbench: remove runtime warnings
Added feature check when uploading material uniforms
This commit is contained in:
parent
3169160a97
commit
15ebe30bc5
|
@ -580,11 +580,7 @@ static WORKBENCH_MaterialData *get_or_create_material_data(
|
|||
workbench_material_copy(material, &material_template);
|
||||
DRW_shgroup_stencil_mask(material->shgrp, 0xFF);
|
||||
DRW_shgroup_uniform_int(material->shgrp, "object_id", &material->object_id, 1);
|
||||
workbench_material_shgroup_uniform(material->shgrp, material);
|
||||
if (color_type == V3D_SHADING_TEXTURE_COLOR) {
|
||||
GPUTexture *tex = GPU_texture_from_blender(ima, NULL, GL_TEXTURE_2D, false, 0.0);
|
||||
DRW_shgroup_uniform_texture(material->shgrp, "image", tex);
|
||||
}
|
||||
workbench_material_shgroup_uniform(wpd, material->shgrp, material);
|
||||
|
||||
BLI_ghash_insert(wpd->material_hash, SET_UINT_IN_POINTER(hash), material);
|
||||
}
|
||||
|
@ -630,11 +626,7 @@ static void workbench_cache_populate_particles(WORKBENCH_Data *vedata, Object *o
|
|||
shader);
|
||||
DRW_shgroup_stencil_mask(shgrp, 0xFF);
|
||||
DRW_shgroup_uniform_int(shgrp, "object_id", &material->object_id, 1);
|
||||
workbench_material_shgroup_uniform(shgrp, material);
|
||||
if (image) {
|
||||
GPUTexture *tex = GPU_texture_from_blender(image, NULL, GL_TEXTURE_2D, false, 0.0f);
|
||||
DRW_shgroup_uniform_texture(shgrp, "image", tex);
|
||||
}
|
||||
workbench_material_shgroup_uniform(wpd, shgrp, material);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -177,10 +177,6 @@ static WORKBENCH_MaterialData *get_or_create_material_data(
|
|||
DRW_shgroup_uniform_vec4(grp, "viewvecs[0]", (float *)wpd->viewvecs, 3);
|
||||
workbench_material_set_normal_world_matrix(grp, wpd, e_data.normal_world_matrix);
|
||||
workbench_material_copy(material, &material_template);
|
||||
if (color_type == V3D_SHADING_TEXTURE_COLOR) {
|
||||
GPUTexture *tex = GPU_texture_from_blender(ima, NULL, GL_TEXTURE_2D, false, 0.0f);
|
||||
DRW_shgroup_uniform_texture(grp, "image", tex);
|
||||
}
|
||||
if (STUDIOLIGHT_ORIENTATION_VIEWNORMAL_ENABLED(wpd)) {
|
||||
BKE_studiolight_ensure_flag(wpd->studio_light, STUDIOLIGHT_EQUIRECTANGULAR_RADIANCE_GPUTEXTURE);
|
||||
DRW_shgroup_uniform_texture(grp, "matcapImage", wpd->studio_light->equirectangular_radiance_gputexture);
|
||||
|
@ -189,7 +185,7 @@ static WORKBENCH_MaterialData *get_or_create_material_data(
|
|||
DRW_shgroup_uniform_vec2(grp, "invertedViewportSize", DRW_viewport_invert_size_get(), 1);
|
||||
}
|
||||
|
||||
workbench_material_shgroup_uniform(grp, material);
|
||||
workbench_material_shgroup_uniform(wpd, grp, material);
|
||||
material->shgrp = grp;
|
||||
|
||||
/* Depth */
|
||||
|
@ -423,16 +419,12 @@ static void workbench_forward_cache_populate_particles(WORKBENCH_Data *vedata, O
|
|||
shader);
|
||||
workbench_material_set_normal_world_matrix(shgrp, wpd, e_data.normal_world_matrix);
|
||||
DRW_shgroup_uniform_block(shgrp, "world_block", wpd->world_ubo);
|
||||
workbench_material_shgroup_uniform(shgrp, material);
|
||||
workbench_material_shgroup_uniform(wpd, shgrp, material);
|
||||
DRW_shgroup_uniform_vec4(shgrp, "viewvecs[0]", (float *)wpd->viewvecs, 3);
|
||||
/* Hairs have lots of layer and can rapidly become the most prominent surface.
|
||||
* So lower their alpha artificially. */
|
||||
float hair_alpha = wpd->shading.xray_alpha * 0.33f;
|
||||
DRW_shgroup_uniform_float_copy(shgrp, "alpha", hair_alpha);
|
||||
if (image) {
|
||||
GPUTexture *tex = GPU_texture_from_blender(image, NULL, GL_TEXTURE_2D, false, 0.0f);
|
||||
DRW_shgroup_uniform_texture(shgrp, "image", tex);
|
||||
}
|
||||
if (STUDIOLIGHT_ORIENTATION_VIEWNORMAL_ENABLED(wpd)) {
|
||||
BKE_studiolight_ensure_flag(wpd->studio_light, STUDIOLIGHT_EQUIRECTANGULAR_RADIANCE_GPUTEXTURE);
|
||||
DRW_shgroup_uniform_texture(shgrp, "matcapImage", wpd->studio_light->equirectangular_radiance_gputexture);
|
||||
|
|
|
@ -2,6 +2,8 @@
|
|||
|
||||
#include "workbench_private.h"
|
||||
|
||||
#include "BIF_gl.h"
|
||||
|
||||
#include "BLI_dynstr.h"
|
||||
|
||||
#define HSV_SATURATION 0.5
|
||||
|
@ -177,11 +179,21 @@ int workbench_material_determine_color_type(WORKBENCH_PrivateData *wpd, Image *i
|
|||
return color_type;
|
||||
}
|
||||
|
||||
void workbench_material_shgroup_uniform(DRWShadingGroup *grp, WORKBENCH_MaterialData *material)
|
||||
void workbench_material_shgroup_uniform(WORKBENCH_PrivateData *wpd, DRWShadingGroup *grp, WORKBENCH_MaterialData *material)
|
||||
{
|
||||
DRW_shgroup_uniform_vec4(grp, "materialDiffuseColor", material->diffuse_color, 1);
|
||||
DRW_shgroup_uniform_vec4(grp, "materialSpecularColor", material->specular_color, 1);
|
||||
DRW_shgroup_uniform_float(grp, "materialRoughness", &material->roughness, 1);
|
||||
if (workbench_material_determine_color_type(wpd, material->ima) == V3D_SHADING_TEXTURE_COLOR)
|
||||
{
|
||||
GPUTexture *tex = GPU_texture_from_blender(material->ima, NULL, GL_TEXTURE_2D, false, 0.0f);
|
||||
DRW_shgroup_uniform_texture(grp, "image", tex);
|
||||
}
|
||||
else {
|
||||
DRW_shgroup_uniform_vec4(grp, "materialDiffuseColor", material->diffuse_color, 1);
|
||||
}
|
||||
|
||||
if (SPECULAR_HIGHLIGHT_ENABLED(wpd)) {
|
||||
DRW_shgroup_uniform_vec4(grp, "materialSpecularColor", material->specular_color, 1);
|
||||
DRW_shgroup_uniform_float(grp, "materialRoughness", &material->roughness, 1);
|
||||
}
|
||||
}
|
||||
|
||||
void workbench_material_copy(WORKBENCH_MaterialData *dest_material, const WORKBENCH_MaterialData *source_material)
|
||||
|
|
|
@ -270,7 +270,7 @@ uint workbench_material_get_hash(WORKBENCH_MaterialData *material_template);
|
|||
int workbench_material_get_shader_index(WORKBENCH_PrivateData *wpd, bool use_textures, bool is_hair);
|
||||
void workbench_material_set_normal_world_matrix(
|
||||
DRWShadingGroup *grp, WORKBENCH_PrivateData *wpd, float persistent_matrix[3][3]);
|
||||
void workbench_material_shgroup_uniform(DRWShadingGroup *grp, WORKBENCH_MaterialData *material);
|
||||
void workbench_material_shgroup_uniform(WORKBENCH_PrivateData *wpd, DRWShadingGroup *grp, WORKBENCH_MaterialData *material);
|
||||
void workbench_material_copy(WORKBENCH_MaterialData *dest_material, const WORKBENCH_MaterialData *source_material);
|
||||
|
||||
/* workbench_studiolight.c */
|
||||
|
|
Loading…
Reference in New Issue