Blender  V2.93
Classes | Typedefs | Functions
draw_cache_impl_hair.c File Reference

Hair API for render engines. More...

#include <string.h>
#include "MEM_guardedalloc.h"
#include "BLI_math_base.h"
#include "BLI_math_vector.h"
#include "BLI_utildefines.h"
#include "DNA_hair_types.h"
#include "DNA_object_types.h"
#include "BKE_hair.h"
#include "GPU_batch.h"
#include "GPU_texture.h"
#include "draw_cache_impl.h"
#include "draw_hair_private.h"

Go to the source code of this file.

Classes

struct  HairBatchCache
 

Typedefs

typedef struct HairBatchCache HairBatchCache
 

Functions

static void hair_batch_cache_clear (Hair *hair)
 
static bool hair_batch_cache_valid (Hair *hair)
 
static void hair_batch_cache_init (Hair *hair)
 
void DRW_hair_batch_cache_validate (Hair *hair)
 
static HairBatchCachehair_batch_cache_get (Hair *hair)
 
void DRW_hair_batch_cache_dirty_tag (Hair *hair, int mode)
 
void DRW_hair_batch_cache_free (Hair *hair)
 
static void ensure_seg_pt_count (Hair *hair, ParticleHairCache *hair_cache)
 
static void hair_batch_cache_fill_segments_proc_pos (Hair *hair, GPUVertBufRaw *attr_step)
 
static void hair_batch_cache_ensure_procedural_pos (Hair *hair, ParticleHairCache *cache)
 
static void hair_batch_cache_fill_strands_data (Hair *hair, GPUVertBufRaw *data_step, GPUVertBufRaw *seg_step)
 
static void hair_batch_cache_ensure_procedural_strand_data (Hair *hair, ParticleHairCache *cache)
 
static void hair_batch_cache_ensure_procedural_final_points (ParticleHairCache *cache, int subdiv)
 
static void hair_batch_cache_fill_segments_indices (Hair *hair, const int res, GPUIndexBufBuilder *elb)
 
static void hair_batch_cache_ensure_procedural_indices (Hair *hair, ParticleHairCache *cache, int thickness_res, int subdiv)
 
bool hair_ensure_procedural_data (Object *object, ParticleHairCache **r_hair_cache, int subdiv, int thickness_res)
 
int DRW_hair_material_count_get (Hair *hair)
 

Detailed Description

Hair API for render engines.

Definition in file draw_cache_impl_hair.c.

Typedef Documentation

◆ HairBatchCache

Function Documentation

◆ DRW_hair_batch_cache_dirty_tag()

void DRW_hair_batch_cache_dirty_tag ( Hair hair,
int  mode 
)

◆ DRW_hair_batch_cache_free()

void DRW_hair_batch_cache_free ( Hair hair)

Definition at line 118 of file draw_cache_impl_hair.c.

References Hair::batch_cache, hair_batch_cache_clear(), and MEM_SAFE_FREE.

Referenced by DRW_engines_register().

◆ DRW_hair_batch_cache_validate()

void DRW_hair_batch_cache_validate ( Hair hair)

◆ DRW_hair_material_count_get()

int DRW_hair_material_count_get ( Hair hair)

Definition at line 348 of file draw_cache_impl_hair.c.

References max_ii(), and Hair::totcol.

Referenced by DRW_cache_object_material_count_get().

◆ ensure_seg_pt_count()

static void ensure_seg_pt_count ( Hair hair,
ParticleHairCache hair_cache 
)
static

◆ hair_batch_cache_clear()

static void hair_batch_cache_clear ( Hair hair)
static

◆ hair_batch_cache_ensure_procedural_final_points()

static void hair_batch_cache_ensure_procedural_final_points ( ParticleHairCache cache,
int  subdiv 
)
static

◆ hair_batch_cache_ensure_procedural_indices()

static void hair_batch_cache_ensure_procedural_indices ( Hair hair,
ParticleHairCache cache,
int  thickness_res,
int  subdiv 
)
static

◆ hair_batch_cache_ensure_procedural_pos()

static void hair_batch_cache_ensure_procedural_pos ( Hair hair,
ParticleHairCache cache 
)
static

◆ hair_batch_cache_ensure_procedural_strand_data()

static void hair_batch_cache_ensure_procedural_strand_data ( Hair hair,
ParticleHairCache cache 
)
static

◆ hair_batch_cache_fill_segments_indices()

static void hair_batch_cache_fill_segments_indices ( Hair hair,
const int  res,
GPUIndexBufBuilder elb 
)
static

◆ hair_batch_cache_fill_segments_proc_pos()

static void hair_batch_cache_fill_segments_proc_pos ( Hair hair,
GPUVertBufRaw attr_step 
)
static

◆ hair_batch_cache_fill_strands_data()

static void hair_batch_cache_fill_strands_data ( Hair hair,
GPUVertBufRaw data_step,
GPUVertBufRaw seg_step 
)
static

◆ hair_batch_cache_get()

static HairBatchCache* hair_batch_cache_get ( Hair hair)
static

◆ hair_batch_cache_init()

static void hair_batch_cache_init ( Hair hair)
static

◆ hair_batch_cache_valid()

static bool hair_batch_cache_valid ( Hair hair)
static

Definition at line 59 of file draw_cache_impl_hair.c.

References Hair::batch_cache, and HairBatchCache::is_dirty.

Referenced by DRW_hair_batch_cache_validate().

◆ hair_ensure_procedural_data()

bool hair_ensure_procedural_data ( Object object,
ParticleHairCache **  r_hair_cache,
int  subdiv,
int  thickness_res 
)