Blender  V3.3
workbench_effect_outline.c
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later
2  * Copyright 2020 Blender Foundation. */
3 
12 #include "DRW_render.h"
13 
14 #include "workbench_engine.h"
15 #include "workbench_private.h"
16 
18 {
19  WORKBENCH_PassList *psl = data->psl;
20  WORKBENCH_PrivateData *wpd = data->stl->wpd;
22  struct GPUShader *sh;
23  DRWShadingGroup *grp;
24 
25  if (OBJECT_OUTLINE_ENABLED(wpd)) {
28 
30 
31  grp = DRW_shgroup_create(sh, psl->outline_ps);
32  DRW_shgroup_uniform_texture(grp, "objectIdBuffer", wpd->object_id_tx);
33  DRW_shgroup_uniform_texture(grp, "depthBuffer", dtxl->depth);
34  DRW_shgroup_uniform_block(grp, "world_data", wpd->world_ubo);
36  }
37  else {
38  psl->outline_ps = NULL;
39  }
40 }
@ DRW_STATE_WRITE_COLOR
Definition: DRW_render.h:303
@ DRW_STATE_BLEND_ALPHA_PREMUL
Definition: DRW_render.h:330
#define DRW_PASS_CREATE(pass, state)
Definition: DRW_render.h:690
#define DRW_shgroup_uniform_block(shgroup, name, ubo)
Definition: DRW_render.h:651
struct GPUShader GPUShader
Definition: GPU_shader.h:20
DefaultTextureList * DRW_viewport_texture_list_get(void)
Definition: draw_manager.c:638
void DRW_shgroup_uniform_texture(DRWShadingGroup *shgroup, const char *name, const GPUTexture *tex)
void DRW_shgroup_call_procedural_triangles(DRWShadingGroup *shgroup, Object *ob, uint tri_count)
DRWShadingGroup * DRW_shgroup_create(struct GPUShader *shader, DRWPass *pass)
const int state
ccl_gpu_kernel_postfix ccl_global float int int int int sh
struct GPUTexture * depth
struct DRWPass * outline_ps
struct GPUUniformBuf * world_ubo
struct GPUTexture * object_id_tx
void workbench_outline_cache_init(WORKBENCH_Data *data)
#define OBJECT_OUTLINE_ENABLED(wpd)
GPUShader * workbench_shader_outline_get(void)