Blender  V3.3
Functions
workbench_opaque.c File Reference
#include "DRW_render.h"
#include "workbench_engine.h"
#include "workbench_private.h"

Go to the source code of this file.

Functions

void workbench_opaque_engine_init (WORKBENCH_Data *data)
 
void workbench_opaque_cache_init (WORKBENCH_Data *vedata)
 

Detailed Description

Opaque Pipeline:

Use deferred shading to render opaque surfaces. This decouple the shading cost from scene complexity.

The rendering is broken down in two passes:

Definition in file workbench_opaque.c.

Function Documentation

◆ workbench_opaque_cache_init()

void workbench_opaque_cache_init ( WORKBENCH_Data vedata)

Definition at line 45 of file workbench_opaque.c.

References BKE_studiolight_ensure_flag(), BLI_ghash_ptr_new(), WORKBENCH_PrivateData::clip_state, WORKBENCH_Prepass::common_shgrp, WORKBENCH_PassList::composite_ps, WORKBENCH_PrivateData::cull_state, data, DefaultTextureList::depth_in_front, DRW_PASS_CREATE, DRW_shgroup_call_procedural_triangles(), DRW_shgroup_create(), DRW_shgroup_create_sub(), DRW_shgroup_state_disable(), DRW_shgroup_state_enable(), DRW_shgroup_stencil_mask(), DRW_shgroup_uniform_block, DRW_shgroup_uniform_bool_copy(), DRW_shgroup_uniform_int_copy(), DRW_shgroup_uniform_texture(), DRW_shgroup_uniform_texture_ref(), DRW_STATE_DEPTH_ALWAYS, DRW_STATE_DEPTH_GREATER, DRW_STATE_DEPTH_LESS_EQUAL, DRW_STATE_STENCIL_ALWAYS, DRW_STATE_STENCIL_EQUAL, DRW_STATE_STENCIL_NEQUAL, DRW_STATE_WRITE_COLOR, DRW_STATE_WRITE_DEPTH, DRW_STATE_WRITE_STENCIL, DRW_viewport_texture_list_get(), StudioLightImage::gputexture, WORKBENCH_Prepass::image_shgrp, WORKBENCH_Prepass::image_tiled_shgrp, View3DShading::light, StudioLight::matcap_diffuse, StudioLight::matcap_specular, WORKBENCH_PrivateData::material_buffer_tx, WORKBENCH_Prepass::material_hash, WORKBENCH_PrivateData::material_ubo_curr, WORKBENCH_PassList::merge_infront_ps, WORKBENCH_PrivateData::normal_buffer_tx, NULL, WORKBENCH_PassList::opaque_infront_ps, WORKBENCH_PassList::opaque_ps, WORKBENCH_PrivateData::prepass, WORKBENCH_Data::psl, sh, WORKBENCH_PrivateData::shading, SHADOW_ENABLED, state, WORKBENCH_Data::stl, WORKBENCH_PrivateData::studio_light, STUDIOLIGHT_MATCAP_DIFFUSE_GPUTEXTURE, STUDIOLIGHT_MATCAP_SPECULAR_GPUTEXTURE, STUDIOLIGHT_TYPE_MATCAP_ENABLED, V3D_LIGHTING_MATCAP, WORKBENCH_Prepass::vcol_shgrp, WORKBENCH_DATATYPE_MAX, workbench_is_specular_highlight_enabled(), workbench_shader_composite_get(), workbench_shader_merge_infront_get(), workbench_shader_opaque_get(), workbench_shader_opaque_image_get(), WORKBENCH_PrivateData::world_ubo, and WORKBENCH_StorageList::wpd.

Referenced by workbench_cache_init().

◆ workbench_opaque_engine_init()

void workbench_opaque_engine_init ( WORKBENCH_Data data)