Blender  V3.3
Functions | Variables
workbench_effect_antialiasing.c File Reference
#include "ED_screen.h"
#include "BLI_jitter_2d.h"
#include "smaa_textures.h"
#include "workbench_private.h"

Go to the source code of this file.

Functions

static void workbench_taa_jitter_init_order (float(*table)[2], int num)
 
static void workbench_taa_jitter_init (void)
 
int workbench_antialiasing_sample_count_get (WORKBENCH_PrivateData *wpd)
 
void workbench_antialiasing_view_updated (WORKBENCH_Data *vedata)
 
static bool workbench_in_front_history_needed (WORKBENCH_Data *vedata)
 
void workbench_antialiasing_engine_init (WORKBENCH_Data *vedata)
 
static float filter_blackman_harris (float x, const float width)
 
static void workbench_antialiasing_weights_get (const float offset[2], float r_weights[9], float *r_weight_sum)
 
void workbench_antialiasing_cache_init (WORKBENCH_Data *vedata)
 
bool workbench_antialiasing_setup (WORKBENCH_Data *vedata)
 
void workbench_antialiasing_draw_pass (WORKBENCH_Data *vedata)
 

Variables

struct {
   bool   init
 
   float   jitter_5 [5][2]
 
   float   jitter_8 [8][2]
 
   float   jitter_11 [11][2]
 
   float   jitter_16 [16][2]
 
   float   jitter_32 [32][2]
 
e_data = {false}
 

Detailed Description

Anti-Aliasing:

We use SMAA (Smart Morphological Anti-Aliasing) as a fast antialiasing solution.

If the viewport stays static, the engine ask for multiple redraw and will progressively converge to a much more accurate image without aliasing. We call this one TAA (Temporal Anti-Aliasing).

This is done using an accumulation buffer and a final pass that will output the final color to the scene buffer. We softly blend between SMAA and TAA to avoid really harsh transitions.

Definition in file workbench_effect_antialiasing.c.

Function Documentation

◆ filter_blackman_harris()

static float filter_blackman_harris ( float  x,
const float  width 
)
static

Definition at line 259 of file workbench_effect_antialiasing.c.

References clamp_f(), cosf, M_PI, width, and x.

Referenced by workbench_antialiasing_weights_get().

◆ workbench_antialiasing_cache_init()

void workbench_antialiasing_cache_init ( WORKBENCH_Data vedata)

◆ workbench_antialiasing_draw_pass()

void workbench_antialiasing_draw_pass ( WORKBENCH_Data vedata)

◆ workbench_antialiasing_engine_init()

void workbench_antialiasing_engine_init ( WORKBENCH_Data vedata)

Definition at line 146 of file workbench_effect_antialiasing.c.

References WORKBENCH_FramebufferList::antialiasing_fb, WORKBENCH_FramebufferList::antialiasing_in_front_fb, AREATEX_HEIGHT, AREATEX_WIDTH, areaTexBytes, copy_m4_m4(), WORKBENCH_TextureList::depth_buffer_in_front_tx, WORKBENCH_TextureList::depth_buffer_tx, DRW_TEX_FILTER, DRW_texture_ensure_fullscreen_2d(), DRW_TEXTURE_FREE_SAFE, DRW_texture_pool_query_fullscreen(), DRW_view_persmat_get(), equals_m4m4(), WORKBENCH_Data::fbl, GPU_DATA_UBYTE, GPU_DEPTH24_STENCIL8, GPU_R8, GPU_RG8, GPU_RGBA16F, GPU_RGBA8, GPU_texture_create_2d(), GPU_texture_filter_mode(), GPU_texture_update(), WORKBENCH_TextureList::history_buffer_tx, WORKBENCH_PrivateData::is_navigating, WORKBENCH_PrivateData::is_playback, WORKBENCH_PrivateData::last_mat, NULL, WORKBENCH_PrivateData::reset_next_sample, SEARCHTEX_HEIGHT, SEARCHTEX_WIDTH, searchTexBytes, WORKBENCH_TextureList::smaa_area_tx, WORKBENCH_FramebufferList::smaa_edge_fb, WORKBENCH_PrivateData::smaa_edge_tx, WORKBENCH_TextureList::smaa_search_tx, WORKBENCH_FramebufferList::smaa_weight_fb, WORKBENCH_PrivateData::smaa_weight_tx, WORKBENCH_Data::stl, WORKBENCH_PrivateData::taa_sample, WORKBENCH_PrivateData::taa_sample_len, WORKBENCH_PrivateData::taa_sample_len_previous, WORKBENCH_Data::txl, WORKBENCH_PrivateData::valid_history, WORKBENCH_PrivateData::view, WORKBENCH_PrivateData::view_updated, workbench_in_front_history_needed(), workbench_taa_jitter_init(), and WORKBENCH_StorageList::wpd.

Referenced by workbench_engine_init().

◆ workbench_antialiasing_sample_count_get()

int workbench_antialiasing_sample_count_get ( WORKBENCH_PrivateData wpd)

◆ workbench_antialiasing_setup()

bool workbench_antialiasing_setup ( WORKBENCH_Data vedata)

◆ workbench_antialiasing_view_updated()

void workbench_antialiasing_view_updated ( WORKBENCH_Data vedata)

◆ workbench_antialiasing_weights_get()

static void workbench_antialiasing_weights_get ( const float  offset[2],
float  r_weights[9],
float r_weight_sum 
)
static

◆ workbench_in_front_history_needed()

static bool workbench_in_front_history_needed ( WORKBENCH_Data vedata)
static

◆ workbench_taa_jitter_init()

static void workbench_taa_jitter_init ( void  )
static

◆ workbench_taa_jitter_init_order()

static void workbench_taa_jitter_init_order ( float(*)  table[2],
int  num 
)
static

Variable Documentation

◆ 

struct { ... } e_data

◆ init

bool init

◆ jitter_11

float jitter_11[11][2]

Definition at line 31 of file workbench_effect_antialiasing.c.

◆ jitter_16

float jitter_16[16][2]

Definition at line 32 of file workbench_effect_antialiasing.c.

◆ jitter_32

float jitter_32[32][2]

Definition at line 33 of file workbench_effect_antialiasing.c.

◆ jitter_5

float jitter_5[5][2]

Definition at line 29 of file workbench_effect_antialiasing.c.

◆ jitter_8

float jitter_8[8][2]

Definition at line 30 of file workbench_effect_antialiasing.c.