Changeset View
Changeset View
Standalone View
Standalone View
source/blender/draw/engines/workbench/workbench_private.h
| Show All 31 Lines | |||||
| #include "DRW_render.h" | #include "DRW_render.h" | ||||
| #include "workbench_engine.h" | #include "workbench_engine.h" | ||||
| #define WORKBENCH_ENGINE "BLENDER_WORKBENCH" | #define WORKBENCH_ENGINE "BLENDER_WORKBENCH" | ||||
| #define M_GOLDEN_RATION_CONJUGATE 0.618033988749895 | #define M_GOLDEN_RATION_CONJUGATE 0.618033988749895 | ||||
| #define MAX_COMPOSITE_SHADERS (1 << 6) | #define MAX_COMPOSITE_SHADERS (1 << 6) | ||||
| #define MAX_PREPASS_SHADERS (1 << 6) | #define MAX_PREPASS_SHADERS (1 << 7) | ||||
| #define MAX_ACCUM_SHADERS (1 << 5) | #define MAX_ACCUM_SHADERS (1 << 6) | ||||
| #define MAX_CAVITY_SHADERS (1 << 3) | #define MAX_CAVITY_SHADERS (1 << 3) | ||||
| #define TEXTURE_DRAWING_ENABLED(wpd) (wpd->shading.color_type == V3D_SHADING_TEXTURE_COLOR) | #define TEXTURE_DRAWING_ENABLED(wpd) (wpd->shading.color_type == V3D_SHADING_TEXTURE_COLOR) | ||||
| #define VERTEX_COLORS_ENABLED(wpd) (wpd->shading.color_type == V3D_SHADING_VERTEX_COLOR) | |||||
| #define FLAT_ENABLED(wpd) (wpd->shading.light == V3D_LIGHTING_FLAT) | #define FLAT_ENABLED(wpd) (wpd->shading.light == V3D_LIGHTING_FLAT) | ||||
| #define STUDIOLIGHT_ENABLED(wpd) (wpd->shading.light == V3D_LIGHTING_STUDIO) | #define STUDIOLIGHT_ENABLED(wpd) (wpd->shading.light == V3D_LIGHTING_STUDIO) | ||||
| #define MATCAP_ENABLED(wpd) (wpd->shading.light == V3D_LIGHTING_MATCAP) | #define MATCAP_ENABLED(wpd) (wpd->shading.light == V3D_LIGHTING_MATCAP) | ||||
| #define USE_WORLD_ORIENTATION(wpd) ((wpd->shading.flag & V3D_SHADING_WORLD_ORIENTATION) != 0) | #define USE_WORLD_ORIENTATION(wpd) ((wpd->shading.flag & V3D_SHADING_WORLD_ORIENTATION) != 0) | ||||
| #define STUDIOLIGHT_TYPE_WORLD_ENABLED(wpd) \ | #define STUDIOLIGHT_TYPE_WORLD_ENABLED(wpd) \ | ||||
| (STUDIOLIGHT_ENABLED(wpd) && (wpd->studio_light->flag & STUDIOLIGHT_TYPE_WORLD)) | (STUDIOLIGHT_ENABLED(wpd) && (wpd->studio_light->flag & STUDIOLIGHT_TYPE_WORLD)) | ||||
| #define STUDIOLIGHT_TYPE_STUDIO_ENABLED(wpd) \ | #define STUDIOLIGHT_TYPE_STUDIO_ENABLED(wpd) \ | ||||
| (STUDIOLIGHT_ENABLED(wpd) && (wpd->studio_light->flag & STUDIOLIGHT_TYPE_STUDIO)) | (STUDIOLIGHT_ENABLED(wpd) && (wpd->studio_light->flag & STUDIOLIGHT_TYPE_STUDIO)) | ||||
| Show All 11 Lines | |||||
| #define SHADOW_ENABLED(wpd) (wpd->shading.flag & V3D_SHADING_SHADOW) | #define SHADOW_ENABLED(wpd) (wpd->shading.flag & V3D_SHADING_SHADOW) | ||||
| #define GHOST_ENABLED(psl) \ | #define GHOST_ENABLED(psl) \ | ||||
| (!DRW_pass_is_empty(psl->ghost_prepass_pass) || !DRW_pass_is_empty(psl->ghost_prepass_hair_pass)) | (!DRW_pass_is_empty(psl->ghost_prepass_pass) || !DRW_pass_is_empty(psl->ghost_prepass_hair_pass)) | ||||
| #define CULL_BACKFACE_ENABLED(wpd) ((wpd->shading.flag & V3D_SHADING_BACKFACE_CULLING) != 0) | #define CULL_BACKFACE_ENABLED(wpd) ((wpd->shading.flag & V3D_SHADING_BACKFACE_CULLING) != 0) | ||||
| #define OIT_ENABLED(wpd) \ | #define OIT_ENABLED(wpd) \ | ||||
| (ELEM(wpd->shading.color_type, \ | (ELEM(wpd->shading.color_type, \ | ||||
| V3D_SHADING_MATERIAL_COLOR, \ | V3D_SHADING_MATERIAL_COLOR, \ | ||||
| V3D_SHADING_OBJECT_COLOR, \ | V3D_SHADING_OBJECT_COLOR, \ | ||||
| V3D_SHADING_TEXTURE_COLOR)) | V3D_SHADING_TEXTURE_COLOR, \ | ||||
| V3D_SHADING_VERTEX_COLOR)) | |||||
| #define IS_NAVIGATING(wpd) \ | #define IS_NAVIGATING(wpd) \ | ||||
| ((DRW_context_state_get()->rv3d) && (DRW_context_state_get()->rv3d->rflag & RV3D_NAVIGATING)) | ((DRW_context_state_get()->rv3d) && (DRW_context_state_get()->rv3d->rflag & RV3D_NAVIGATING)) | ||||
| #define FXAA_ENABLED(wpd) \ | #define FXAA_ENABLED(wpd) \ | ||||
| ((!DRW_state_is_opengl_render()) && \ | ((!DRW_state_is_opengl_render()) && \ | ||||
| (IN_RANGE(wpd->preferences->gpu_viewport_quality, \ | (IN_RANGE(wpd->preferences->gpu_viewport_quality, \ | ||||
| GPU_VIEWPORT_QUALITY_FXAA, \ | GPU_VIEWPORT_QUALITY_FXAA, \ | ||||
| GPU_VIEWPORT_QUALITY_TAA8) || \ | GPU_VIEWPORT_QUALITY_TAA8) || \ | ||||
| ▲ Show 20 Lines • Show All 127 Lines • ▼ Show 20 Lines | typedef struct WORKBENCH_UBO_World { | ||||
| float curvature_valley; | float curvature_valley; | ||||
| int pad[3]; | int pad[3]; | ||||
| } WORKBENCH_UBO_World; | } WORKBENCH_UBO_World; | ||||
| BLI_STATIC_ASSERT_ALIGN(WORKBENCH_UBO_World, 16) | BLI_STATIC_ASSERT_ALIGN(WORKBENCH_UBO_World, 16) | ||||
| typedef struct WORKBENCH_PrivateData { | typedef struct WORKBENCH_PrivateData { | ||||
| struct GHash *material_hash; | struct GHash *material_hash; | ||||
| struct GHash *material_transp_hash; | struct GHash *material_transp_hash; | ||||
| struct GPUShader *prepass_solid_sh; | struct GPUShader *prepass_primary_sh; | ||||
| struct GPUShader *prepass_solid_hair_sh; | struct GPUShader *prepass_primary_hair_sh; | ||||
| struct GPUShader *prepass_texture_sh; | struct GPUShader *prepass_fallback_sh; | ||||
| struct GPUShader *prepass_texture_hair_sh; | struct GPUShader *prepass_fallback_hair_sh; | ||||
| struct GPUShader *composite_sh; | struct GPUShader *composite_sh; | ||||
| struct GPUShader *background_sh; | struct GPUShader *background_sh; | ||||
| struct GPUShader *transparent_accum_sh; | struct GPUShader *transparent_accum_primary_sh; | ||||
| struct GPUShader *transparent_accum_hair_sh; | struct GPUShader *transparent_accum_primary_hair_sh; | ||||
| struct GPUShader *transparent_accum_texture_sh; | struct GPUShader *transparent_accum_fallback_sh; | ||||
| struct GPUShader *transparent_accum_texture_hair_sh; | struct GPUShader *transparent_accum_fallback_hair_sh; | ||||
| View3DShading shading; | View3DShading shading; | ||||
| StudioLight *studio_light; | StudioLight *studio_light; | ||||
| const UserDef *preferences; | const UserDef *preferences; | ||||
| struct GPUUniformBuffer *world_ubo; | struct GPUUniformBuffer *world_ubo; | ||||
| struct DRWShadingGroup *shadow_shgrp; | struct DRWShadingGroup *shadow_shgrp; | ||||
| struct DRWShadingGroup *depth_shgrp; | struct DRWShadingGroup *depth_shgrp; | ||||
| WORKBENCH_UBO_World world_data; | WORKBENCH_UBO_World world_data; | ||||
| float shadow_multiplier; | float shadow_multiplier; | ||||
| ▲ Show 20 Lines • Show All 147 Lines • ▼ Show 20 Lines | void workbench_dof_create_pass(WORKBENCH_Data *vedata, | ||||
| GPUTexture *noise_tex); | GPUTexture *noise_tex); | ||||
| void workbench_dof_draw_pass(WORKBENCH_Data *vedata); | void workbench_dof_draw_pass(WORKBENCH_Data *vedata); | ||||
| /* workbench_materials.c */ | /* workbench_materials.c */ | ||||
| int workbench_material_determine_color_type(WORKBENCH_PrivateData *wpd, Image *ima, Object *ob); | int workbench_material_determine_color_type(WORKBENCH_PrivateData *wpd, Image *ima, Object *ob); | ||||
| void workbench_material_get_image_and_mat( | void workbench_material_get_image_and_mat( | ||||
| Object *ob, int mat_nr, Image **r_image, ImageUser **r_iuser, int *r_interp, Material **r_mat); | Object *ob, int mat_nr, Image **r_image, ImageUser **r_iuser, int *r_interp, Material **r_mat); | ||||
| char *workbench_material_build_defines(WORKBENCH_PrivateData *wpd, | char *workbench_material_build_defines(WORKBENCH_PrivateData *wpd, | ||||
| bool use_textures, | bool is_primary_shader, | ||||
| bool is_hair); | bool is_hair); | ||||
| void workbench_material_update_data(WORKBENCH_PrivateData *wpd, | void workbench_material_update_data(WORKBENCH_PrivateData *wpd, | ||||
| Object *ob, | Object *ob, | ||||
| Material *mat, | Material *mat, | ||||
| WORKBENCH_MaterialData *data); | WORKBENCH_MaterialData *data); | ||||
| uint workbench_material_get_hash(WORKBENCH_MaterialData *material_template, bool is_ghost); | uint workbench_material_get_hash(WORKBENCH_MaterialData *material_template, bool is_ghost); | ||||
| int workbench_material_get_composite_shader_index(WORKBENCH_PrivateData *wpd); | int workbench_material_get_composite_shader_index(WORKBENCH_PrivateData *wpd); | ||||
| int workbench_material_get_prepass_shader_index(WORKBENCH_PrivateData *wpd, | int workbench_material_get_prepass_shader_index(WORKBENCH_PrivateData *wpd, | ||||
| bool use_textures, | bool is_primary_shader, | ||||
| bool is_hair); | bool is_hair); | ||||
| int workbench_material_get_accum_shader_index(WORKBENCH_PrivateData *wpd, | int workbench_material_get_accum_shader_index(WORKBENCH_PrivateData *wpd, | ||||
| bool use_textures, | bool is_primary_shader, | ||||
| bool is_hair); | bool is_hair); | ||||
| void workbench_material_shgroup_uniform(WORKBENCH_PrivateData *wpd, | void workbench_material_shgroup_uniform(WORKBENCH_PrivateData *wpd, | ||||
| DRWShadingGroup *grp, | DRWShadingGroup *grp, | ||||
| WORKBENCH_MaterialData *material, | WORKBENCH_MaterialData *material, | ||||
| Object *ob, | Object *ob, | ||||
| const bool use_metallic, | const bool use_metallic, | ||||
| const bool deferred, | const bool deferred, | ||||
| const int interp); | const int interp); | ||||
| ▲ Show 20 Lines • Show All 45 Lines • Show Last 20 Lines | |||||