Cleanup: DRW: Remove persistent uniform functions
This commit is contained in:
@@ -127,48 +127,44 @@ void EEVEE_material_bind_resources(DRWShadingGroup *shgrp,
|
||||
EEVEE_EffectsInfo *effects = vedata->stl->effects;
|
||||
EEVEE_PrivateData *pd = vedata->stl->g_data;
|
||||
|
||||
DRW_shgroup_uniform_block_persistent(shgrp, "probe_block", sldata->probe_ubo);
|
||||
DRW_shgroup_uniform_block_persistent(shgrp, "grid_block", sldata->grid_ubo);
|
||||
DRW_shgroup_uniform_block_persistent(shgrp, "planar_block", sldata->planar_ubo);
|
||||
DRW_shgroup_uniform_block_persistent(shgrp, "light_block", sldata->light_ubo);
|
||||
DRW_shgroup_uniform_block_persistent(shgrp, "shadow_block", sldata->shadow_ubo);
|
||||
DRW_shgroup_uniform_block_persistent(shgrp, "common_block", sldata->common_ubo);
|
||||
DRW_shgroup_uniform_block_ref_persistent(shgrp, "renderpass_block", &pd->renderpass_ubo);
|
||||
DRW_shgroup_uniform_block(shgrp, "probe_block", sldata->probe_ubo);
|
||||
DRW_shgroup_uniform_block(shgrp, "grid_block", sldata->grid_ubo);
|
||||
DRW_shgroup_uniform_block(shgrp, "planar_block", sldata->planar_ubo);
|
||||
DRW_shgroup_uniform_block(shgrp, "light_block", sldata->light_ubo);
|
||||
DRW_shgroup_uniform_block(shgrp, "shadow_block", sldata->shadow_ubo);
|
||||
DRW_shgroup_uniform_block(shgrp, "common_block", sldata->common_ubo);
|
||||
DRW_shgroup_uniform_block_ref(shgrp, "renderpass_block", &pd->renderpass_ubo);
|
||||
|
||||
DRW_shgroup_uniform_int_copy(shgrp, "outputSssId", 1);
|
||||
DRW_shgroup_uniform_texture_persistent(shgrp, "utilTex", e_data.util_tex);
|
||||
DRW_shgroup_uniform_texture(shgrp, "utilTex", e_data.util_tex);
|
||||
if (use_diffuse || use_glossy || use_refract) {
|
||||
DRW_shgroup_uniform_texture_ref_persistent(
|
||||
shgrp, "shadowCubeTexture", &sldata->shadow_cube_pool);
|
||||
DRW_shgroup_uniform_texture_ref_persistent(
|
||||
shgrp, "shadowCascadeTexture", &sldata->shadow_cascade_pool);
|
||||
DRW_shgroup_uniform_texture_ref_persistent(shgrp, "maxzBuffer", &vedata->txl->maxzbuffer);
|
||||
DRW_shgroup_uniform_texture_ref(shgrp, "shadowCubeTexture", &sldata->shadow_cube_pool);
|
||||
DRW_shgroup_uniform_texture_ref(shgrp, "shadowCascadeTexture", &sldata->shadow_cascade_pool);
|
||||
DRW_shgroup_uniform_texture_ref(shgrp, "maxzBuffer", &vedata->txl->maxzbuffer);
|
||||
}
|
||||
if ((use_diffuse || use_glossy) && !use_ssrefraction) {
|
||||
DRW_shgroup_uniform_texture_ref_persistent(shgrp, "horizonBuffer", &effects->gtao_horizons);
|
||||
DRW_shgroup_uniform_texture_ref(shgrp, "horizonBuffer", &effects->gtao_horizons);
|
||||
}
|
||||
if (use_diffuse) {
|
||||
DRW_shgroup_uniform_texture_ref_persistent(shgrp, "irradianceGrid", &lcache->grid_tx.tex);
|
||||
DRW_shgroup_uniform_texture_ref(shgrp, "irradianceGrid", &lcache->grid_tx.tex);
|
||||
}
|
||||
if (use_glossy || use_refract) {
|
||||
DRW_shgroup_uniform_texture_ref_persistent(shgrp, "probeCubes", &lcache->cube_tx.tex);
|
||||
DRW_shgroup_uniform_texture_ref(shgrp, "probeCubes", &lcache->cube_tx.tex);
|
||||
}
|
||||
if (use_glossy) {
|
||||
DRW_shgroup_uniform_texture_ref_persistent(shgrp, "probePlanars", &vedata->txl->planar_pool);
|
||||
DRW_shgroup_uniform_texture_ref(shgrp, "probePlanars", &vedata->txl->planar_pool);
|
||||
DRW_shgroup_uniform_int_copy(shgrp, "outputSsrId", ssr_id ? *ssr_id : 0);
|
||||
}
|
||||
if (use_refract) {
|
||||
DRW_shgroup_uniform_float_copy(
|
||||
shgrp, "refractionDepth", (refract_depth) ? *refract_depth : 0.0);
|
||||
if (use_ssrefraction) {
|
||||
DRW_shgroup_uniform_texture_ref_persistent(
|
||||
shgrp, "colorBuffer", &vedata->txl->refract_color);
|
||||
DRW_shgroup_uniform_texture_ref(shgrp, "colorBuffer", &vedata->txl->refract_color);
|
||||
}
|
||||
}
|
||||
if (use_alpha_blend) {
|
||||
DRW_shgroup_uniform_texture_ref_persistent(shgrp, "inScattering", &effects->volume_scatter);
|
||||
DRW_shgroup_uniform_texture_ref_persistent(
|
||||
shgrp, "inTransmittance", &effects->volume_transmit);
|
||||
DRW_shgroup_uniform_texture_ref(shgrp, "inScattering", &effects->volume_scatter);
|
||||
DRW_shgroup_uniform_texture_ref(shgrp, "inTransmittance", &effects->volume_transmit);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -381,7 +381,7 @@ GPENCIL_tLayer *gpencil_layer_cache_add(GPENCIL_PrivateData *pd,
|
||||
struct GPUShader *sh = GPENCIL_shader_geometry_get();
|
||||
DRWShadingGroup *grp = tgp_layer->base_shgrp = DRW_shgroup_create(sh, tgp_layer->geom_ps);
|
||||
|
||||
DRW_shgroup_uniform_texture_persistent(grp, "gpSceneDepthTexture", depth_tex);
|
||||
DRW_shgroup_uniform_texture(grp, "gpSceneDepthTexture", depth_tex);
|
||||
DRW_shgroup_uniform_texture_ref(grp, "gpMaskTexture", mask_tex);
|
||||
DRW_shgroup_uniform_vec3_copy(grp, "gpNormal", tgp_ob->plane_normal);
|
||||
DRW_shgroup_uniform_bool_copy(grp, "strokeOrder3d", tgp_ob->is_drawmode3d);
|
||||
|
||||
@@ -468,7 +468,7 @@ static void gpencil_layer_cache_populate(bGPDlayer *gpl,
|
||||
|
||||
/* Iterator dependent uniforms. */
|
||||
DRWShadingGroup *grp = iter->grp = tgp_layer->base_shgrp;
|
||||
DRW_shgroup_uniform_block_persistent(grp, "gpLightBlock", iter->ubo_lights);
|
||||
DRW_shgroup_uniform_block(grp, "gpLightBlock", iter->ubo_lights);
|
||||
DRW_shgroup_uniform_block(grp, "gpMaterialBlock", iter->ubo_mat);
|
||||
DRW_shgroup_uniform_texture(grp, "gpFillTexture", iter->tex_fill);
|
||||
DRW_shgroup_uniform_texture(grp, "gpStrokeTexture", iter->tex_stroke);
|
||||
|
||||
@@ -184,7 +184,7 @@ void OVERLAY_armature_cache_init(OVERLAY_Data *vedata)
|
||||
|
||||
sh = OVERLAY_shader_armature_sphere(false);
|
||||
grp = DRW_shgroup_create(sh, armature_ps);
|
||||
DRW_shgroup_uniform_block_persistent(grp, "globalsBlock", G_draw.block_ubo);
|
||||
DRW_shgroup_uniform_block(grp, "globalsBlock", G_draw.block_ubo);
|
||||
DRW_shgroup_uniform_float_copy(grp, "alpha", 1.0f);
|
||||
cb->point_solid = BUF_INSTANCE(grp, format, DRW_cache_bone_point_get());
|
||||
|
||||
@@ -196,7 +196,7 @@ void OVERLAY_armature_cache_init(OVERLAY_Data *vedata)
|
||||
|
||||
sh = OVERLAY_shader_armature_shape(false);
|
||||
grp = DRW_shgroup_create(sh, armature_ps);
|
||||
DRW_shgroup_uniform_block_persistent(grp, "globalsBlock", G_draw.block_ubo);
|
||||
DRW_shgroup_uniform_block(grp, "globalsBlock", G_draw.block_ubo);
|
||||
DRW_shgroup_uniform_float_copy(grp, "alpha", 1.0f);
|
||||
cb->custom_solid = grp;
|
||||
cb->box_solid = BUF_INSTANCE(grp, format, DRW_cache_bone_box_get());
|
||||
@@ -212,29 +212,29 @@ void OVERLAY_armature_cache_init(OVERLAY_Data *vedata)
|
||||
|
||||
sh = OVERLAY_shader_armature_sphere(true);
|
||||
grp = DRW_shgroup_create(sh, armature_ps);
|
||||
DRW_shgroup_uniform_block_persistent(grp, "globalsBlock", G_draw.block_ubo);
|
||||
DRW_shgroup_uniform_block(grp, "globalsBlock", G_draw.block_ubo);
|
||||
cb->point_outline = BUF_INSTANCE(grp, format, DRW_cache_bone_point_wire_outline_get());
|
||||
|
||||
sh = OVERLAY_shader_armature_shape(true);
|
||||
cb->custom_outline = grp = DRW_shgroup_create(sh, armature_ps);
|
||||
DRW_shgroup_uniform_block_persistent(grp, "globalsBlock", G_draw.block_ubo);
|
||||
DRW_shgroup_uniform_block(grp, "globalsBlock", G_draw.block_ubo);
|
||||
cb->box_outline = BUF_INSTANCE(grp, format, DRW_cache_bone_box_wire_get());
|
||||
cb->octa_outline = BUF_INSTANCE(grp, format, DRW_cache_bone_octahedral_wire_get());
|
||||
|
||||
sh = OVERLAY_shader_armature_shape_wire();
|
||||
cb->custom_wire = grp = DRW_shgroup_create(sh, armature_ps);
|
||||
DRW_shgroup_uniform_block_persistent(grp, "globalsBlock", G_draw.block_ubo);
|
||||
DRW_shgroup_uniform_block(grp, "globalsBlock", G_draw.block_ubo);
|
||||
}
|
||||
{
|
||||
format = formats->instance_extra;
|
||||
|
||||
sh = OVERLAY_shader_armature_degrees_of_freedom();
|
||||
grp = DRW_shgroup_create(sh, armature_ps);
|
||||
DRW_shgroup_uniform_block_persistent(grp, "globalsBlock", G_draw.block_ubo);
|
||||
DRW_shgroup_uniform_block(grp, "globalsBlock", G_draw.block_ubo);
|
||||
cb->dof_lines = BUF_INSTANCE(grp, format, DRW_cache_bone_dof_lines_get());
|
||||
|
||||
grp = DRW_shgroup_create(sh, armature_transp_ps);
|
||||
DRW_shgroup_uniform_block_persistent(grp, "globalsBlock", G_draw.block_ubo);
|
||||
DRW_shgroup_uniform_block(grp, "globalsBlock", G_draw.block_ubo);
|
||||
cb->dof_sphere = BUF_INSTANCE(grp, format, DRW_cache_bone_dof_sphere_get());
|
||||
}
|
||||
{
|
||||
@@ -242,7 +242,7 @@ void OVERLAY_armature_cache_init(OVERLAY_Data *vedata)
|
||||
|
||||
sh = OVERLAY_shader_armature_stick();
|
||||
grp = DRW_shgroup_create(sh, armature_ps);
|
||||
DRW_shgroup_uniform_block_persistent(grp, "globalsBlock", G_draw.block_ubo);
|
||||
DRW_shgroup_uniform_block(grp, "globalsBlock", G_draw.block_ubo);
|
||||
cb->stick = BUF_INSTANCE(grp, format, DRW_cache_bone_stick_get());
|
||||
}
|
||||
{
|
||||
@@ -251,7 +251,7 @@ void OVERLAY_armature_cache_init(OVERLAY_Data *vedata)
|
||||
sh = OVERLAY_shader_armature_envelope(false);
|
||||
grp = DRW_shgroup_create(sh, armature_ps);
|
||||
DRW_shgroup_state_enable(grp, DRW_STATE_CULL_BACK);
|
||||
DRW_shgroup_uniform_block_persistent(grp, "globalsBlock", G_draw.block_ubo);
|
||||
DRW_shgroup_uniform_block(grp, "globalsBlock", G_draw.block_ubo);
|
||||
DRW_shgroup_uniform_bool_copy(grp, "isDistance", false);
|
||||
DRW_shgroup_uniform_float_copy(grp, "alpha", 1.0f);
|
||||
cb->envelope_solid = BUF_INSTANCE(grp, format, DRW_cache_bone_envelope_solid_get());
|
||||
@@ -266,14 +266,14 @@ void OVERLAY_armature_cache_init(OVERLAY_Data *vedata)
|
||||
|
||||
sh = OVERLAY_shader_armature_envelope(true);
|
||||
grp = DRW_shgroup_create(sh, armature_ps);
|
||||
DRW_shgroup_uniform_block_persistent(grp, "globalsBlock", G_draw.block_ubo);
|
||||
DRW_shgroup_uniform_block(grp, "globalsBlock", G_draw.block_ubo);
|
||||
cb->envelope_outline = BUF_INSTANCE(grp, format, DRW_cache_bone_envelope_outline_get());
|
||||
|
||||
format = formats->instance_bone_envelope_distance;
|
||||
|
||||
sh = OVERLAY_shader_armature_envelope(false);
|
||||
grp = DRW_shgroup_create(sh, armature_transp_ps);
|
||||
DRW_shgroup_uniform_block_persistent(grp, "globalsBlock", G_draw.block_ubo);
|
||||
DRW_shgroup_uniform_block(grp, "globalsBlock", G_draw.block_ubo);
|
||||
DRW_shgroup_uniform_bool_copy(grp, "isDistance", true);
|
||||
DRW_shgroup_state_enable(grp, DRW_STATE_CULL_FRONT);
|
||||
cb->envelope_distance = BUF_INSTANCE(grp, format, DRW_cache_bone_envelope_solid_get());
|
||||
@@ -283,7 +283,7 @@ void OVERLAY_armature_cache_init(OVERLAY_Data *vedata)
|
||||
|
||||
sh = OVERLAY_shader_armature_wire();
|
||||
grp = DRW_shgroup_create(sh, armature_ps);
|
||||
DRW_shgroup_uniform_block_persistent(grp, "globalsBlock", G_draw.block_ubo);
|
||||
DRW_shgroup_uniform_block(grp, "globalsBlock", G_draw.block_ubo);
|
||||
cb->wire = BUF_LINE(grp, format);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -81,8 +81,8 @@ void OVERLAY_extra_cache_init(OVERLAY_Data *vedata)
|
||||
struct GPUTexture *tex = DRW_state_is_fbo() ? dtxl->depth : txl->dummy_depth_tx;
|
||||
|
||||
pd->extra_grid_grp = grp = DRW_shgroup_create(sh, psl->extra_grid_ps);
|
||||
DRW_shgroup_uniform_texture_persistent(grp, "depthBuffer", tex);
|
||||
DRW_shgroup_uniform_block_persistent(grp, "globalsBlock", G_draw.block_ubo);
|
||||
DRW_shgroup_uniform_texture(grp, "depthBuffer", tex);
|
||||
DRW_shgroup_uniform_block(grp, "globalsBlock", G_draw.block_ubo);
|
||||
DRW_shgroup_uniform_bool_copy(grp, "isTransform", (G.moving & G_TRANSFORM_OBJ) != 0);
|
||||
}
|
||||
|
||||
@@ -112,7 +112,7 @@ void OVERLAY_extra_cache_init(OVERLAY_Data *vedata)
|
||||
sh = OVERLAY_shader_extra(is_select);
|
||||
|
||||
grp = DRW_shgroup_create(sh, extra_ps);
|
||||
DRW_shgroup_uniform_block_persistent(grp, "globalsBlock", G_draw.block_ubo);
|
||||
DRW_shgroup_uniform_block(grp, "globalsBlock", G_draw.block_ubo);
|
||||
|
||||
grp_sub = DRW_shgroup_create_sub(grp);
|
||||
cb->camera_distances = BUF_INSTANCE(grp_sub, format, DRW_cache_camera_distances_get());
|
||||
@@ -157,7 +157,7 @@ void OVERLAY_extra_cache_init(OVERLAY_Data *vedata)
|
||||
{
|
||||
format = formats->instance_extra;
|
||||
grp = DRW_shgroup_create(sh, psl->extra_blend_ps); /* NOTE: not the same pass! */
|
||||
DRW_shgroup_uniform_block_persistent(grp, "globalsBlock", G_draw.block_ubo);
|
||||
DRW_shgroup_uniform_block(grp, "globalsBlock", G_draw.block_ubo);
|
||||
|
||||
grp_sub = DRW_shgroup_create_sub(grp);
|
||||
DRW_shgroup_state_enable(grp_sub, DRW_STATE_DEPTH_LESS_EQUAL | DRW_STATE_CULL_BACK);
|
||||
@@ -174,7 +174,7 @@ void OVERLAY_extra_cache_init(OVERLAY_Data *vedata)
|
||||
sh = OVERLAY_shader_extra_groundline();
|
||||
|
||||
grp = DRW_shgroup_create(sh, extra_ps);
|
||||
DRW_shgroup_uniform_block_persistent(grp, "globalsBlock", G_draw.block_ubo);
|
||||
DRW_shgroup_uniform_block(grp, "globalsBlock", G_draw.block_ubo);
|
||||
DRW_shgroup_state_enable(grp, DRW_STATE_BLEND_ALPHA);
|
||||
|
||||
cb->groundline = BUF_INSTANCE(grp, format, DRW_cache_groundline_get());
|
||||
@@ -183,7 +183,7 @@ void OVERLAY_extra_cache_init(OVERLAY_Data *vedata)
|
||||
sh = OVERLAY_shader_extra_wire(false, is_select);
|
||||
|
||||
grp = DRW_shgroup_create(sh, extra_ps);
|
||||
DRW_shgroup_uniform_block_persistent(grp, "globalsBlock", G_draw.block_ubo);
|
||||
DRW_shgroup_uniform_block(grp, "globalsBlock", G_draw.block_ubo);
|
||||
|
||||
cb->extra_dashed_lines = BUF_LINE(grp, formats->pos_color);
|
||||
cb->extra_lines = BUF_LINE(grp, formats->wire_extra);
|
||||
@@ -192,20 +192,20 @@ void OVERLAY_extra_cache_init(OVERLAY_Data *vedata)
|
||||
sh = OVERLAY_shader_extra_wire(true, is_select);
|
||||
|
||||
cb->extra_wire = grp = DRW_shgroup_create(sh, extra_ps);
|
||||
DRW_shgroup_uniform_block_persistent(grp, "globalsBlock", G_draw.block_ubo);
|
||||
DRW_shgroup_uniform_block(grp, "globalsBlock", G_draw.block_ubo);
|
||||
}
|
||||
{
|
||||
sh = OVERLAY_shader_extra_loose_point();
|
||||
|
||||
cb->extra_loose_points = grp = DRW_shgroup_create(sh, extra_ps);
|
||||
DRW_shgroup_uniform_block_persistent(grp, "globalsBlock", G_draw.block_ubo);
|
||||
DRW_shgroup_uniform_block(grp, "globalsBlock", G_draw.block_ubo);
|
||||
}
|
||||
{
|
||||
format = formats->pos;
|
||||
sh = OVERLAY_shader_extra_point();
|
||||
|
||||
grp = DRW_shgroup_create(sh, psl->extra_centers_ps); /* NOTE: not the same pass! */
|
||||
DRW_shgroup_uniform_block_persistent(grp, "globalsBlock", G_draw.block_ubo);
|
||||
DRW_shgroup_uniform_block(grp, "globalsBlock", G_draw.block_ubo);
|
||||
|
||||
grp_sub = DRW_shgroup_create_sub(grp);
|
||||
DRW_shgroup_uniform_vec4_copy(grp_sub, "color", G_draw.block.colorActive);
|
||||
|
||||
@@ -41,7 +41,7 @@ void OVERLAY_facing_cache_init(OVERLAY_Data *vedata)
|
||||
|
||||
GPUShader *sh = OVERLAY_shader_facing();
|
||||
pd->facing_grp[i] = DRW_shgroup_create(sh, psl->facing_ps[i]);
|
||||
DRW_shgroup_uniform_block_persistent(pd->facing_grp[i], "globalsBlock", G_draw.block_ubo);
|
||||
DRW_shgroup_uniform_block(pd->facing_grp[i], "globalsBlock", G_draw.block_ubo);
|
||||
}
|
||||
|
||||
if (!pd->use_in_front) {
|
||||
|
||||
@@ -49,11 +49,11 @@ void OVERLAY_motion_path_cache_init(OVERLAY_Data *vedata)
|
||||
|
||||
sh = OVERLAY_shader_motion_path_line();
|
||||
pd->motion_path_lines_grp = grp = DRW_shgroup_create(sh, psl->motion_paths_ps);
|
||||
DRW_shgroup_uniform_block_persistent(grp, "globalsBlock", G_draw.block_ubo);
|
||||
DRW_shgroup_uniform_block(grp, "globalsBlock", G_draw.block_ubo);
|
||||
|
||||
sh = OVERLAY_shader_motion_path_vert();
|
||||
pd->motion_path_points_grp = grp = DRW_shgroup_create(sh, psl->motion_paths_ps);
|
||||
DRW_shgroup_uniform_block_persistent(grp, "globalsBlock", G_draw.block_ubo);
|
||||
DRW_shgroup_uniform_block(grp, "globalsBlock", G_draw.block_ubo);
|
||||
}
|
||||
|
||||
/* Just convert the CPU cache to GPU cache. */
|
||||
|
||||
@@ -152,13 +152,13 @@ void OVERLAY_particle_cache_init(OVERLAY_Data *vedata)
|
||||
|
||||
sh = OVERLAY_shader_particle_dot();
|
||||
pd->particle_dots_grp = grp = DRW_shgroup_create(sh, psl->particle_ps);
|
||||
DRW_shgroup_uniform_block_persistent(grp, "globalsBlock", G_draw.block_ubo);
|
||||
DRW_shgroup_uniform_texture_persistent(grp, "weightTex", G_draw.ramp);
|
||||
DRW_shgroup_uniform_block(grp, "globalsBlock", G_draw.block_ubo);
|
||||
DRW_shgroup_uniform_texture(grp, "weightTex", G_draw.ramp);
|
||||
|
||||
sh = OVERLAY_shader_particle_shape();
|
||||
pd->particle_shapes_grp = grp = DRW_shgroup_create(sh, psl->particle_ps);
|
||||
DRW_shgroup_uniform_block_persistent(grp, "globalsBlock", G_draw.block_ubo);
|
||||
DRW_shgroup_uniform_texture_persistent(grp, "weightTex", G_draw.ramp);
|
||||
DRW_shgroup_uniform_block(grp, "globalsBlock", G_draw.block_ubo);
|
||||
DRW_shgroup_uniform_texture(grp, "weightTex", G_draw.ramp);
|
||||
}
|
||||
|
||||
void OVERLAY_particle_cache_populate(OVERLAY_Data *vedata, Object *ob)
|
||||
|
||||
@@ -46,7 +46,7 @@ void OVERLAY_pointcloud_cache_init(OVERLAY_Data *vedata)
|
||||
|
||||
sh = OVERLAY_shader_pointcloud_dot();
|
||||
pd->pointcloud_dots_grp = grp = DRW_shgroup_create(sh, psl->pointcloud_ps);
|
||||
DRW_shgroup_uniform_block_persistent(grp, "globalsBlock", G_draw.block_ubo);
|
||||
DRW_shgroup_uniform_block(grp, "globalsBlock", G_draw.block_ubo);
|
||||
}
|
||||
|
||||
void OVERLAY_pointcloud_cache_populate(OVERLAY_Data *vedata, Object *ob)
|
||||
|
||||
@@ -91,7 +91,7 @@ void OVERLAY_wireframe_cache_init(OVERLAY_Data *vedata)
|
||||
|
||||
for (int use_coloring = 0; use_coloring < 2; use_coloring++) {
|
||||
pd->wires_grp[xray][use_coloring] = grp = DRW_shgroup_create(wires_sh, pass);
|
||||
DRW_shgroup_uniform_block_persistent(grp, "globalsBlock", G_draw.block_ubo);
|
||||
DRW_shgroup_uniform_block(grp, "globalsBlock", G_draw.block_ubo);
|
||||
DRW_shgroup_uniform_texture_ref(grp, "depthTex", depth_tx);
|
||||
DRW_shgroup_uniform_float_copy(grp, "wireStepParam", pd->shdata.wire_step_param);
|
||||
DRW_shgroup_uniform_bool_copy(grp, "useColoring", use_coloring);
|
||||
|
||||
@@ -284,11 +284,11 @@ DRWShadingGroup *workbench_image_setup_ex(WORKBENCH_PrivateData *wpd,
|
||||
|
||||
*grp_tex = grp = DRW_shgroup_create_sub(grp);
|
||||
if (tex_tile_data) {
|
||||
DRW_shgroup_uniform_texture_persistent(grp, "imageTileArray", tex);
|
||||
DRW_shgroup_uniform_texture_persistent(grp, "imageTileData", tex_tile_data);
|
||||
DRW_shgroup_uniform_texture(grp, "imageTileArray", tex);
|
||||
DRW_shgroup_uniform_texture(grp, "imageTileData", tex_tile_data);
|
||||
}
|
||||
else {
|
||||
DRW_shgroup_uniform_texture_persistent(grp, "imageTexture", tex);
|
||||
DRW_shgroup_uniform_texture(grp, "imageTexture", tex);
|
||||
}
|
||||
DRW_shgroup_uniform_bool_copy(grp, "imagePremult", (ima && ima->alpha_mode == IMA_ALPHA_PREMUL));
|
||||
DRW_shgroup_uniform_bool_copy(grp, "imageNearest", (interp == SHD_INTERP_CLOSEST));
|
||||
|
||||
@@ -95,21 +95,21 @@ void workbench_opaque_cache_init(WORKBENCH_Data *data)
|
||||
DRW_shgroup_uniform_bool_copy(grp, "useMatcap", use_matcap);
|
||||
|
||||
wpd->prepass[opaque][infront][hair].vcol_shgrp = grp = DRW_shgroup_create(sh, pass);
|
||||
DRW_shgroup_uniform_block_persistent(grp, "material_block", wpd->material_ubo_curr);
|
||||
DRW_shgroup_uniform_block(grp, "material_block", wpd->material_ubo_curr);
|
||||
DRW_shgroup_uniform_int_copy(grp, "materialIndex", 0); /* Default material. (uses vcol) */
|
||||
DRW_shgroup_uniform_bool_copy(grp, "useMatcap", use_matcap);
|
||||
|
||||
sh = workbench_shader_opaque_image_get(wpd, hair, false);
|
||||
|
||||
wpd->prepass[opaque][infront][hair].image_shgrp = grp = DRW_shgroup_create(sh, pass);
|
||||
DRW_shgroup_uniform_block_persistent(grp, "material_block", wpd->material_ubo_curr);
|
||||
DRW_shgroup_uniform_block(grp, "material_block", wpd->material_ubo_curr);
|
||||
DRW_shgroup_uniform_int_copy(grp, "materialIndex", 0); /* Default material. */
|
||||
DRW_shgroup_uniform_bool_copy(grp, "useMatcap", use_matcap);
|
||||
|
||||
sh = workbench_shader_opaque_image_get(wpd, hair, true);
|
||||
|
||||
wpd->prepass[opaque][infront][hair].image_tiled_shgrp = grp = DRW_shgroup_create(sh, pass);
|
||||
DRW_shgroup_uniform_block_persistent(grp, "material_block", wpd->material_ubo_curr);
|
||||
DRW_shgroup_uniform_block(grp, "material_block", wpd->material_ubo_curr);
|
||||
DRW_shgroup_uniform_int_copy(grp, "materialIndex", 0); /* Default material. */
|
||||
DRW_shgroup_uniform_bool_copy(grp, "useMatcap", use_matcap);
|
||||
}
|
||||
@@ -123,9 +123,9 @@ void workbench_opaque_cache_init(WORKBENCH_Data *data)
|
||||
sh = workbench_shader_composite_get(wpd);
|
||||
|
||||
grp = DRW_shgroup_create(sh, psl->composite_ps);
|
||||
DRW_shgroup_uniform_block_persistent(grp, "world_block", wpd->world_ubo);
|
||||
DRW_shgroup_uniform_texture_persistent(grp, "materialBuffer", wpd->material_buffer_tx);
|
||||
DRW_shgroup_uniform_texture_persistent(grp, "normalBuffer", wpd->normal_buffer_tx);
|
||||
DRW_shgroup_uniform_block(grp, "world_block", wpd->world_ubo);
|
||||
DRW_shgroup_uniform_texture(grp, "materialBuffer", wpd->material_buffer_tx);
|
||||
DRW_shgroup_uniform_texture(grp, "normalBuffer", wpd->normal_buffer_tx);
|
||||
DRW_shgroup_uniform_bool_copy(grp, "forceShadowing", false);
|
||||
DRW_shgroup_stencil_mask(grp, 0x00);
|
||||
|
||||
@@ -137,8 +137,8 @@ void workbench_opaque_cache_init(WORKBENCH_Data *data)
|
||||
struct GPUTexture *spec_tx = wpd->studio_light->matcap_specular.gputexture;
|
||||
const bool use_spec = workbench_is_specular_highlight_enabled(wpd);
|
||||
spec_tx = (use_spec && spec_tx) ? spec_tx : diff_tx;
|
||||
DRW_shgroup_uniform_texture_persistent(grp, "matcapDiffuseImage", diff_tx);
|
||||
DRW_shgroup_uniform_texture_persistent(grp, "matcapSpecularImage", spec_tx);
|
||||
DRW_shgroup_uniform_texture(grp, "matcapDiffuseImage", diff_tx);
|
||||
DRW_shgroup_uniform_texture(grp, "matcapSpecularImage", spec_tx);
|
||||
}
|
||||
DRW_shgroup_call_procedural_triangles(grp, NULL, 1);
|
||||
|
||||
|
||||
@@ -67,7 +67,7 @@ void workbench_transparent_engine_init(WORKBENCH_Data *data)
|
||||
static void workbench_transparent_lighting_uniforms(WORKBENCH_PrivateData *wpd,
|
||||
DRWShadingGroup *grp)
|
||||
{
|
||||
DRW_shgroup_uniform_block_persistent(grp, "world_block", wpd->world_ubo);
|
||||
DRW_shgroup_uniform_block(grp, "world_block", wpd->world_ubo);
|
||||
DRW_shgroup_uniform_bool_copy(grp, "forceShadowing", false);
|
||||
|
||||
if (STUDIOLIGHT_TYPE_MATCAP_ENABLED(wpd)) {
|
||||
@@ -78,8 +78,8 @@ static void workbench_transparent_lighting_uniforms(WORKBENCH_PrivateData *wpd,
|
||||
struct GPUTexture *spec_tx = wpd->studio_light->matcap_specular.gputexture;
|
||||
const bool use_spec = workbench_is_specular_highlight_enabled(wpd);
|
||||
spec_tx = (use_spec && spec_tx) ? spec_tx : diff_tx;
|
||||
DRW_shgroup_uniform_texture_persistent(grp, "matcapDiffuseImage", diff_tx);
|
||||
DRW_shgroup_uniform_texture_persistent(grp, "matcapSpecularImage", spec_tx);
|
||||
DRW_shgroup_uniform_texture(grp, "matcapDiffuseImage", diff_tx);
|
||||
DRW_shgroup_uniform_texture(grp, "matcapSpecularImage", spec_tx);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -116,20 +116,20 @@ void workbench_transparent_cache_init(WORKBENCH_Data *data)
|
||||
workbench_transparent_lighting_uniforms(wpd, grp);
|
||||
|
||||
wpd->prepass[transp][infront][hair].vcol_shgrp = grp = DRW_shgroup_create(sh, pass);
|
||||
DRW_shgroup_uniform_block_persistent(grp, "material_block", wpd->material_ubo_curr);
|
||||
DRW_shgroup_uniform_block(grp, "material_block", wpd->material_ubo_curr);
|
||||
DRW_shgroup_uniform_int_copy(grp, "materialIndex", 0); /* Default material. (uses vcol) */
|
||||
|
||||
sh = workbench_shader_transparent_image_get(wpd, hair, false);
|
||||
|
||||
wpd->prepass[transp][infront][hair].image_shgrp = grp = DRW_shgroup_create(sh, pass);
|
||||
DRW_shgroup_uniform_block_persistent(grp, "material_block", wpd->material_ubo_curr);
|
||||
DRW_shgroup_uniform_block(grp, "material_block", wpd->material_ubo_curr);
|
||||
DRW_shgroup_uniform_int_copy(grp, "materialIndex", 0); /* Default material. */
|
||||
workbench_transparent_lighting_uniforms(wpd, grp);
|
||||
|
||||
sh = workbench_shader_transparent_image_get(wpd, hair, true);
|
||||
|
||||
wpd->prepass[transp][infront][hair].image_tiled_shgrp = grp = DRW_shgroup_create(sh, pass);
|
||||
DRW_shgroup_uniform_block_persistent(grp, "material_block", wpd->material_ubo_curr);
|
||||
DRW_shgroup_uniform_block(grp, "material_block", wpd->material_ubo_curr);
|
||||
DRW_shgroup_uniform_int_copy(grp, "materialIndex", 0); /* Default material. */
|
||||
workbench_transparent_lighting_uniforms(wpd, grp);
|
||||
}
|
||||
|
||||
@@ -464,27 +464,15 @@ void DRW_shgroup_clear_framebuffer(DRWShadingGroup *shgroup,
|
||||
void DRW_shgroup_uniform_texture(DRWShadingGroup *shgroup,
|
||||
const char *name,
|
||||
const struct GPUTexture *tex);
|
||||
void DRW_shgroup_uniform_texture_persistent(DRWShadingGroup *shgroup,
|
||||
const char *name,
|
||||
const struct GPUTexture *tex);
|
||||
void DRW_shgroup_uniform_texture_ref(DRWShadingGroup *shgroup,
|
||||
const char *name,
|
||||
struct GPUTexture **tex);
|
||||
void DRW_shgroup_uniform_texture_ref_persistent(DRWShadingGroup *shgroup,
|
||||
const char *name,
|
||||
struct GPUTexture **tex);
|
||||
void DRW_shgroup_uniform_block(DRWShadingGroup *shgroup,
|
||||
const char *name,
|
||||
const struct GPUUniformBuffer *ubo);
|
||||
void DRW_shgroup_uniform_block_persistent(DRWShadingGroup *shgroup,
|
||||
const char *name,
|
||||
const struct GPUUniformBuffer *ubo);
|
||||
void DRW_shgroup_uniform_block_ref(DRWShadingGroup *shgroup,
|
||||
const char *name,
|
||||
struct GPUUniformBuffer **ubo);
|
||||
void DRW_shgroup_uniform_block_ref_persistent(DRWShadingGroup *shgroup,
|
||||
const char *name,
|
||||
struct GPUUniformBuffer **ubo);
|
||||
void DRW_shgroup_uniform_float(DRWShadingGroup *shgroup,
|
||||
const char *name,
|
||||
const float *value,
|
||||
|
||||
@@ -270,34 +270,12 @@ void DRW_shgroup_uniform_texture(DRWShadingGroup *shgroup, const char *name, con
|
||||
drw_shgroup_uniform(shgroup, name, DRW_UNIFORM_TEXTURE, tex, 0, 1);
|
||||
}
|
||||
|
||||
/* Same as DRW_shgroup_uniform_texture but is guaranteed to be bound if shader does not change
|
||||
* between shgrp. */
|
||||
/* TODO remove */
|
||||
void DRW_shgroup_uniform_texture_persistent(DRWShadingGroup *shgroup,
|
||||
const char *name,
|
||||
const GPUTexture *tex)
|
||||
{
|
||||
BLI_assert(tex != NULL);
|
||||
drw_shgroup_uniform(shgroup, name, DRW_UNIFORM_TEXTURE, tex, 0, 1);
|
||||
}
|
||||
|
||||
void DRW_shgroup_uniform_texture_ref(DRWShadingGroup *shgroup, const char *name, GPUTexture **tex)
|
||||
{
|
||||
BLI_assert(tex != NULL);
|
||||
drw_shgroup_uniform(shgroup, name, DRW_UNIFORM_TEXTURE_REF, tex, 0, 1);
|
||||
}
|
||||
|
||||
/* Same as DRW_shgroup_uniform_texture_ref but is guaranteed to be bound if shader does not change
|
||||
* between shgrp. */
|
||||
/* TODO remove */
|
||||
void DRW_shgroup_uniform_texture_ref_persistent(DRWShadingGroup *shgroup,
|
||||
const char *name,
|
||||
GPUTexture **tex)
|
||||
{
|
||||
BLI_assert(tex != NULL);
|
||||
drw_shgroup_uniform(shgroup, name, DRW_UNIFORM_TEXTURE_REF, tex, 0, 1);
|
||||
}
|
||||
|
||||
void DRW_shgroup_uniform_block(DRWShadingGroup *shgroup,
|
||||
const char *name,
|
||||
const GPUUniformBuffer *ubo)
|
||||
@@ -306,17 +284,6 @@ void DRW_shgroup_uniform_block(DRWShadingGroup *shgroup,
|
||||
drw_shgroup_uniform(shgroup, name, DRW_UNIFORM_BLOCK, ubo, 0, 1);
|
||||
}
|
||||
|
||||
/* Same as DRW_shgroup_uniform_block but is guaranteed to be bound if shader does not change
|
||||
* between shgrp. */
|
||||
/* TODO remove */
|
||||
void DRW_shgroup_uniform_block_persistent(DRWShadingGroup *shgroup,
|
||||
const char *name,
|
||||
const GPUUniformBuffer *ubo)
|
||||
{
|
||||
BLI_assert(ubo != NULL);
|
||||
drw_shgroup_uniform(shgroup, name, DRW_UNIFORM_BLOCK, ubo, 0, 1);
|
||||
}
|
||||
|
||||
void DRW_shgroup_uniform_block_ref(DRWShadingGroup *shgroup,
|
||||
const char *name,
|
||||
GPUUniformBuffer **ubo)
|
||||
@@ -325,17 +292,6 @@ void DRW_shgroup_uniform_block_ref(DRWShadingGroup *shgroup,
|
||||
drw_shgroup_uniform(shgroup, name, DRW_UNIFORM_BLOCK_REF, ubo, 0, 1);
|
||||
}
|
||||
|
||||
/* Same as DRW_shgroup_uniform_block_ref but is guaranteed to be bound if shader does not change
|
||||
* between shgrp. */
|
||||
/* TODO remove */
|
||||
void DRW_shgroup_uniform_block_ref_persistent(DRWShadingGroup *shgroup,
|
||||
const char *name,
|
||||
GPUUniformBuffer **ubo)
|
||||
{
|
||||
BLI_assert(ubo != NULL);
|
||||
drw_shgroup_uniform(shgroup, name, DRW_UNIFORM_BLOCK_REF, ubo, 0, 1);
|
||||
}
|
||||
|
||||
void DRW_shgroup_uniform_bool(DRWShadingGroup *shgroup,
|
||||
const char *name,
|
||||
const int *value,
|
||||
@@ -1340,7 +1296,7 @@ static void drw_shgroup_material_texture(DRWShadingGroup *grp,
|
||||
int textarget)
|
||||
{
|
||||
GPUTexture *gputex = GPU_texture_from_blender(tex->ima, tex->iuser, NULL, textarget);
|
||||
DRW_shgroup_uniform_texture_persistent(grp, name, gputex);
|
||||
DRW_shgroup_uniform_texture(grp, name, gputex);
|
||||
|
||||
GPUTexture **gputex_ref = BLI_memblock_alloc(DST.vmempool->images);
|
||||
*gputex_ref = gputex;
|
||||
@@ -1365,7 +1321,7 @@ void DRW_shgroup_add_material_resources(DRWShadingGroup *grp, struct GPUMaterial
|
||||
}
|
||||
else if (tex->colorband) {
|
||||
/* Color Ramp */
|
||||
DRW_shgroup_uniform_texture_persistent(grp, tex->sampler_name, *tex->colorband);
|
||||
DRW_shgroup_uniform_texture(grp, tex->sampler_name, *tex->colorband);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user