Blender  V3.3
gpencil_draw_data.c File Reference
#include "DRW_render.h"
#include "DNA_light_types.h"
#include "BKE_image.h"
#include "BLI_hash.h"
#include "BLI_math_color.h"
#include "BLI_memblock.h"
#include "GPU_uniform_buffer.h"
#include "IMB_imbuf_types.h"
#include "gpencil_engine.h"

Go to the source code of this file.

Functions

Material
static GPENCIL_MaterialPoolgpencil_material_pool_add (GPENCIL_PrivateData *pd)
 
static struct GPUTexturegpencil_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)
 
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 *UNUSED(ob))
 
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 (void)
 

Function Documentation

◆ gpencil_image_texture_get()

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

◆ gpencil_light_ambient_add()

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

◆ gpencil_light_pool_add()

GPENCIL_LightPool* gpencil_light_pool_add ( GPENCIL_PrivateData pd)

◆ gpencil_light_pool_create()

GPENCIL_LightPool* gpencil_light_pool_create ( GPENCIL_PrivateData pd,
Object UNUSEDob 
)

◆ gpencil_light_pool_free()

void gpencil_light_pool_free ( void storage)

◆ gpencil_light_pool_populate()

void gpencil_light_pool_populate ( GPENCIL_LightPool lightpool,
Object ob 
)

◆ gpencil_material_pool_add()

static GPENCIL_MaterialPool* gpencil_material_pool_add ( GPENCIL_PrivateData pd)
static

◆ gpencil_material_pool_create()

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

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 165 of file gpencil_draw_data.c.

References MaterialGPencilStyle::alignment_mode, gpMaterial::alignment_rot, MaterialGPencilStyle::alignment_rotation, BKE_gpencil_material_settings(), BKE_object_material_count_eval(), copy_v4_v4(), cosf, Object::data, 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_VERTEX_MODE, 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, NULL, blender::compositor::pool, 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 GPENCIL_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 79 of file gpencil_draw_data.c.

References add_v3_fl(), CLAMP3, and color.

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_ViewLayerData* GPENCIL_view_layer_data_ensure ( void  )

◆ gpencil_view_layer_data_free()

static void gpencil_view_layer_data_free ( void storage)
static

◆ gpencil_viewport_material_overrides()

static MaterialGPencilStyle* gpencil_viewport_material_overrides ( GPENCIL_PrivateData pd,
Object ob,
int  color_type,
MaterialGPencilStyle gp_style,
const eV3DShadingLightingMode  lighting_mode 
)
static

◆ light_power_get()

static float light_power_get ( const Light la)
static

Definition at line 359 of file gpencil_draw_data.c.

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

Referenced by gpencil_light_pool_populate().