Blender
V3.3
|
#include "workbench_private.h"
#include "BLI_memblock.h"
#include "BKE_image.h"
#include "BKE_node.h"
#include "BLI_dynstr.h"
#include "BLI_hash.h"
#include "DNA_mesh_types.h"
#include "DNA_node_types.h"
#include "GPU_uniform_buffer.h"
#include "ED_uvedit.h"
Go to the source code of this file.
Macros | |
#define | HSV_SATURATION 0.5 |
#define | HSV_VALUE 0.8 |
Functions | |
void | workbench_material_ubo_data (WORKBENCH_PrivateData *wpd, Object *ob, Material *mat, WORKBENCH_UBO_Material *data, eV3DShadingColorType color_type) |
BLI_INLINE Material * | workbench_object_material_get (Object *ob, int mat_nr) |
BLI_INLINE void | workbench_material_get_image (Object *ob, int mat_nr, Image **r_image, ImageUser **r_iuser, eGPUSamplerState *r_sampler) |
BLI_INLINE bool | workbench_material_chunk_select (WORKBENCH_PrivateData *wpd, uint32_t id, uint32_t *r_mat_id) |
DRWShadingGroup * | workbench_material_setup_ex (WORKBENCH_PrivateData *wpd, Object *ob, int mat_nr, eV3DShadingColorType color_type, eWORKBENCH_DataType datatype, bool *r_transp) |
DRWShadingGroup * | workbench_image_setup_ex (WORKBENCH_PrivateData *wpd, Object *ob, int mat_nr, Image *ima, ImageUser *iuser, eGPUSamplerState sampler, eWORKBENCH_DataType datatype) |
#define HSV_SATURATION 0.5 |
Definition at line 25 of file workbench_materials.c.
#define HSV_VALUE 0.8 |
Definition at line 26 of file workbench_materials.c.
DRWShadingGroup* workbench_image_setup_ex | ( | WORKBENCH_PrivateData * | wpd, |
Object * | ob, | ||
int | mat_nr, | ||
Image * | ima, | ||
ImageUser * | iuser, | ||
eGPUSamplerState | sampler, | ||
eWORKBENCH_DataType | datatype | ||
) |
If ima
is null, search appropriate image node but will fallback to purple texture otherwise.
Definition at line 232 of file workbench_materials.c.
References Image::alpha_mode, BKE_image_get_gpu_texture(), BKE_image_get_gpu_tilemap(), BKE_image_get_gpu_tiles(), BLI_ghash_ensure_p(), DRW_shgroup_create_sub(), DRW_shgroup_uniform_bool_copy(), DRW_shgroup_uniform_float_copy(), DRW_shgroup_uniform_texture(), DRW_shgroup_uniform_texture_ex(), Object::dtx, WORKBENCH_PrivateData::dummy_image_tx, IMA_ALPHA_PREMUL, IMA_SRC_TILED, WORKBENCH_Prepass::image_shgrp, WORKBENCH_Prepass::image_tiled_shgrp, WORKBENCH_Prepass::material_hash, NULL, OB_DRAW_IN_FRONT, WORKBENCH_PrivateData::prepass, sampler(), WORKBENCH_PrivateData::shading, Image::source, tex, workbench_material_get_image(), and View3DShading::xray_alpha.
Referenced by workbench_material_setup_ex().
BLI_INLINE bool workbench_material_chunk_select | ( | WORKBENCH_PrivateData * | wpd, |
uint32_t | id, | ||
uint32_t * | r_mat_id | ||
) |
Definition at line 120 of file workbench_materials.c.
References BLI_memblock_alloc(), BLI_memblock_elem_get(), WORKBENCH_PrivateData::material_chunk_count, WORKBENCH_PrivateData::material_chunk_curr, WORKBENCH_PrivateData::material_ubo, WORKBENCH_PrivateData::material_ubo_curr, WORKBENCH_PrivateData::material_ubo_data, WORKBENCH_PrivateData::material_ubo_data_curr, and workbench_material_ubo_alloc().
Referenced by workbench_material_setup_ex().
BLI_INLINE void workbench_material_get_image | ( | Object * | ob, |
int | mat_nr, | ||
Image ** | r_image, | ||
ImageUser ** | r_iuser, | ||
eGPUSamplerState * | r_sampler | ||
) |
Definition at line 88 of file workbench_materials.c.
References BLI_assert_msg, ED_object_get_active_image(), NodeTexImage::extension, GPU_SAMPLER_CLAMP_BORDER, GPU_SAMPLER_FILTER, GPU_SAMPLER_REPEAT, NodeTexImage::interpolation, NodeTexEnvironment::interpolation, node, NULL, SET_FLAG_FROM_TEST, SH_NODE_TEX_ENVIRONMENT, SH_NODE_TEX_IMAGE, SHD_IMAGE_EXTENSION_CLIP, SHD_IMAGE_EXTENSION_REPEAT, and SHD_INTERP_CLOSEST.
Referenced by workbench_image_setup_ex(), and workbench_material_setup_ex().
DRWShadingGroup* workbench_material_setup_ex | ( | WORKBENCH_PrivateData * | wpd, |
Object * | ob, | ||
int | mat_nr, | ||
eV3DShadingColorType | color_type, | ||
eWORKBENCH_DataType | datatype, | ||
bool * | r_transp | ||
) |
Definition at line 146 of file workbench_materials.c.
References Material::a, BLI_assert, BLI_ghash_ensure_p(), Object::color, View3DShading::color_type, WORKBENCH_Prepass::common_shgrp, DRW_object_resource_id_get(), DRW_shgroup_create_sub(), DRW_shgroup_uniform_block, DRW_shgroup_uniform_int_copy(), Object::dtx, ELEM, WORKBENCH_Prepass::material_hash, WORKBENCH_PrivateData::material_index, WORKBENCH_PrivateData::material_ubo_curr, WORKBENCH_PrivateData::material_ubo_data_curr, NULL, OB_DRAW_IN_FRONT, WORKBENCH_PrivateData::prepass, sampler(), WORKBENCH_PrivateData::shading, V3D_SHADING_MATERIAL_COLOR, V3D_SHADING_TEXTURE_COLOR, V3D_SHADING_VERTEX_COLOR, WORKBENCH_Prepass::vcol_shgrp, workbench_image_setup_ex(), workbench_material_chunk_select(), workbench_material_get_image(), workbench_material_ubo_data(), workbench_object_material_get(), and View3DShading::xray_alpha.
void workbench_material_ubo_data | ( | WORKBENCH_PrivateData * | wpd, |
Object * | ob, | ||
Material * | mat, | ||
WORKBENCH_UBO_Material * | data, | ||
eV3DShadingColorType | color_type | ||
) |
Definition at line 28 of file workbench_materials.c.
References Material::a, BLI_ghashutil_strhash_p_murmur(), BLI_hash_int_01(), Object::color, copy_v3_fl(), copy_v3_v3(), data, Library::filepath, hash, HSV_SATURATION, hsv_to_rgb_v(), HSV_VALUE, hue, Object::id, ID::lib, Material::metallic, metallic, ID::name, Material::r, usdtokens::roughness(), Material::roughness, WORKBENCH_PrivateData::shading, View3DShading::single_color, sqrtf, unit_float_to_uchar_clamp(), V3D_SHADING_MATERIAL_COLOR, V3D_SHADING_OBJECT_COLOR, V3D_SHADING_RANDOM_COLOR, V3D_SHADING_SINGLE_COLOR, V3D_SHADING_TEXTURE_COLOR, V3D_SHADING_VERTEX_COLOR, and View3DShading::xray_alpha.
Referenced by workbench_material_setup_ex(), workbench_private_data_init(), and workbench_volume_material_color().
BLI_INLINE Material* workbench_object_material_get | ( | Object * | ob, |
int | mat_nr | ||
) |
Definition at line 79 of file workbench_materials.c.
References BKE_material_default_empty(), BKE_object_material_get_eval(), and NULL.
Referenced by workbench_material_setup_ex().