36 matpool->
next =
nullptr;
38 if (matpool->
ubo ==
nullptr) {
59 float r_rot_scale[2][2],
100 switch (color_type) {
108 gp_style = &gp_style_tmp;
113 gp_style_tmp = dna::shallow_copy(*gp_style);
114 gp_style = &gp_style_tmp;
130 gp_style = &gp_style_tmp;
141 gp_style = &gp_style_tmp;
151 gp_style = &gp_style_tmp;
166 const bool is_vertex_mode)
191 for (
int i = 0;
i < mat_len;
i++) {
312 for (
int i = 0;
i < pool_id;
i++) {
313 matpool = matpool->
next;
316 *r_ubo_mat = matpool->
ubo;
318 *r_tex_fill = matpool->
tex_fill[mat_id];
337 if (lightpool->
ubo ==
nullptr) {
357 gp_light[1].color[0] = -1.0f;
364 return 1.0f / (4.0f *
M_PI);
382 float (*mat)[4] =
reinterpret_cast<float (*)[4]
>(&gp_light->right);
385 copy_m4_m4(mat, ob->world_to_object().ptr());
386 gp_light->type = GP_LIGHT_TYPE_SPOT;
387 gp_light->spot_size = cosf(light.spotsize * 0.5f);
388 gp_light->spot_blend = (1.0f - gp_light->spot_size) * light.spotblend;
392 normalize_m4_m4(mat, ob->object_to_world().ptr());
394 gp_light->type = GP_LIGHT_TYPE_SPOT;
395 gp_light->spot_size = cosf(M_PI_2);
396 gp_light->spot_blend = (1.0f - gp_light->spot_size) * 1.0f;
399 normalize_v3_v3(gp_light->forward, ob->object_to_world().ptr()[2]);
400 gp_light->type = GP_LIGHT_TYPE_SUN;
403 gp_light->type = GP_LIGHT_TYPE_POINT;
405 copy_v4_v4(gp_light->position, ob->object_to_world().location());
413 gp_light[1].color[0] = -1.0f;
421 if (lightpool ==
nullptr) {
blender::gpu::Texture * BKE_image_get_gpu_texture(Image *image, ImageUser *iuser)
General operations, lookup, etc. for materials.
MaterialGPencilStyle * BKE_gpencil_material_settings(Object *ob, short act)
int BKE_object_material_used_with_fallback_eval(const Object &ob)
void translate_m4(float mat[4][4], float Tx, float Ty, float Tz)
void rescale_m4(float mat[4][4], const float scale[3])
void rotate_m4(float mat[4][4], char axis, float angle)
void unit_m4(float m[4][4])
MINLINE void copy_v4_v4(float r[4], const float a[4])
MINLINE void swap_v4_v4(float a[4], float b[4])
MINLINE void add_v3_fl(float r[3], float f)
MINLINE void clamp_v3(float vec[3], float min, float max)
MINLINE void copy_v2_v2(float r[2], const float a[2])
MINLINE void mul_v3_fl(float r[3], float f)
MINLINE void copy_v3_v3(float r[3], const float a[3])
MINLINE void copy_v4_fl(float r[4], float f)
void * BLI_memblock_alloc(BLI_memblock *mblk) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
@ GP_MATERIAL_STROKE_STYLE_SOLID
@ GP_MATERIAL_STROKE_STYLE_TEXTURE
@ GP_MATERIAL_FOLLOW_PATH
@ GP_MATERIAL_FOLLOW_FIXED
@ GP_MATERIAL_DISABLE_STENCIL
@ GP_MATERIAL_IS_STROKE_HOLDOUT
@ GP_MATERIAL_IS_FILL_HOLDOUT
@ GP_MATERIAL_GRADIENT_RADIAL
@ GP_MATERIAL_FILL_STYLE_GRADIENT
@ GP_MATERIAL_FILL_STYLE_TEXTURE
@ GP_MATERIAL_FILL_STYLE_SOLID
@ V3D_SHADING_TEXTURE_COLOR
@ V3D_SHADING_VERTEX_COLOR
@ V3D_SHADING_MATERIAL_COLOR
@ V3D_SHADING_OBJECT_COLOR
@ V3D_SHADING_RANDOM_COLOR
@ V3D_SHADING_SINGLE_COLOR
T & DRW_object_get_data_for_drawing(const Object &object)
#define GPENCIL_MATERIAL_BUFFER_LEN
#define GPENCIL_LIGHT_BUFFER_LEN
@ GP_STROKE_TEXTURE_PREMUL
@ GP_STROKE_ALIGNMENT_STROKE
@ GP_STROKE_ALIGNMENT_OBJECT
@ GP_FILL_GRADIENT_RADIAL
@ GP_STROKE_ALIGNMENT_FIXED
void gpencil_light_ambient_add(LightPool *lightpool, const float color[3])
static float light_power_get(const Light *la)
static gpu::Texture * gpencil_image_texture_get(::Image *image, bool *r_alpha_premult)
static void gpencil_shade_color(float color[3])
void gpencil_light_pool_populate(LightPool *lightpool, Object *ob)
LightPool * gpencil_light_pool_add(Instance *inst)
static MaterialGPencilStyle * gpencil_viewport_material_overrides(Instance *inst, Object *ob, int color_type, MaterialGPencilStyle *gp_style, const eV3DShadingLightingMode lighting_mode)
void gpencil_material_resources_get(MaterialPool *first_pool, int mat_id, gpu::Texture **r_tex_stroke, gpu::Texture **r_tex_fill, gpu::UniformBuf **r_ubo_mat)
static MaterialPool * gpencil_material_pool_add(Instance *inst)
static void gpencil_uv_transform_get(const float ofs[2], const float scale[2], const float rotation, float r_rot_scale[2][2], float r_offset[2])
LightPool * gpencil_light_pool_create(Instance *inst, Object *)
MaterialPool * gpencil_material_pool_create(Instance *inst, Object *ob, int *ofs, const bool is_vertex_mode)
MatBase< T, NumCol, NumRow > scale(const MatBase< T, NumCol, NumRow > &mat, const VectorT &scale)
VecBase< float, 3 > float3
LightPool * last_light_pool
struct BLI_memblock * gp_material_pool
MaterialPool * last_material_pool
float v3d_single_color[3]
struct BLI_memblock * gp_light_pool
gpLight light_data[GPENCIL_LIGHT_BUFFER_LEN]
gpu::Texture * tex_fill[GPENCIL_MATERIAL_BUFFER_LEN]
gpu::Texture * tex_stroke[GPENCIL_MATERIAL_BUFFER_LEN]
gpMaterial mat_data[GPENCIL_MATERIAL_BUFFER_LEN]