Blender V4.3
gpencil_draw_data.cc File Reference
#include "DRW_render.hh"
#include "DNA_light_types.h"
#include "BKE_image.hh"
#include "BLI_hash.h"
#include "BLI_math_color.h"
#include "BLI_memblock.h"
#include "GPU_uniform_buffer.hh"
#include "IMB_imbuf_types.hh"
#include "gpencil_engine.h"

Go to the source code of this file.

Functions

Material
static GPENCIL_MaterialPoolgpencil_material_pool_add (GPENCIL_PrivateData *pd)
 
static GPUTexture * gpencil_image_texture_get (Image *image, bool *r_alpha_premult)
 
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])
 
static void gpencil_shade_color (float color[3])
 
static MaterialGPencilStylegpencil_viewport_material_overrides (GPENCIL_PrivateData *pd, Object *ob, int color_type, MaterialGPencilStyle *gp_style, const eV3DShadingLightingMode lighting_mode)
 
GPENCIL_MaterialPoolgpencil_material_pool_create (GPENCIL_PrivateData *pd, Object *ob, int *ofs, const bool is_vertex_mode)
 
void gpencil_material_resources_get (GPENCIL_MaterialPool *first_pool, int mat_id, GPUTexture **r_tex_stroke, GPUTexture **r_tex_fill, GPUUniformBuf **r_ubo_mat)
 
Lights
GPENCIL_LightPoolgpencil_light_pool_add (GPENCIL_PrivateData *pd)
 
void gpencil_light_ambient_add (GPENCIL_LightPool *lightpool, const float color[3])
 
static float light_power_get (const Light *la)
 
void gpencil_light_pool_populate (GPENCIL_LightPool *lightpool, Object *ob)
 
GPENCIL_LightPoolgpencil_light_pool_create (GPENCIL_PrivateData *pd, Object *)
 
void gpencil_material_pool_free (void *storage)
 
void gpencil_light_pool_free (void *storage)
 
View Layer Data
static void gpencil_view_layer_data_free (void *storage)
 
GPENCIL_ViewLayerDataGPENCIL_view_layer_data_ensure ()
 

Function Documentation

◆ gpencil_image_texture_get()

static GPUTexture * gpencil_image_texture_get ( Image * image,
bool * r_alpha_premult )
static

Definition at line 42 of file gpencil_draw_data.cc.

References BKE_image_get_gpu_texture(), and IMA_ALPHA_PREMUL.

Referenced by gpencil_material_pool_create().

◆ gpencil_light_ambient_add()

void gpencil_light_ambient_add ( GPENCIL_LightPool * lightpool,
const float color[3] )

◆ gpencil_light_pool_add()

◆ gpencil_light_pool_create()

GPENCIL_LightPool * gpencil_light_pool_create ( GPENCIL_PrivateData * pd,
Object * ob )

Creates a single pool containing all lights assigned (light linked) for a given object.

Definition at line 415 of file gpencil_draw_data.cc.

References gpencil_light_pool_add(), and GPENCIL_PrivateData::last_light_pool.

◆ gpencil_light_pool_free()

void gpencil_light_pool_free ( void * storage)

◆ gpencil_light_pool_populate()

◆ gpencil_material_pool_add()

◆ gpencil_material_pool_create()

GPENCIL_MaterialPool * gpencil_material_pool_create ( GPENCIL_PrivateData * pd,
Object * ob,
int * ofs,
bool is_vertex_mode )

Creates a linked list of material pool containing all materials assigned for a given object. We merge the material pools together if object does not contain a huge amount of materials. Also return an offset to the first material of the object in the UBO.

Definition at line 160 of file gpencil_draw_data.cc.

References MaterialGPencilStyle::alignment_mode, gpMaterial::alignment_rot, MaterialGPencilStyle::alignment_rotation, BKE_gpencil_material_settings(), BKE_object_material_count_eval(), copy_v4_v4(), cosf, gpMaterial::fill_color, gpMaterial::fill_mix_color, MaterialGPencilStyle::fill_rgba, MaterialGPencilStyle::fill_style, gpMaterial::fill_texture_mix, gpMaterial::fill_uv_offset, gpMaterial::fill_uv_rot_scale, gpMaterial::flag, MaterialGPencilStyle::flag, GP_FILL_GRADIENT_RADIAL, GP_FILL_GRADIENT_USE, GP_FILL_HOLDOUT, GP_FILL_TEXTURE_CLIP, GP_FILL_TEXTURE_PREMUL, GP_FILL_TEXTURE_USE, GP_MATERIAL_DISABLE_STENCIL, GP_MATERIAL_FILL_STYLE_GRADIENT, GP_MATERIAL_FILL_STYLE_TEXTURE, GP_MATERIAL_FLIP_FILL, GP_MATERIAL_FOLLOW_FIXED, GP_MATERIAL_FOLLOW_OBJ, GP_MATERIAL_FOLLOW_PATH, GP_MATERIAL_GRADIENT_RADIAL, GP_MATERIAL_IS_FILL_HOLDOUT, GP_MATERIAL_IS_STROKE_HOLDOUT, GP_MATERIAL_MODE_DOT, GP_MATERIAL_MODE_LINE, GP_MATERIAL_STROKE_STYLE_TEXTURE, GP_MATERIAL_TEX_CLAMP, GP_STROKE_ALIGNMENT_FIXED, GP_STROKE_ALIGNMENT_OBJECT, GP_STROKE_ALIGNMENT_STROKE, GP_STROKE_DOTS, GP_STROKE_HOLDOUT, GP_STROKE_OVERLAP, GP_STROKE_TEXTURE_PREMUL, GP_STROKE_TEXTURE_USE, gpencil_image_texture_get(), GPENCIL_MATERIAL_BUFFER_LEN, gpencil_material_pool_add(), gpencil_uv_transform_get(), gpencil_viewport_material_overrides(), MaterialGPencilStyle::gradient_type, MaterialGPencilStyle::ima, GPENCIL_PrivateData::last_material_pool, View3DShading::light, max_ii(), MaterialGPencilStyle::mix_factor, MaterialGPencilStyle::mix_rgba, MaterialGPencilStyle::mix_stroke_factor, MaterialGPencilStyle::mode, View3D::shading, MaterialGPencilStyle::sima, sinf, gpMaterial::stroke_color, MaterialGPencilStyle::stroke_rgba, MaterialGPencilStyle::stroke_style, gpMaterial::stroke_texture_mix, gpMaterial::stroke_u_scale, swap_v4_v4(), MaterialGPencilStyle::texture_angle, MaterialGPencilStyle::texture_offset, MaterialGPencilStyle::texture_pixsize, MaterialGPencilStyle::texture_scale, GPENCIL_MaterialPool::used_count, GPENCIL_PrivateData::v3d, GPENCIL_PrivateData::v3d_color_type, V3D_LIGHTING_STUDIO, and V3D_SHADING_VERTEX_COLOR.

Referenced by grease_pencil_object_cache_populate().

◆ gpencil_material_pool_free()

void gpencil_material_pool_free ( void * storage)

◆ gpencil_material_resources_get()

void gpencil_material_resources_get ( GPENCIL_MaterialPool * first_pool,
int mat_id,
GPUTexture ** r_tex_stroke,
GPUTexture ** r_tex_fill,
GPUUniformBuf ** r_ubo_mat )

◆ gpencil_shade_color()

static void gpencil_shade_color ( float color[3])
static

Definition at line 74 of file gpencil_draw_data.cc.

References add_v3_fl(), and CLAMP3.

Referenced by gpencil_viewport_material_overrides().

◆ gpencil_uv_transform_get()

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] )
static

◆ GPENCIL_view_layer_data_ensure()

◆ gpencil_view_layer_data_free()

◆ gpencil_viewport_material_overrides()

◆ light_power_get()

static float light_power_get ( const Light * la)
static

Definition at line 359 of file gpencil_draw_data.cc.

References ELEM, LA_AREA, LA_LOCAL, LA_SPOT, M_PI, and Light::type.

Referenced by gpencil_light_pool_populate().