[Bf-blender-cvs] [ea8f7878f6c] soc-2018-npr: Added debug shaders to find problems in f12
Nick Wu
noreply at git.blender.org
Wed Jul 25 10:48:48 CEST 2018
Commit: ea8f7878f6cad888c0e1491d2f243874178e21dc
Author: Nick Wu
Date: Wed Jul 25 16:39:58 2018 +0800
Branches: soc-2018-npr
https://developer.blender.org/rBea8f7878f6cad888c0e1491d2f243874178e21dc
Added debug shaders to find problems in f12
===================================================================
M source/blender/draw/engines/lanpr/lanpr_all.h
M source/blender/draw/engines/lanpr/lanpr_engine.c
M source/blender/draw/engines/lanpr/lanpr_ops.c
===================================================================
diff --git a/source/blender/draw/engines/lanpr/lanpr_all.h b/source/blender/draw/engines/lanpr/lanpr_all.h
index 610317c2316..0ab2c80eccb 100644
--- a/source/blender/draw/engines/lanpr/lanpr_all.h
+++ b/source/blender/draw/engines/lanpr/lanpr_all.h
@@ -66,6 +66,9 @@ typedef struct LANPROneTimeInit {
GPUShader *software_shader;
GPUShader *software_chaining_shader;
+ /* For Debug... */
+ GPUShader *debug_shader;
+
void *ved;
@@ -111,6 +114,9 @@ typedef struct LANPR_PassList {
/* SOFTWARE */
struct DRWPass *software_pass;
+ /* DEBUG */
+ struct DRWPass *debug_pass;
+
} LANPR_PassList;
typedef struct LANPR_FramebufferList {
@@ -161,6 +167,8 @@ typedef struct LANPR_PrivateData {
DRWShadingGroup *dpix_transform_shgrp;
DRWShadingGroup *dpix_preview_shgrp;
+ DRWShadingGroup *debug_shgrp;
+
// moved into line layer.
//DRWShadingGroup *software_shgrp;
@@ -797,3 +805,6 @@ void lanpr_create_atlas_intersection_preview(void *vedata, int begin_index);
void lanpr_dpix_draw_scene(LANPR_TextureList *txl, LANPR_FramebufferList *fbl, LANPR_PassList *psl, LANPR_PrivateData *pd, SceneLANPR *lanpr, GPUFrameBuffer *DefaultFB);
void lanpr_snake_draw_scene(LANPR_TextureList *txl, LANPR_FramebufferList *fbl, LANPR_PassList *psl, LANPR_PrivateData *pd, SceneLANPR *lanpr, GPUFrameBuffer *DefaultFB);
+
+void lanpr_software_draw_scene(void *vedata, GPUFrameBuffer *dfb);
+
diff --git a/source/blender/draw/engines/lanpr/lanpr_engine.c b/source/blender/draw/engines/lanpr/lanpr_engine.c
index 54558abf717..755801b6585 100644
--- a/source/blender/draw/engines/lanpr/lanpr_engine.c
+++ b/source/blender/draw/engines/lanpr/lanpr_engine.c
@@ -41,8 +41,8 @@ extern char datatoc_lanpr_dpix_project_passthrough_vert_glsl[];
extern char datatoc_lanpr_dpix_project_clip_frag_glsl[];
extern char datatoc_lanpr_dpix_preview_frag_glsl[];
extern char datatoc_lanpr_software_passthrough_vert_glsl[];
-
-
+extern char datatoc_gpu_shader_2D_smooth_color_vert_glsl[];
+extern char datatoc_gpu_shader_2D_smooth_color_frag_glsl[];
LANPROneTimeInit OneTime;
@@ -198,6 +198,16 @@ static void lanpr_engine_init(void *ved){
GPU_ATTACHMENT_LEAVE
});
+ /* Debug */
+ if (!OneTime.debug_shader) {
+ OneTime.debug_shader =
+ GPU_shader_create(
+ datatoc_gpu_shader_2D_smooth_color_vert_glsl,
+ datatoc_gpu_shader_2D_smooth_color_frag_glsl,
+ NULL,
+ NULL, NULL);
+ }
+
}
static void lanpr_engine_free(void){
void *ved = OneTime.ved;
@@ -465,6 +475,45 @@ static void lanpr_draw_scene_exec(void *vedata, GPUFrameBuffer *dfb) {
camera = scene->camera;
}
+ //DEBUG, draw a square only
+ {
+ GPU_framebuffer_bind(fbl->software_ms);
+ GPU_framebuffer_clear(fbl->software_ms, clear_bits, lanpr->background_color, clear_depth, clear_stencil);
+
+ psl->debug_pass = psl->software_pass = DRW_pass_create("Debug Pass", DRW_STATE_WRITE_COLOR | DRW_STATE_WRITE_DEPTH | DRW_STATE_DEPTH_LESS_EQUAL);
+ pd->debug_shgrp = DRW_shgroup_create(OneTime.debug_shader, psl->debug_pass);
+
+ static struct GPUBatch *square_batch = NULL;
+ if (!square_batch) {
+ static GPUVertFormat format = { 0 };
+ static struct { uint pos, color; } attr_id;
+ if (format.attr_len == 0) {
+ attr_id.pos = GPU_vertformat_attr_add(&format, "pos", GPU_COMP_F32, 2, GPU_FETCH_FLOAT);
+ attr_id.color = GPU_vertformat_attr_add(&format, "color", GPU_COMP_F32, 4, GPU_FETCH_FLOAT);
+ }
+ GPUVertBuf *vbo = GPU_vertbuf_create_with_format(&format);
+ GPU_vertbuf_data_alloc(vbo, 4);
+
+ float v[4] = { 0 }, c[4] = { 1,1,1,1 };
+ GPU_vertbuf_attr_set(vbo, attr_id.pos, 0, v); GPU_vertbuf_attr_set(vbo, attr_id.color, 0, c);
+ v[0] = 0.9;
+ GPU_vertbuf_attr_set(vbo, attr_id.pos, 1, v); GPU_vertbuf_attr_set(vbo, attr_id.color, 1, c);
+ v[1] = 0.9;
+ GPU_vertbuf_attr_set(vbo, attr_id.pos, 2, v); GPU_vertbuf_attr_set(vbo, attr_id.color, 2, c);
+ v[0] = 0;
+ GPU_vertbuf_attr_set(vbo, attr_id.pos, 3, v); GPU_vertbuf_attr_set(vbo, attr_id.color, 3, c);
+
+ square_batch = GPU_batch_create_ex(GPU_PRIM_LINE_LOOP, vbo, 0, GPU_USAGE_DYNAMIC | GPU_BATCH_OWNS_VBO);
+ }
+ DRW_shgroup_call_add(pd->debug_shgrp, square_batch, NULL);
+ GPU_line_width(3);
+ DRW_draw_pass(psl->debug_pass);
+
+ GPU_framebuffer_blit(fbl->software_ms, 0, dfb, 0, GPU_COLOR_BIT);
+
+ return;//don't draw anything else.
+ }
+
if (lanpr->master_mode == LANPR_MASTER_MODE_DPIX) {
DRW_draw_pass(psl->color_pass);
lanpr_dpix_draw_scene(txl, fbl, psl, stl->g_data, lanpr, dfb);
@@ -477,81 +526,7 @@ static void lanpr_draw_scene_exec(void *vedata, GPUFrameBuffer *dfb) {
elif(lanpr->master_mode == LANPR_MASTER_MODE_SOFTWARE)
{
// should isolate these into a seperate function.
- LANPR_LineLayer* ll;
-
- GPU_framebuffer_bind(fbl->software_ms);
- GPU_framebuffer_clear(fbl->software_ms, clear_bits, lanpr->background_color, clear_depth, clear_stencil);
-
- if (lanpr->render_buffer) {
-
- int texw = GPU_texture_width(txl->ms_resolve_color), texh = GPU_texture_height(txl->ms_resolve_color);;
- pd->output_viewport[2] = scene->r.xsch;
- pd->output_viewport[3] = scene->r.ysch;
- pd->dpix_viewport[2] = texw;
- pd->dpix_viewport[3] = texh;
-
- if (lanpr->enable_chaining && lanpr->render_buffer->ChainDrawBatch) {
- for (ll = lanpr->line_layers.last; ll; ll = ll->prev) {
- LANPR_RenderBuffer* rb;
- psl->software_pass = DRW_pass_create("Software Render Preview", DRW_STATE_WRITE_COLOR | DRW_STATE_WRITE_DEPTH | DRW_STATE_DEPTH_LESS_EQUAL);
- rb = lanpr->render_buffer;
- rb->ChainShgrp = DRW_shgroup_create(OneTime.software_chaining_shader, psl->software_pass);
- DRW_shgroup_uniform_vec4(rb->ChainShgrp, "color", ll->color, 1);
- DRW_shgroup_uniform_vec4(rb->ChainShgrp, "crease_color", ll->crease_color, 1);
- DRW_shgroup_uniform_vec4(rb->ChainShgrp, "material_color", ll->material_color, 1);
- DRW_shgroup_uniform_vec4(rb->ChainShgrp, "edge_mark_color", ll->edge_mark_color, 1);
- DRW_shgroup_uniform_vec4(rb->ChainShgrp, "intersection_color", ll->intersection_color, 1);
- DRW_shgroup_uniform_float(rb->ChainShgrp, "thickness", &ll->thickness, 1);
- DRW_shgroup_uniform_float(rb->ChainShgrp, "thickness_crease", &ll->thickness_crease, 1);
- DRW_shgroup_uniform_float(rb->ChainShgrp, "thickness_material", &ll->thickness_material, 1);
- DRW_shgroup_uniform_float(rb->ChainShgrp, "thickness_edge_mark", &ll->thickness_edge_mark, 1);
- DRW_shgroup_uniform_float(rb->ChainShgrp, "thickness_intersection", &ll->thickness_intersection, 1);
-
- DRW_shgroup_uniform_int(rb->ChainShgrp, "occlusion_level_begin", &ll->qi_begin, 1);
- DRW_shgroup_uniform_int(rb->ChainShgrp, "occlusion_level_end", &ll->qi_end, 1);
-
- DRW_shgroup_uniform_vec4(rb->ChainShgrp, "preview_viewport", stl->g_data->dpix_viewport, 1);
- DRW_shgroup_uniform_vec4(rb->ChainShgrp, "output_viewport", stl->g_data->output_viewport, 1);
-
- float *tld = &lanpr->taper_left_distance, *tls = &lanpr->taper_left_strength,
- *trd = &lanpr->taper_right_distance, *trs = &lanpr->taper_right_strength;
-
- DRW_shgroup_uniform_float(rb->ChainShgrp, "TaperLDist", tld, 1);
- DRW_shgroup_uniform_float(rb->ChainShgrp, "TaperLStrength", tls, 1);
- DRW_shgroup_uniform_float(rb->ChainShgrp, "TaperRDist", lanpr->use_same_taper ? tld : trd, 1);
- DRW_shgroup_uniform_float(rb->ChainShgrp, "TaperRStrength", lanpr->use_same_taper ? tls : trs, 1);
-
- //need to add component enable/disable option.
- DRW_shgroup_call_add(rb->ChainShgrp, lanpr->render_buffer->ChainDrawBatch, NULL);
- // debug purpose
- //DRW_draw_pass(psl->color_pass);
- //DRW_draw_pass(psl->color_pass);
- DRW_draw_pass(psl->software_pass);
- }
- }elif(!lanpr->enable_chaining) {
- for (ll = lanpr->line_layers.last; ll && ll->batch; ll = ll->prev) {
- psl->software_pass = DRW_pass_create("Software Render Preview", DRW_STATE_WRITE_COLOR | DRW_STATE_WRITE_DEPTH | DRW_STATE_DEPTH_LESS_EQUAL);
- ll->shgrp = DRW_shgroup_create(OneTime.software_shader, psl->software_pass);
- DRW_shgroup_uniform_vec4(ll->shgrp, "color", ll->color, 1);
- DRW_shgroup_uniform_vec4(ll->shgrp, "crease_color", ll->crease_color, 1);
- DRW_shgroup_uniform_vec4(ll->shgrp, "material_color", ll->material_color, 1);
- DRW_shgroup_uniform_vec4(ll->shgrp, "edge_mark_color", ll->edge_mark_color, 1);
- DRW_shgroup_uniform_vec4(ll->shgrp, "intersection_color", ll->intersection_color, 1);
- DRW_shgroup_uniform_float(ll->shgrp, "thickness", &ll->thickness, 1);
- DRW_shgroup_uniform_float(ll->shgrp, "thickness_crease", &ll->thickness_crease, 1);
- DRW_shgroup_uniform_float(ll->shgrp, "thickness_material", &ll->thickness_material, 1);
- DRW_shgroup_uniform_float(ll->shgrp, "thickness_edge_mark", &ll->thickness_edge_mark, 1);
- DRW_shgroup_uniform_float(ll->shgrp, "thickness_intersection", &ll->thickness_intersection, 1);
- DRW_shgroup_uniform_vec4(ll->shgrp, "preview_viewport", stl->g_data->dpix_viewport, 1);
- DRW_shgroup_uniform_vec4(ll->shgrp, "output_viewport", stl->g_data->output_viewport, 1);
- DRW_shgroup_call_add(ll->shgrp, ll->batch, NULL);
- DRW_draw_pass(psl->software_pass);
- }
- }
- }
-
- GPU_framebuffer_blit(fbl->software_ms, 0, dfb, 0, GPU_COLOR_BIT);
-
+ lanpr_software_draw_scene(vedata, dfb);
}
}
@@ -603,7 +578,7 @@ static void lanpr_render_to_image(LANPR_Data *vedata, RenderEngine *engine, stru
DRW_render_object_iter(vedata, engine, draw_ctx->depsgraph, LANPR_render_cache);
lanpr_cache_finish(vedata);
- float clear_col[4] = { 0.0f, 0.0f, 0.0f, 0.0f };
+ float clear_col[4] = { 0.0f, 0.0f, 0.0f, 1.0f };
float clear_depth = 1.0f;
uint clear_stencil = 0xFF;
GPUFrameBufferBits clear_bits = GPU_DEPTH_BIT | GPU_COLOR_BIT;
diff --git a/source/blender/draw/engines/lanpr/lanpr_ops.c b/source/blender/draw/engines/lanpr/lanpr_ops.c
index 79cbcd665d8..988027ed131 100644
--- a/source/blender/draw/engines/lanpr/lanpr_ops.c
+++ b/source/blender/draw/engines/lanpr/lanpr_ops.c
@@ -2977,6 +2977,120 @@ void lanpr_viewport_draw_offline_result(LANPR_TextureList *txl, LANPR_Framebuffe
void lanpr_NO_THREAD_chain_feature_lines(LANPR_RenderBuffer *rb, float dist_thr
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list