[Bf-blender-cvs] [c3799f1c311] temp-lanpr-review: LANPR: Fix various code issues.

YimingWu noreply at git.blender.org
Wed Nov 20 10:23:29 CET 2019


Commit: c3799f1c3119d1950f101aad4abc1c5e7551d77d
Author: YimingWu
Date:   Sun Nov 17 20:29:17 2019 +0800
Branches: temp-lanpr-review
https://developer.blender.org/rBc3799f1c3119d1950f101aad4abc1c5e7551d77d

LANPR: Fix various code issues.

===================================================================

M	source/blender/draw/engines/lanpr/lanpr_dpix.c
M	source/blender/draw/engines/lanpr/lanpr_engine.c
M	source/blender/draw/engines/lanpr/shaders/lanpr_dpix_project_clip_frag.glsl
D	source/blender/draw/engines/lanpr/shaders/lanpr_snake_edge_frag.glsl
D	source/blender/draw/engines/lanpr/shaders/lanpr_snake_image_peel_frag.glsl
D	source/blender/draw/engines/lanpr/shaders/lanpr_snake_line_connection_frag.glsl
D	source/blender/draw/engines/lanpr/shaders/lanpr_snake_line_connection_geom.glsl
D	source/blender/draw/engines/lanpr/shaders/lanpr_snake_line_connection_vert.glsl
D	source/blender/draw/engines/lanpr/shaders/lanpr_snake_multichannel_frag.glsl
M	source/blender/editors/lanpr/lanpr_chain.c
M	source/blender/editors/lanpr/lanpr_cpu.c
M	source/blender/editors/lanpr/lanpr_util.c

===================================================================

diff --git a/source/blender/draw/engines/lanpr/lanpr_dpix.c b/source/blender/draw/engines/lanpr/lanpr_dpix.c
index eb3afb9e6b4..c4dcdfdaafb 100644
--- a/source/blender/draw/engines/lanpr/lanpr_dpix.c
+++ b/source/blender/draw/engines/lanpr/lanpr_dpix.c
@@ -136,24 +136,24 @@ void lanpr_init_atlas_inputs(void *ved)
                                  GPU_ATTACHMENT_LEAVE,
                                  GPU_ATTACHMENT_LEAVE});
 
-  if (!lanpr_share.dpix_transform_shader) {
+  if (lanpr_share.dpix_transform_shader == NULL) {
     lanpr_share.dpix_transform_shader = DRW_shader_create(
         datatoc_lanpr_dpix_project_passthrough_vert_glsl,
         NULL,
         datatoc_lanpr_dpix_project_clip_frag_glsl,
         NULL);
-    if (!lanpr_share.dpix_transform_shader) {
+    if (lanpr_share.dpix_transform_shader == NULL) {
       lanpr_share.dpix_shader_error = 1;
       printf("LANPR: DPIX transform shader compile error.");
     }
   }
-  if (!lanpr_share.dpix_preview_shader) {
+  if (lanpr_share.dpix_preview_shader == NULL) {
     lanpr_share.dpix_preview_shader = DRW_shader_create(
         datatoc_lanpr_dpix_project_passthrough_vert_glsl,
         datatoc_lanpr_dpix_preview_geom_glsl,
         datatoc_lanpr_dpix_preview_frag_glsl,
         NULL);
-    if (!lanpr_share.dpix_transform_shader) {
+    if (lanpr_share.dpix_transform_shader == NULL) {
       lanpr_share.dpix_shader_error = 1;
       printf("LANPR: DPIX transform shader compile error.");
     }
@@ -303,7 +303,7 @@ int lanpr_feed_atlas_data_intersection_cache(void *UNUSED(vedata),
 
   i = 0;
 
-  if (!rb) {
+  if (rb == NULL) {
     return 0;
   }
 
@@ -425,7 +425,7 @@ void lanpr_create_atlas_intersection_preview(void *UNUSED(vedata), int begin_ind
   float co[2];
   int i;
 
-  if (!rb) {
+  if (rb == NULL) {
     return;
   }
 
@@ -493,7 +493,7 @@ void lanpr_dpix_draw_scene(LANPR_TextureList *txl,
   float use_background_color[4] = {0.0f, 0.0f, 0.0f, 1.0f};
   ;
 
-  if (!lanpr->active_layer) {
+  if (lanpr->active_layer == NULL) {
     return; /* return early in case we don't have line layers. DPIX only use the first layer. */
   }
   int texw = GPU_texture_width(txl->edge_intermediate),
@@ -508,16 +508,15 @@ void lanpr_dpix_draw_scene(LANPR_TextureList *txl,
     camera = (rv3d && rv3d->persp == RV3D_CAMOB) ? v3d->camera : NULL;
     is_persp = rv3d->is_persp;
   }
-  if (!camera) {
+  if (camera == NULL) {
     camera = scene->camera;
-    if (!v3d) {
+    if (v3d == NULL) {
       is_persp = ((Camera *)camera->data)->type == CAM_PERSP ? 1 : 0;
     }
   }
   if (is_render && !camera) {
     return;
   }
-  /*  XXX: should implement view angle functions for ortho camera. */
 
   int texture_size = lanpr_share.texture_size;
 
@@ -526,7 +525,7 @@ void lanpr_dpix_draw_scene(LANPR_TextureList *txl,
   pd->dpix_is_perspective = is_persp;
   pd->dpix_sample_step = 1;
   pd->dpix_buffer_width = texture_size;
-  pd->dpix_depth_offset = 0.0001;
+  pd->dpix_depth_offset = 0.0001; /* This value works okay with default camera. */
   pd->dpix_znear = camera ? ((Camera *)camera->data)->clip_start : v3d->clip_start;
   pd->dpix_zfar = camera ? ((Camera *)camera->data)->clip_end : v3d->clip_end;
 
diff --git a/source/blender/draw/engines/lanpr/lanpr_engine.c b/source/blender/draw/engines/lanpr/lanpr_engine.c
index 82be5680095..d1e006f8fa6 100644
--- a/source/blender/draw/engines/lanpr/lanpr_engine.c
+++ b/source/blender/draw/engines/lanpr/lanpr_engine.c
@@ -97,7 +97,7 @@ static void lanpr_engine_init(void *ved)
       &fbl->edge_intermediate,
       {GPU_ATTACHMENT_TEXTURE(txl->depth), GPU_ATTACHMENT_TEXTURE(txl->edge_intermediate)});
 
-  if (!lanpr_share.multichannel_shader) {
+  if (lanpr_share.multichannel_shader == NULL) {
     lanpr_share.multichannel_shader = DRW_shader_create(
         datatoc_gpu_shader_3D_smooth_color_vert_glsl,
         NULL,
@@ -109,14 +109,14 @@ static void lanpr_engine_init(void *ved)
   lanpr_init_atlas_inputs(ved);
 
   /* SOFTWARE */
-  if (!lanpr_share.software_shader) {
+  if (lanpr_share.software_shader == NULL) {
     lanpr_share.software_shader = DRW_shader_create(datatoc_lanpr_software_passthrough_vert_glsl,
                                                     datatoc_lanpr_software_line_chain_geom_glsl,
                                                     datatoc_lanpr_dpix_preview_frag_glsl,
                                                     NULL);
   }
 
-  if (!lanpr_share.software_chaining_shader) {
+  if (lanpr_share.software_chaining_shader == NULL) {
     lanpr_share.software_chaining_shader = DRW_shader_create(
         datatoc_lanpr_software_passthrough_vert_glsl,
         datatoc_lanpr_software_chain_geom_glsl,
@@ -220,12 +220,12 @@ static void lanpr_cache_init(void *vedata)
   /* Transfer reload state */
   lanpr_share.dpix_reloaded = lanpr_share.dpix_reloaded_deg;
 
-  if (!stl->g_data) {
+  if (stl->g_data == NULL) {
     /* Alloc transient pointers */
     stl->g_data = MEM_callocN(sizeof(*stl->g_data), __func__);
   }
 
-  if (!lanpr_share.mp_batch_list) {
+  if (lanpr_share.mp_batch_list == NULL) {
     lanpr_share.mp_batch_list = BLI_mempool_create(
         sizeof(LANPR_BatchItem), 0, 128, BLI_MEMPOOL_NOP);
   }
diff --git a/source/blender/draw/engines/lanpr/shaders/lanpr_dpix_project_clip_frag.glsl b/source/blender/draw/engines/lanpr/shaders/lanpr_dpix_project_clip_frag.glsl
index b461759d596..01a15b4e52e 100644
--- a/source/blender/draw/engines/lanpr/shaders/lanpr_dpix_project_clip_frag.glsl
+++ b/source/blender/draw/engines/lanpr/shaders/lanpr_dpix_project_clip_frag.glsl
@@ -407,9 +407,6 @@ void main()
     }
   }
 
-  // If this segment is a profile edge, test to see if it should be turned on.
-  // if (v1_world_pos.w > 0.5)
-  //{
   int profile_on = testProfileEdge(texcoord, v0_clipped_near);
   if (profile_on == 0) {
     // Profile edge should be off.
@@ -418,7 +415,6 @@ void main()
     gl_FragData[2] = vec4(0.0, 1.0, 0.0, 0.0);
     return;
   }
-  //}
 
   // project
   vec4 v0_pre_div = projection * ViewMatrix * vec4(v0_clipped_near, 1.0);
@@ -458,14 +454,8 @@ void main()
   vec2 v0_screen = (v0_clip_pos.xy + vec2(1.0, 1.0)) * 0.5 * viewport.zw;
   vec2 v1_screen = (v1_clip_pos.xy + vec2(1.0, 1.0)) * 0.5 * viewport.zw;
 
-  // if(v1_screen == v0_screen){ gl_FragData[0] = vec4(1,0,0,1); return; }
-
   float segment_screen_length = length(v0_screen - v1_screen);
 
-  // scale the length by sample_step to get the number of samples
-  // float num_samples = segment_screen_length / sample_step;
-  // num_samples = ceil(num_samples);
-
   // Unproject and reproject the final clipped positions
   // so that interpolation is perspective correct later on.
   vec4 v0_world = inverse_projection * vec4(v0_clip_pos, 1.0);
@@ -473,23 +463,7 @@ void main()
   vec4 v0_clipped_pre_div = projection * v0_world;
   vec4 v1_clipped_pre_div = projection * v1_world;
 
-  // Add some padding to the number of samples so that filters
-  // that work along the segment length (such as overshoot)
-  // have some room to work with at the end of each segment.
-  // vec4 path_texel = texelFetch(path_start_end_ptrs, texcoord,0);
-  // vec2 padding = segmentPadding(num_samples,
-  //    coordinateToIndex(texcoord, buffer_width),
-  //    unpackPathStart(path_texel),
-  //    unpackPathEnd(path_texel));
-  // float total_padding = padding.x + padding.y;
-
-  // if(v0_clipped_pre_div == v1_clipped_pre_div)gl_FragData[0] =vec4(1);
-  // else gl_FragData[0] = vec4(v0_clipped_pre_div.xyz,1);
-
   gl_FragData[0] = vec4(v0_clipped_pre_div.xyz,
                         1);  // contour has priority, modification cause trouble
   gl_FragData[1] = vec4(v1_clipped_pre_div.xyz, is_crease > 0 ? crease_strength : 1);
-  // gl_FragData[2] = packOffsetTexel(num_samples, segment_screen_length,
-  // num_samples, segment_screen_length);
-  // num_samples + total_padding, segment_screen_length);
 }
diff --git a/source/blender/draw/engines/lanpr/shaders/lanpr_snake_edge_frag.glsl b/source/blender/draw/engines/lanpr/shaders/lanpr_snake_edge_frag.glsl
deleted file mode 100644
index 045089c6675..00000000000
--- a/source/blender/draw/engines/lanpr/shaders/lanpr_snake_edge_frag.glsl
+++ /dev/null
@@ -1,88 +0,0 @@
-in vec4 uvcoordsvar;
-uniform sampler2DMS tex_sampe_0;   // depth
-uniform sampler2DMS tex_sample_1;  // color
-uniform sampler2DMS tex_sample_2;  // normal
-uniform float normal_clamp;        // normal clamp
-uniform float normal_strength;     // normal strength
-uniform float depth_clamp;         // depth clamp
-uniform float depth_strength;      // depth strength
-uniform float z_near;              // z_near
-uniform float z_far;               // z_far
-
-mat3 sx = mat3(1.0, 2.0, 1.0, 0.0, 0.0, 0.0, -1.0, -2.0, -1.0);
-mat3 sy = mat3(1.0, 0.0, -1.0, 2.0, 0.0, -2.0, 1.0, 0.0, -1.0);
-vec3 rgb2hsv(vec3 c)
-{
-  vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
-  vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
-  vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
-  float d = q.x - min(q.w, q.y);
-  float e = 1.0e-10;
-  return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
-}
-float linearDepth(float depthSample)
-{
-  float d = 2.0 * depthSample - 1.0;
-  float zLinear = 2.0 * z_near * z_far / (z_far + z_near - d * (z_far - z_near));
-  return zLinear;
-}
-
-vec4 DetectEdge(sampler2DMS tex, float clamp, float strength)
-{
-  mat3 I = mat3(0);
-  mat3 J = mat3(0);
-  mat3 K = mat3(0);
-
-  ivec2 texSize = textureSize(tex);
-  ivec2 sp = ivec2(uvcoordsvar.xy * texSize);
-  vec4 cs = vec4(0);
-
-  // sample hardcoded (8) now
-  for (int s = 0; s < 8; s++) {
-    for (int i = 0; i < 3; i++) {
-      for (int j = 0; j < 3; j++) {
-        vec4 col = texelFetch(tex, sp + ivec2(i - 1, j - 1), s);
-        vec3 sample1 = vec3((col.r));
-        vec3 sample2 = vec3((col.g));
-        vec3 sample3 = vec3((col.b));
-        I[i][j] += length(sample1) / 8;
-        J[i][j] += length(sample2) / 8;
-        K[i][j] += length(sample3) / 8;
-      }
-    }
-    cs += texelFetch(tex_sample_1, sp, s) / 8;
-  }
-
-  float gx1 = dot(sx[0], I[0]) + dot(sx[1], I[1]) + dot(sx[2], I[2]);
-  float gy1 = dot(sy[0], I[0]) + dot(sy[1], I[1]) + dot

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list