Cleanup: add missing braces to draw manager

This commit is contained in:
2019-01-25 07:10:13 +11:00
parent b1f3a86d99
commit a4fe338dd8
47 changed files with 265 additions and 136 deletions

View File

@@ -514,8 +514,9 @@ wmJob *EEVEE_lightbake_job_create(
EEVEE_LightBake *lbake = NULL; EEVEE_LightBake *lbake = NULL;
/* only one render job at a time */ /* only one render job at a time */
if (WM_jobs_test(wm, scene, WM_JOB_TYPE_RENDER)) if (WM_jobs_test(wm, scene, WM_JOB_TYPE_RENDER)) {
return NULL; return NULL;
}
wmJob *wm_job = WM_jobs_get(wm, win, scene, "Bake Lighting", wmJob *wm_job = WM_jobs_get(wm, win, scene, "Bake Lighting",
WM_JOB_EXCL_RENDER | WM_JOB_PRIORITY | WM_JOB_PROGRESS, WM_JOB_TYPE_LIGHT_BAKE); WM_JOB_EXCL_RENDER | WM_JOB_PRIORITY | WM_JOB_PROGRESS, WM_JOB_TYPE_LIGHT_BAKE);

View File

@@ -78,15 +78,18 @@ bool EEVEE_lightprobes_obj_visibility_cb(bool vis_in, void *user_data)
EEVEE_ObjectEngineData *oed = (EEVEE_ObjectEngineData *)user_data; EEVEE_ObjectEngineData *oed = (EEVEE_ObjectEngineData *)user_data;
/* test disabled if group is NULL */ /* test disabled if group is NULL */
if (oed->test_data->collection == NULL) if (oed->test_data->collection == NULL) {
return vis_in; return vis_in;
}
if (oed->test_data->cached == false) if (oed->test_data->cached == false) {
oed->ob_vis_dirty = true; oed->ob_vis_dirty = true;
}
/* early out, don't need to compute ob_vis yet. */ /* early out, don't need to compute ob_vis yet. */
if (vis_in == false) if (vis_in == false) {
return vis_in; return vis_in;
}
if (oed->ob_vis_dirty) { if (oed->ob_vis_dirty) {
oed->ob_vis_dirty = false; oed->ob_vis_dirty = false;

View File

@@ -457,8 +457,9 @@ void EEVEE_lights_cache_shcaster_material_add(
DRW_shgroup_uniform_block(grp, "shadow_block", sldata->shadow_ubo); DRW_shgroup_uniform_block(grp, "shadow_block", sldata->shadow_ubo);
DRW_shgroup_uniform_block(grp, "common_block", sldata->common_ubo); DRW_shgroup_uniform_block(grp, "common_block", sldata->common_ubo);
if (alpha_threshold != NULL) if (alpha_threshold != NULL) {
DRW_shgroup_uniform_float(grp, "alphaThreshold", alpha_threshold, 1); DRW_shgroup_uniform_float(grp, "alphaThreshold", alpha_threshold, 1);
}
DRW_shgroup_call_object_add(grp, geom, ob); DRW_shgroup_call_object_add(grp, geom, ob);
} }
@@ -599,8 +600,9 @@ void EEVEE_lights_cache_finish(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
float light_attenuation_radius_get(Lamp *la, float light_threshold) float light_attenuation_radius_get(Lamp *la, float light_threshold)
{ {
if (la->mode & LA_CUSTOM_ATTENUATION) if (la->mode & LA_CUSTOM_ATTENUATION) {
return la->att_dist; return la->att_dist;
}
/* Compute max light power. */ /* Compute max light power. */
float power = max_fff(la->r, la->g, la->b); float power = max_fff(la->r, la->g, la->b);

View File

@@ -784,8 +784,9 @@ struct GPUMaterial *EEVEE_material_mesh_depth_get(
options |= VAR_MAT_CLIP; options |= VAR_MAT_CLIP;
} }
if (is_shadow) if (is_shadow) {
options |= VAR_MAT_SHADOW; options |= VAR_MAT_SHADOW;
}
GPUMaterial *mat = DRW_shader_find_from_material(ma, engine, options, true); GPUMaterial *mat = DRW_shader_find_from_material(ma, engine, options, true);
if (mat) { if (mat) {
@@ -1485,8 +1486,9 @@ void EEVEE_materials_cache_populate(EEVEE_Data *vedata, EEVEE_ViewLayerData *sld
shgrp_depth_array[i] = NULL; shgrp_depth_array[i] = NULL;
shgrp_depth_clip_array[i] = NULL; shgrp_depth_clip_array[i] = NULL;
if (ma == NULL) if (ma == NULL) {
ma = &defmaterial; ma = &defmaterial;
}
switch (ma->blend_method) { switch (ma->blend_method) {
case MA_BM_SOLID: case MA_BM_SOLID:
@@ -1536,8 +1538,9 @@ void EEVEE_materials_cache_populate(EEVEE_Data *vedata, EEVEE_ViewLayerData *sld
EEVEE_ObjectEngineData *oedata = NULL; EEVEE_ObjectEngineData *oedata = NULL;
Material *ma = give_current_material(ob, i + 1); Material *ma = give_current_material(ob, i + 1);
if (ma == NULL) if (ma == NULL) {
ma = &defmaterial; ma = &defmaterial;
}
/* Do not render surface if we are rendering a volume object /* Do not render surface if we are rendering a volume object
* and do not have a surface closure. */ * and do not have a surface closure. */

View File

@@ -288,8 +288,9 @@ static void eevee_render_result_normal(
EEVEE_PrivateData *g_data = stl->g_data; EEVEE_PrivateData *g_data = stl->g_data;
/* Only read the center texel. */ /* Only read the center texel. */
if (stl->effects->taa_current_sample > 1) if (stl->effects->taa_current_sample > 1) {
return; return;
}
if ((view_layer->passflag & SCE_PASS_NORMAL) != 0) { if ((view_layer->passflag & SCE_PASS_NORMAL) != 0) {
RenderPass *rp = RE_pass_find_by_name(rl, RE_PASSNAME_NORMAL, viewname); RenderPass *rp = RE_pass_find_by_name(rl, RE_PASSNAME_NORMAL, viewname);
@@ -336,8 +337,9 @@ static void eevee_render_result_z(
EEVEE_PrivateData *g_data = stl->g_data; EEVEE_PrivateData *g_data = stl->g_data;
/* Only read the center texel. */ /* Only read the center texel. */
if (stl->effects->taa_current_sample > 1) if (stl->effects->taa_current_sample > 1) {
return; return;
}
if ((view_layer->passflag & SCE_PASS_Z) != 0) { if ((view_layer->passflag & SCE_PASS_Z) != 0) {
RenderPass *rp = RE_pass_find_by_name(rl, RE_PASSNAME_Z, viewname); RenderPass *rp = RE_pass_find_by_name(rl, RE_PASSNAME_Z, viewname);

View File

@@ -244,8 +244,9 @@ float line_unit_sphere_intersect_dist(vec3 lineorigin, vec3 linedirection)
float dist = 1e15; float dist = 1e15;
float determinant = b * b - a * c; float determinant = b * b - a * c;
if (determinant >= 0) if (determinant >= 0) {
dist = (sqrt(determinant) - b) / a; dist = (sqrt(determinant) - b) / a;
}
return dist; return dist;
} }

View File

@@ -108,15 +108,17 @@ layout(location = 1) out float fragAlpha;
void main(void) void main(void)
{ {
/* Discard to avoid bleeding onto the next layer */ /* Discard to avoid bleeding onto the next layer */
if (int(gl_FragCoord.x) * edge.x + edge.y > 0) if (int(gl_FragCoord.x) * edge.x + edge.y > 0) {
discard; discard;
}
/* Circle Dof */ /* Circle Dof */
float dist = length(particlecoord); float dist = length(particlecoord);
/* Ouside of bokeh shape */ /* Ouside of bokeh shape */
if (dist > 1.0) if (dist > 1.0) {
discard; discard;
}
/* Regular Polygon Dof */ /* Regular Polygon Dof */
if (bokeh_sides.x > 0.0) { if (bokeh_sides.x > 0.0) {
@@ -134,8 +136,9 @@ void main(void)
dist /= r; dist /= r;
/* Ouside of bokeh shape */ /* Ouside of bokeh shape */
if (dist > 1.0) if (dist > 1.0) {
discard; discard;
}
} }
fragColor = color; fragColor = color;

View File

@@ -91,8 +91,9 @@ void main()
/* Early out */ /* Early out */
/* We can't do discard because we don't clear the render target. */ /* We can't do discard because we don't clear the render target. */
if (depth == 1.0) if (depth == 1.0) {
return; return;
}
vec2 uvs = vec2(fullres_texel) / vec2(textureSize(depthBuffer, 0)); vec2 uvs = vec2(fullres_texel) / vec2(textureSize(depthBuffer, 0));
@@ -105,16 +106,18 @@ void main()
vec4 speccol_roughness = texelFetch(specroughBuffer, fullres_texel, 0).rgba; vec4 speccol_roughness = texelFetch(specroughBuffer, fullres_texel, 0).rgba;
/* Early out */ /* Early out */
if (dot(speccol_roughness.rgb, vec3(1.0)) == 0.0) if (dot(speccol_roughness.rgb, vec3(1.0)) == 0.0) {
return; return;
}
float roughness = speccol_roughness.a; float roughness = speccol_roughness.a;
float roughnessSquared = max(1e-3, roughness * roughness); float roughnessSquared = max(1e-3, roughness * roughness);
float a2 = roughnessSquared * roughnessSquared; float a2 = roughnessSquared * roughnessSquared;
/* Early out */ /* Early out */
if (roughness > ssrMaxRoughness + 0.2) if (roughness > ssrMaxRoughness + 0.2) {
return; return;
}
vec4 rand = texelFetch(utilTex, ivec3(halfres_texel % LUT_SIZE, 2), 0); vec4 rand = texelFetch(utilTex, ivec3(halfres_texel % LUT_SIZE, 2), 0);
@@ -394,8 +397,9 @@ void main()
float depth = textureLod(depthBuffer, uvs, 0.0).r; float depth = textureLod(depthBuffer, uvs, 0.0).r;
/* Early out */ /* Early out */
if (depth == 1.0) if (depth == 1.0) {
discard; discard;
}
/* Using world space */ /* Using world space */
vec3 viewPosition = get_view_space_from_depth(uvs, depth); /* Needed for viewCameraVec */ vec3 viewPosition = get_view_space_from_depth(uvs, depth); /* Needed for viewCameraVec */
@@ -406,8 +410,9 @@ void main()
vec4 speccol_roughness = texelFetch(specroughBuffer, fullres_texel, 0).rgba; vec4 speccol_roughness = texelFetch(specroughBuffer, fullres_texel, 0).rgba;
/* Early out */ /* Early out */
if (dot(speccol_roughness.rgb, vec3(1.0)) == 0.0) if (dot(speccol_roughness.rgb, vec3(1.0)) == 0.0) {
discard; discard;
}
float roughness = speccol_roughness.a; float roughness = speccol_roughness.a;
float roughnessSquared = max(1e-3, roughness * roughness); float roughnessSquared = max(1e-3, roughness * roughness);

View File

@@ -52,8 +52,9 @@ float shadow_test(ShadowSample moments, float dist, ShadowData sd)
{ {
float p = 0.0; float p = 0.0;
if (dist <= moments.x) if (dist <= moments.x) {
p = 1.0; p = 1.0;
}
float variance = moments.y - (moments.x * moments.x); float variance = moments.y - (moments.x * moments.x);
variance = max(variance, sd.sh_bias / 10.0); variance = max(variance, sd.sh_bias / 10.0);

View File

@@ -9,8 +9,9 @@ void main()
float dist_sqr = dot(quadCoord, quadCoord); float dist_sqr = dot(quadCoord, quadCoord);
/* Discard outside the circle. */ /* Discard outside the circle. */
if (dist_sqr > 1.0) if (dist_sqr > 1.0) {
discard; discard;
}
vec3 view_nor = vec3(quadCoord, sqrt(max(0.0, 1.0 - dist_sqr))); vec3 view_nor = vec3(quadCoord, sqrt(max(0.0, 1.0 - dist_sqr)));
vec3 world_ref = mat3(ViewMatrixInverse) * reflect(vec3(0.0, 0.0, -1.0), view_nor); vec3 world_ref = mat3(ViewMatrixInverse) * reflect(vec3(0.0, 0.0, -1.0), view_nor);

View File

@@ -9,8 +9,9 @@ void main()
float dist_sqr = dot(quadCoord, quadCoord); float dist_sqr = dot(quadCoord, quadCoord);
/* Discard outside the circle. */ /* Discard outside the circle. */
if (dist_sqr > 1.0) if (dist_sqr > 1.0) {
discard; discard;
}
vec3 view_nor = vec3(quadCoord, sqrt(max(0.0, 1.0 - dist_sqr))); vec3 view_nor = vec3(quadCoord, sqrt(max(0.0, 1.0 - dist_sqr)));
vec3 world_nor = mat3(ViewMatrixInverse) * view_nor; vec3 world_nor = mat3(ViewMatrixInverse) * view_nor;

View File

@@ -217,8 +217,9 @@ void CLOSURE_NAME(
float l_vis = light_visibility(ld, worldPosition, viewPosition, viewNormal, l_vector); float l_vis = light_visibility(ld, worldPosition, viewPosition, viewNormal, l_vector);
if (l_vis < 1e-8) if (l_vis < 1e-8) {
continue; continue;
}
vec3 l_color_vis = ld.l_color * l_vis; vec3 l_color_vis = ld.l_color * l_vis;

View File

@@ -93,10 +93,12 @@ vec3 solve_cubic(vec4 coefs)
float x_3d = 2.0 * sqrt(-C_d) * cos(theta + (2.0 / 3.0) * M_PI); float x_3d = 2.0 * sqrt(-C_d) * cos(theta + (2.0 / 3.0) * M_PI);
float xs; float xs;
if (x_1d + x_3d < 2.0 * C) if (x_1d + x_3d < 2.0 * C) {
xs = x_1d; xs = x_1d;
else }
else {
xs = x_3d; xs = x_3d;
}
xsc = vec2(-D, xs + C); xsc = vec2(-D, xs + C);
} }
@@ -279,8 +281,9 @@ float ltc_evaluate_disk(vec3 N, vec3 V, mat3 Minv, vec3 disk_points[3])
/* Now find front facing ellipse with same solid angle. */ /* Now find front facing ellipse with same solid angle. */
vec3 V3 = normalize(cross(V1, V2)); vec3 V3 = normalize(cross(V1, V2));
if (dot(C, V3) < 0.0) if (dot(C, V3) < 0.0) {
V3 *= -1.0; V3 *= -1.0;
}
float L = dot(V3, C); float L = dot(V3, C);
float x0 = dot(V1, C) / L; float x0 = dot(V1, C) / L;

View File

@@ -75,12 +75,14 @@ void main()
#if defined(USE_ALPHA_HASH) #if defined(USE_ALPHA_HASH)
/* Hashed Alpha Testing */ /* Hashed Alpha Testing */
if (cl.opacity < hashed_alpha_threshold(worldPosition)) if (cl.opacity < hashed_alpha_threshold(worldPosition)) {
discard; discard;
}
#elif defined(USE_ALPHA_CLIP) #elif defined(USE_ALPHA_CLIP)
/* Alpha clip */ /* Alpha clip */
if (cl.opacity <= alphaThreshold) if (cl.opacity <= alphaThreshold) {
discard; discard;
}
#endif #endif
#endif #endif
} }

View File

@@ -128,8 +128,9 @@ static void external_cache_populate(void *vedata, Object *ob)
{ {
EXTERNAL_StorageList *stl = ((EXTERNAL_Data *)vedata)->stl; EXTERNAL_StorageList *stl = ((EXTERNAL_Data *)vedata)->stl;
if (!DRW_object_is_renderable(ob)) if (!DRW_object_is_renderable(ob)) {
return; return;
}
struct GPUBatch *geom = DRW_cache_object_surface_get(ob); struct GPUBatch *geom = DRW_cache_object_surface_get(ob);
if (geom) { if (geom) {

View File

@@ -156,8 +156,9 @@ static bool gpencil_can_draw_stroke(
const bool onion, const bool is_mat_preview) const bool onion, const bool is_mat_preview)
{ {
/* skip stroke if it doesn't have any valid data */ /* skip stroke if it doesn't have any valid data */
if ((gps->points == NULL) || (gps->totpoints < 1) || (gp_style == NULL)) if ((gps->points == NULL) || (gps->totpoints < 1) || (gp_style == NULL)) {
return false; return false;
}
/* if mat preview render always visible */ /* if mat preview render always visible */
if (is_mat_preview) { if (is_mat_preview) {
@@ -1130,8 +1131,9 @@ void DRW_gpencil_triangulate_stroke_fill(Object *ob, bGPDstroke *gps)
} }
else { else {
/* No triangles needed - Free anything allocated previously */ /* No triangles needed - Free anything allocated previously */
if (gps->triangles) if (gps->triangles) {
MEM_freeN(gps->triangles); MEM_freeN(gps->triangles);
}
gps->triangles = NULL; gps->triangles = NULL;
} }
@@ -1496,8 +1498,9 @@ void DRW_gpencil_populate_multiedit(
/* draw strokes */ /* draw strokes */
for (bGPDlayer *gpl = gpd->layers.first; gpl; gpl = gpl->next) { for (bGPDlayer *gpl = gpd->layers.first; gpl; gpl = gpl->next) {
/* don't draw layer if hidden */ /* don't draw layer if hidden */
if (gpl->flag & GP_LAYER_HIDE) if (gpl->flag & GP_LAYER_HIDE) {
continue; continue;
}
/* list of frames to draw */ /* list of frames to draw */
if (!playing) { if (!playing) {
@@ -1603,8 +1606,9 @@ void DRW_gpencil_populate_datablock(
} }
gpf = BKE_gpencil_layer_getframe(gpl, remap_cfra, GP_GETFRAME_USE_PREV); gpf = BKE_gpencil_layer_getframe(gpl, remap_cfra, GP_GETFRAME_USE_PREV);
if (gpf == NULL) if (gpf == NULL) {
continue; continue;
}
/* if solo mode, display only frames with keyframe in the current frame */ /* if solo mode, display only frames with keyframe in the current frame */
if ((is_solomode) && (gpf->framenum != remap_cfra)) { if ((is_solomode) && (gpf->framenum != remap_cfra)) {

View File

@@ -92,13 +92,15 @@ static bool effect_is_active(bGPdata *gpd, ShaderFxData *fx, bool is_render)
static bool get_normal_vector(bGPdata *gpd, float r_point[3], float r_normal[3]) static bool get_normal_vector(bGPdata *gpd, float r_point[3], float r_normal[3])
{ {
for (bGPDlayer *gpl = gpd->layers.first; gpl; gpl = gpl->next) { for (bGPDlayer *gpl = gpd->layers.first; gpl; gpl = gpl->next) {
if (gpl->flag & GP_LAYER_HIDE) if (gpl->flag & GP_LAYER_HIDE) {
continue; continue;
}
/* get frame */ /* get frame */
bGPDframe *gpf = gpl->actframe; bGPDframe *gpf = gpl->actframe;
if (gpf == NULL) if (gpf == NULL) {
continue; continue;
}
for (bGPDstroke *gps = gpf->strokes.first; gps; gps = gps->next) { for (bGPDstroke *gps = gpf->strokes.first; gps; gps = gps->next) {
if (gps->totpoints >= 3) { if (gps->totpoints >= 3) {
bGPDspoint *pt = &gps->points[0]; bGPDspoint *pt = &gps->points[0];

View File

@@ -38,6 +38,7 @@ void main()
FragColor = outcolor; FragColor = outcolor;
gl_FragDepth = stroke_depth; gl_FragDepth = stroke_depth;
if (outcolor.a < 0.02f) if (outcolor.a < 0.02f) {
discard; discard;
}
} }

View File

@@ -79,10 +79,12 @@ vec4 get_blend_color(int mode, vec4 src_color, vec4 blend_color)
float linearrgb_to_srgb(float c) float linearrgb_to_srgb(float c)
{ {
if (c < 0.0031308) if (c < 0.0031308) {
return (c < 0.0) ? 0.0 : c * 12.92; return (c < 0.0) ? 0.0 : c * 12.92;
else }
else {
return 1.055 * pow(c, 1.0 / 2.4) - 0.055; return 1.055 * pow(c, 1.0 / 2.4) - 0.055;
}
} }
vec4 tone(vec4 stroke_color) vec4 tone(vec4 stroke_color)

View File

@@ -23,9 +23,10 @@ void main()
float dist_squared = dot(centered, centered); float dist_squared = dot(centered, centered);
const float rad_squared = 0.25; const float rad_squared = 0.25;
// round point with jaggy edges /* Round point with jaggy edges. */
if ((mode != GPENCIL_MODE_BOX) && (dist_squared > rad_squared)) if ((mode != GPENCIL_MODE_BOX) && (dist_squared > rad_squared)) {
discard; discard;
}
vec4 tmp_color = texture2D(myTexture, mTexCoord); vec4 tmp_color = texture2D(myTexture, mTexCoord);

View File

@@ -8,18 +8,22 @@ uniform int tonemapping;
float srgb_to_linearrgb(float c) float srgb_to_linearrgb(float c)
{ {
if (c < 0.04045) if (c < 0.04045) {
return (c < 0.0) ? 0.0 : c * (1.0 / 12.92); return (c < 0.0) ? 0.0 : c * (1.0 / 12.92);
else }
else {
return pow((c + 0.055) * (1.0 / 1.055), 2.4); return pow((c + 0.055) * (1.0 / 1.055), 2.4);
}
} }
float linearrgb_to_srgb(float c) float linearrgb_to_srgb(float c)
{ {
if (c < 0.0031308) if (c < 0.0031308) {
return (c < 0.0) ? 0.0 : c * 12.92; return (c < 0.0) ? 0.0 : c * 12.92;
else }
else {
return 1.055 * pow(c, 1.0 / 2.4) - 0.055; return 1.055 * pow(c, 1.0 / 2.4) - 0.055;
}
} }
void main() void main()

View File

@@ -9,8 +9,9 @@ void ssao_factors(
{ {
cavities = edges = 0.0; cavities = edges = 0.0;
/* early out if there is no need for SSAO */ /* early out if there is no need for SSAO */
if (ssao_factor_cavity == 0.0 && ssao_factor_edge == 0.0) if (ssao_factor_cavity == 0.0 && ssao_factor_edge == 0.0) {
return; return;
}
/* take the normalized ray direction here */ /* take the normalized ray direction here */
vec3 noise = texture(ssao_jitter, screenco.xy * jitter_tilling).rgb; vec3 noise = texture(ssao_jitter, screenco.xy * jitter_tilling).rgb;
@@ -45,8 +46,9 @@ void ssao_factors(
vec2 uvcoords = screenco.xy + dir_jittered * offset; vec2 uvcoords = screenco.xy + dir_jittered * offset;
if (uvcoords.x > 1.0 || uvcoords.x < 0.0 || uvcoords.y > 1.0 || uvcoords.y < 0.0) if (uvcoords.x > 1.0 || uvcoords.x < 0.0 || uvcoords.y > 1.0 || uvcoords.y < 0.0) {
continue; continue;
}
float depth_new = texture(depthBuffer, uvcoords).r; float depth_new = texture(depthBuffer, uvcoords).r;
@@ -56,8 +58,9 @@ void ssao_factors(
/* This trick provide good edge effect even if no neighboor is found. */ /* This trick provide good edge effect even if no neighboor is found. */
vec3 pos_new = get_view_space_from_depth(uvcoords, (is_background) ? depth : depth_new); vec3 pos_new = get_view_space_from_depth(uvcoords, (is_background) ? depth : depth_new);
if (is_background) if (is_background) {
pos_new.z -= ssao_distance; pos_new.z -= ssao_distance;
}
vec3 dir = pos_new - position; vec3 dir = pos_new - position;
float len = length(dir); float len = length(dir);
@@ -68,11 +71,13 @@ void ssao_factors(
float attenuation = 1.0 / (len * (1.0 + len * len * ssao_attenuation)); float attenuation = 1.0 / (len * (1.0 + len * len * ssao_attenuation));
/* use minor bias here to avoid self shadowing */ /* use minor bias here to avoid self shadowing */
if (f_cavities > -f_bias) if (f_cavities > -f_bias) {
cavities += f_cavities * attenuation; cavities += f_cavities * attenuation;
}
if (f_edge > f_bias) if (f_edge > f_bias) {
edges += f_edge * attenuation; edges += f_edge * attenuation;
}
} }
cavities /= ssao_samples_num; cavities /= ssao_samples_num;

View File

@@ -144,10 +144,12 @@ vec2 matcap_uv_compute(vec3 I, vec3 N, bool flipped)
float srgb_to_linearrgb(float c) float srgb_to_linearrgb(float c)
{ {
if (c < 0.04045) if (c < 0.04045) {
return (c < 0.0) ? 0.0 : c * (1.0 / 12.92); return (c < 0.0) ? 0.0 : c * (1.0 / 12.92);
else }
else {
return pow((c + 0.055) * (1.0 / 1.055), 2.4); return pow((c + 0.055) * (1.0 / 1.055), 2.4);
}
} }
vec4 srgb_to_linearrgb(vec4 col_from) vec4 srgb_to_linearrgb(vec4 col_from)

View File

@@ -64,8 +64,9 @@ void main()
bvec2 degen_faces = lessThan(abs(faces_area), vec2(DEGENERATE_THRESHOLD)); bvec2 degen_faces = lessThan(abs(faces_area), vec2(DEGENERATE_THRESHOLD));
/* Both triangles are degenerate, abort. */ /* Both triangles are degenerate, abort. */
if (all(degen_faces)) if (all(degen_faces)) {
return; return;
}
#endif #endif
vec2 facing = vec2(dot(n1, lightDirection), vec2 facing = vec2(dot(n1, lightDirection),
@@ -92,8 +93,9 @@ void main()
#endif #endif
/* If both faces face the same direction it's not an outline edge. */ /* If both faces face the same direction it's not an outline edge. */
if (backface.x == backface.y) if (backface.x == backface.y) {
return; return;
}
#ifdef USE_INVOC_EXT #ifdef USE_INVOC_EXT
if (gl_InvocationID == 0) { if (gl_InvocationID == 0) {

View File

@@ -169,8 +169,9 @@ void workbench_private_data_init(WORKBENCH_PrivateData *wpd)
/* normalized trick see: /* normalized trick see:
* http://www.derschmale.com/2014/01/26/reconstructing-positions-from-the-depth-buffer */ * http://www.derschmale.com/2014/01/26/reconstructing-positions-from-the-depth-buffer */
mul_v3_fl(viewvecs[i], 1.0f / viewvecs[i][3]); mul_v3_fl(viewvecs[i], 1.0f / viewvecs[i][3]);
if (is_persp) if (is_persp) {
mul_v3_fl(viewvecs[i], 1.0f / viewvecs[i][2]); mul_v3_fl(viewvecs[i], 1.0f / viewvecs[i][2]);
}
viewvecs[i][3] = 1.0; viewvecs[i][3] = 1.0;
copy_v4_v4(wpd->viewvecs[i], viewvecs[i]); copy_v4_v4(wpd->viewvecs[i], viewvecs[i]);

View File

@@ -813,8 +813,9 @@ void workbench_deferred_solid_cache_populate(WORKBENCH_Data *vedata, Object *ob)
const DRWContextState *draw_ctx = DRW_context_state_get(); const DRWContextState *draw_ctx = DRW_context_state_get();
Scene *scene = draw_ctx->scene; Scene *scene = draw_ctx->scene;
if (!DRW_object_is_renderable(ob)) if (!DRW_object_is_renderable(ob)) {
return; return;
}
if (ob->type == OB_MESH) { if (ob->type == OB_MESH) {
workbench_cache_populate_particles(vedata, ob); workbench_cache_populate_particles(vedata, ob);

View File

@@ -498,8 +498,9 @@ void workbench_forward_cache_populate(WORKBENCH_Data *vedata, Object *ob)
Scene *scene = draw_ctx->scene; Scene *scene = draw_ctx->scene;
const bool is_wire = (ob->dt == OB_WIRE); const bool is_wire = (ob->dt == OB_WIRE);
if (!DRW_object_is_renderable(ob)) if (!DRW_object_is_renderable(ob)) {
return; return;
}
if (ob->type == OB_MESH) { if (ob->type == OB_MESH) {
workbench_forward_cache_populate_particles(vedata, ob); workbench_forward_cache_populate_particles(vedata, ob);

View File

@@ -516,8 +516,9 @@ static void set_pchan_colorset(Object *ob, bPoseChannel *pchan)
*/ */
if (pchan->agrp_index) { if (pchan->agrp_index) {
grp = (bActionGroup *)BLI_findlink(&pose->agroups, (pchan->agrp_index - 1)); grp = (bActionGroup *)BLI_findlink(&pose->agroups, (pchan->agrp_index - 1));
if (grp) if (grp) {
color_index = grp->customCol; color_index = grp->customCol;
}
} }
} }
@@ -775,8 +776,9 @@ static const float *get_bone_solid_color(
const EditBone *UNUSED(eBone), const bPoseChannel *pchan, const bArmature *arm, const EditBone *UNUSED(eBone), const bPoseChannel *pchan, const bArmature *arm,
const int boneflag, const short constflag) const int boneflag, const short constflag)
{ {
if (g_theme.const_color) if (g_theme.const_color) {
return g_theme.bone_solid_color; return g_theme.bone_solid_color;
}
if (arm->flag & ARM_POSEMODE) { if (arm->flag & ARM_POSEMODE) {
static float disp_color[4]; static float disp_color[4];
@@ -792,8 +794,9 @@ static const float *get_bone_solid_with_consts_color(
const EditBone *eBone, const bPoseChannel *pchan, const bArmature *arm, const EditBone *eBone, const bPoseChannel *pchan, const bArmature *arm,
const int boneflag, const short constflag) const int boneflag, const short constflag)
{ {
if (g_theme.const_color) if (g_theme.const_color) {
return g_theme.bone_solid_color; return g_theme.bone_solid_color;
}
const float *col = get_bone_solid_color(eBone, pchan, arm, boneflag, constflag); const float *col = get_bone_solid_color(eBone, pchan, arm, boneflag, constflag);
@@ -809,12 +812,15 @@ static const float *get_bone_solid_with_consts_color(
static float get_bone_wire_thickness(int boneflag) static float get_bone_wire_thickness(int boneflag)
{ {
if (g_theme.const_color) if (g_theme.const_color) {
return g_theme.const_wire; return g_theme.const_wire;
else if (boneflag & (BONE_DRAW_ACTIVE | BONE_SELECTED)) }
else if (boneflag & (BONE_DRAW_ACTIVE | BONE_SELECTED)) {
return 2.0f; return 2.0f;
else }
else {
return 1.0f; return 1.0f;
}
} }
static const float *get_bone_wire_color( static const float *get_bone_wire_color(
@@ -1576,8 +1582,9 @@ static void pchan_draw_ik_lines(bPoseChannel *pchan, const bool only_temp, const
float *line_start = NULL, *line_end = NULL; float *line_start = NULL, *line_end = NULL;
for (con = pchan->constraints.first; con; con = con->next) { for (con = pchan->constraints.first; con; con = con->next) {
if (con->enforce == 0.0f) if (con->enforce == 0.0f) {
continue; continue;
}
switch (con->type) { switch (con->type) {
case CONSTRAINT_TYPE_KINEMATIC: case CONSTRAINT_TYPE_KINEMATIC:
@@ -1586,8 +1593,9 @@ static void pchan_draw_ik_lines(bPoseChannel *pchan, const bool only_temp, const
int segcount = 0; int segcount = 0;
/* if only_temp, only draw if it is a temporary ik-chain */ /* if only_temp, only draw if it is a temporary ik-chain */
if (only_temp && !(data->flag & CONSTRAINT_IK_TEMP)) if (only_temp && !(data->flag & CONSTRAINT_IK_TEMP)) {
continue; continue;
}
/* exclude tip from chain? */ /* exclude tip from chain? */
parchan = ((data->flag & CONSTRAINT_IK_TIP) == 0) ? pchan->parent : pchan; parchan = ((data->flag & CONSTRAINT_IK_TIP) == 0) ? pchan->parent : pchan;
@@ -1605,10 +1613,12 @@ static void pchan_draw_ik_lines(bPoseChannel *pchan, const bool only_temp, const
if (parchan) { if (parchan) {
line_end = parchan->pose_head; line_end = parchan->pose_head;
if (constflag & PCHAN_HAS_TARGET) if (constflag & PCHAN_HAS_TARGET) {
drw_shgroup_bone_ik_lines(line_start, line_end); drw_shgroup_bone_ik_lines(line_start, line_end);
else }
else {
drw_shgroup_bone_ik_no_target_lines(line_start, line_end); drw_shgroup_bone_ik_no_target_lines(line_start, line_end);
}
} }
break; break;
} }
@@ -1618,8 +1628,9 @@ static void pchan_draw_ik_lines(bPoseChannel *pchan, const bool only_temp, const
int segcount = 0; int segcount = 0;
/* don't draw if only_temp, as Spline IK chains cannot be temporary */ /* don't draw if only_temp, as Spline IK chains cannot be temporary */
if (only_temp) if (only_temp) {
continue; continue;
}
parchan = pchan; parchan = pchan;
line_start = parchan->pose_tail; line_start = parchan->pose_tail;
@@ -1826,8 +1837,9 @@ static void draw_armature_pose(Object *ob, const float const_color[4])
} }
/* set temporary flag for drawing bone as active, but only if selected */ /* set temporary flag for drawing bone as active, but only if selected */
if (bone == arm->act_bone) if (bone == arm->act_bone) {
boneflag |= BONE_DRAW_ACTIVE; boneflag |= BONE_DRAW_ACTIVE;
}
draw_bone_relations(NULL, pchan, arm, boneflag, constflag, show_relations); draw_bone_relations(NULL, pchan, arm, boneflag, constflag, show_relations);

View File

@@ -3623,10 +3623,7 @@ GPUBatch *DRW_cache_cursor_get(bool crosshair_lines)
float x = f10 * cosf(angle); float x = f10 * cosf(angle);
float y = f10 * sinf(angle); float y = f10 * sinf(angle);
if (i % 2 == 0) GPU_vertbuf_attr_set(vbo, attr_id.color, v, (i % 2 == 0) ? red : white);
GPU_vertbuf_attr_set(vbo, attr_id.color, v, red);
else
GPU_vertbuf_attr_set(vbo, attr_id.color, v, white);
GPU_vertbuf_attr_set(vbo, attr_id.pos, v, (const float[2]){x, y}); GPU_vertbuf_attr_set(vbo, attr_id.pos, v, (const float[2]){x, y});
GPU_indexbuf_add_generic_vert(&elb, v++); GPU_indexbuf_add_generic_vert(&elb, v++);

View File

@@ -1491,11 +1491,13 @@ static uchar mesh_render_data_looptri_flag(MeshRenderData *rdata, const BMFace *
{ {
uchar fflag = 0; uchar fflag = 0;
if (efa == rdata->efa_act) if (efa == rdata->efa_act) {
fflag |= VFLAG_FACE_ACTIVE; fflag |= VFLAG_FACE_ACTIVE;
}
if (BM_elem_flag_test(efa, BM_ELEM_SELECT)) if (BM_elem_flag_test(efa, BM_ELEM_SELECT)) {
fflag |= VFLAG_FACE_SELECTED; fflag |= VFLAG_FACE_SELECTED;
}
#ifdef WITH_FREESTYLE #ifdef WITH_FREESTYLE
if (rdata->cd.offset.freestyle_face != -1) { if (rdata->cd.offset.freestyle_face != -1) {
@@ -1515,17 +1517,21 @@ static void mesh_render_data_edge_flag(
{ {
eattr->e_flag |= VFLAG_EDGE_EXISTS; eattr->e_flag |= VFLAG_EDGE_EXISTS;
if (eed == rdata->eed_act) if (eed == rdata->eed_act) {
eattr->e_flag |= VFLAG_EDGE_ACTIVE; eattr->e_flag |= VFLAG_EDGE_ACTIVE;
}
if (BM_elem_flag_test(eed, BM_ELEM_SELECT)) if (BM_elem_flag_test(eed, BM_ELEM_SELECT)) {
eattr->e_flag |= VFLAG_EDGE_SELECTED; eattr->e_flag |= VFLAG_EDGE_SELECTED;
}
if (BM_elem_flag_test(eed, BM_ELEM_SEAM)) if (BM_elem_flag_test(eed, BM_ELEM_SEAM)) {
eattr->e_flag |= VFLAG_EDGE_SEAM; eattr->e_flag |= VFLAG_EDGE_SEAM;
}
if (!BM_elem_flag_test(eed, BM_ELEM_SMOOTH)) if (!BM_elem_flag_test(eed, BM_ELEM_SMOOTH)) {
eattr->e_flag |= VFLAG_EDGE_SHARP; eattr->e_flag |= VFLAG_EDGE_SHARP;
}
/* Use a byte for value range */ /* Use a byte for value range */
if (rdata->cd.offset.crease != -1) { if (rdata->cd.offset.crease != -1) {
@@ -1558,11 +1564,13 @@ static uchar mesh_render_data_vertex_flag(MeshRenderData *rdata, const BMVert *e
uchar vflag = VFLAG_VERTEX_EXISTS; uchar vflag = VFLAG_VERTEX_EXISTS;
/* Current vertex */ /* Current vertex */
if (eve == rdata->eve_act) if (eve == rdata->eve_act) {
vflag |= VFLAG_VERTEX_ACTIVE; vflag |= VFLAG_VERTEX_ACTIVE;
}
if (BM_elem_flag_test(eve, BM_ELEM_SELECT)) if (BM_elem_flag_test(eve, BM_ELEM_SELECT)) {
vflag |= VFLAG_VERTEX_SELECTED; vflag |= VFLAG_VERTEX_SELECTED;
}
return vflag; return vflag;
} }
@@ -4803,8 +4811,9 @@ static void uvedit_fill_buffer_data(
float (*av)[3], (*auv)[2]; float (*av)[3], (*auv)[2];
ushort area_stretch; ushort area_stretch;
/* Skip hidden faces. */ /* Skip hidden faces. */
if (!BM_elem_flag_test(efa, BM_ELEM_TAG)) if (!BM_elem_flag_test(efa, BM_ELEM_TAG)) {
continue; continue;
}
uchar face_flag = edit_uv_get_face_flag(efa, efa_act, cd_loop_uv_offset, &scene); uchar face_flag = edit_uv_get_face_flag(efa, efa_act, cd_loop_uv_offset, &scene);
/* Face preprocess */ /* Face preprocess */

View File

@@ -1309,8 +1309,9 @@ static void particle_batch_cache_ensure_pos(
if (psys->part->phystype == PART_PHYS_KEYED) { if (psys->part->phystype == PART_PHYS_KEYED) {
if (psys->flag & PSYS_KEYED) { if (psys->flag & PSYS_KEYED) {
psys_count_keyed_targets(&sim); psys_count_keyed_targets(&sim);
if (psys->totkeyed == 0) if (psys->totkeyed == 0) {
return; return;
}
} }
} }

View File

@@ -150,8 +150,9 @@ void DRW_batching_buffer_request(
} }
int new_id = 0; /* Find insertion point. */ int new_id = 0; /* Find insertion point. */
for (; new_id < chunk->alloc_size; ++new_id) { for (; new_id < chunk->alloc_size; ++new_id) {
if (chunk->bbufs[new_id].format == NULL) if (chunk->bbufs[new_id].format == NULL) {
break; break;
}
} }
/* If there is no batch left. Allocate more. */ /* If there is no batch left. Allocate more. */
if (new_id == chunk->alloc_size) { if (new_id == chunk->alloc_size) {
@@ -191,8 +192,9 @@ void DRW_instancing_buffer_request(
} }
int new_id = 0; /* Find insertion point. */ int new_id = 0; /* Find insertion point. */
for (; new_id < chunk->alloc_size; ++new_id) { for (; new_id < chunk->alloc_size; ++new_id) {
if (chunk->ibufs[new_id].format == NULL) if (chunk->ibufs[new_id].format == NULL) {
break; break;
}
} }
/* If there is no batch left. Allocate more. */ /* If there is no batch left. Allocate more. */
if (new_id == chunk->alloc_size) { if (new_id == chunk->alloc_size) {

View File

@@ -842,8 +842,9 @@ static bool id_type_can_have_drawdata(const short id_type)
static bool id_can_have_drawdata(const ID *id) static bool id_can_have_drawdata(const ID *id)
{ {
/* sanity check */ /* sanity check */
if (id == NULL) if (id == NULL) {
return false; return false;
}
return id_type_can_have_drawdata(GS(id->name)); return id_type_can_have_drawdata(GS(id->name));
} }
@@ -861,16 +862,18 @@ DrawDataList *DRW_drawdatalist_from_id(ID *id)
IdDdtTemplate *idt = (IdDdtTemplate *)id; IdDdtTemplate *idt = (IdDdtTemplate *)id;
return &idt->drawdata; return &idt->drawdata;
} }
else else {
return NULL; return NULL;
}
} }
DrawData *DRW_drawdata_get(ID *id, DrawEngineType *engine_type) DrawData *DRW_drawdata_get(ID *id, DrawEngineType *engine_type)
{ {
DrawDataList *drawdata = DRW_drawdatalist_from_id(id); DrawDataList *drawdata = DRW_drawdatalist_from_id(id);
if (drawdata == NULL) if (drawdata == NULL) {
return NULL; return NULL;
}
LISTBASE_FOREACH(DrawData *, dd, drawdata) { LISTBASE_FOREACH(DrawData *, dd, drawdata) {
if (dd->engine_type == engine_type) { if (dd->engine_type == engine_type) {
@@ -930,8 +933,9 @@ void DRW_drawdata_free(ID *id)
{ {
DrawDataList *drawdata = DRW_drawdatalist_from_id(id); DrawDataList *drawdata = DRW_drawdatalist_from_id(id);
if (drawdata == NULL) if (drawdata == NULL) {
return; return;
}
LISTBASE_FOREACH(DrawData *, dd, drawdata) { LISTBASE_FOREACH(DrawData *, dd, drawdata) {
if (dd->free != NULL) { if (dd->free != NULL) {
@@ -948,8 +952,9 @@ static void drw_drawdata_unlink_dupli(ID *id)
if ((GS(id->name) == ID_OB) && (((Object *)id)->base_flag & BASE_FROM_DUPLI) != 0) { if ((GS(id->name) == ID_OB) && (((Object *)id)->base_flag & BASE_FROM_DUPLI) != 0) {
DrawDataList *drawdata = DRW_drawdatalist_from_id(id); DrawDataList *drawdata = DRW_drawdatalist_from_id(id);
if (drawdata == NULL) if (drawdata == NULL) {
return; return;
}
BLI_listbase_clear((ListBase *)drawdata); BLI_listbase_clear((ListBase *)drawdata);
} }

View File

@@ -674,24 +674,33 @@ static void drw_shgroup_init(DRWShadingGroup *shgroup, GPUShader *shader)
shgroup->callid = GPU_shader_get_builtin_uniform(shader, GPU_UNIFORM_CALLID); shgroup->callid = GPU_shader_get_builtin_uniform(shader, GPU_UNIFORM_CALLID);
shgroup->matflag = 0; shgroup->matflag = 0;
if (shgroup->modelinverse > -1) if (shgroup->modelinverse > -1) {
shgroup->matflag |= DRW_CALL_MODELINVERSE; shgroup->matflag |= DRW_CALL_MODELINVERSE;
if (shgroup->modelview > -1) }
if (shgroup->modelview > -1) {
shgroup->matflag |= DRW_CALL_MODELVIEW; shgroup->matflag |= DRW_CALL_MODELVIEW;
if (shgroup->modelviewinverse > -1) }
if (shgroup->modelviewinverse > -1) {
shgroup->matflag |= DRW_CALL_MODELVIEWINVERSE; shgroup->matflag |= DRW_CALL_MODELVIEWINVERSE;
if (shgroup->modelviewprojection > -1) }
if (shgroup->modelviewprojection > -1) {
shgroup->matflag |= DRW_CALL_MODELVIEWPROJECTION; shgroup->matflag |= DRW_CALL_MODELVIEWPROJECTION;
if (shgroup->normalview > -1) }
if (shgroup->normalview > -1) {
shgroup->matflag |= DRW_CALL_NORMALVIEW; shgroup->matflag |= DRW_CALL_NORMALVIEW;
if (shgroup->normalworld > -1) }
if (shgroup->normalworld > -1) {
shgroup->matflag |= DRW_CALL_NORMALWORLD; shgroup->matflag |= DRW_CALL_NORMALWORLD;
if (shgroup->orcotexfac > -1) }
if (shgroup->orcotexfac > -1) {
shgroup->matflag |= DRW_CALL_ORCOTEXFAC; shgroup->matflag |= DRW_CALL_ORCOTEXFAC;
if (shgroup->objectinfo > -1) }
if (shgroup->objectinfo > -1) {
shgroup->matflag |= DRW_CALL_OBJECTINFO; shgroup->matflag |= DRW_CALL_OBJECTINFO;
if (shgroup->eye > -1) }
if (shgroup->eye > -1) {
shgroup->matflag |= DRW_CALL_EYEVEC; shgroup->matflag |= DRW_CALL_EYEVEC;
}
} }
static void drw_shgroup_instance_init( static void drw_shgroup_instance_init(

View File

@@ -521,8 +521,9 @@ static void draw_frustum_boundbox_calc(const float(*projmat)[4], BoundBox *r_bbo
static void draw_clipping_setup_from_view(void) static void draw_clipping_setup_from_view(void)
{ {
if (DST.clipping.updated) if (DST.clipping.updated) {
return; return;
}
float (*viewinv)[4] = DST.view_data.matstate.mat[DRW_MAT_VIEWINV]; float (*viewinv)[4] = DST.view_data.matstate.mat[DRW_MAT_VIEWINV];
float (*projmat)[4] = DST.view_data.matstate.mat[DRW_MAT_WIN]; float (*projmat)[4] = DST.view_data.matstate.mat[DRW_MAT_WIN];
@@ -684,14 +685,16 @@ bool DRW_culling_sphere_test(BoundSphere *bsphere)
draw_clipping_setup_from_view(); draw_clipping_setup_from_view();
/* Bypass test if radius is negative. */ /* Bypass test if radius is negative. */
if (bsphere->radius < 0.0f) if (bsphere->radius < 0.0f) {
return true; return true;
}
/* Do a rough test first: Sphere VS Sphere intersect. */ /* Do a rough test first: Sphere VS Sphere intersect. */
BoundSphere *frustum_bsphere = &DST.clipping.frustum_bsphere; BoundSphere *frustum_bsphere = &DST.clipping.frustum_bsphere;
float center_dist = len_squared_v3v3(bsphere->center, frustum_bsphere->center); float center_dist = len_squared_v3v3(bsphere->center, frustum_bsphere->center);
if (center_dist > SQUARE(bsphere->radius + frustum_bsphere->radius)) if (center_dist > SQUARE(bsphere->radius + frustum_bsphere->radius)) {
return false; return false;
}
/* Test against the 6 frustum planes. */ /* Test against the 6 frustum planes. */
for (int p = 0; p < 6; p++) { for (int p = 0; p < 6; p++) {
@@ -1012,8 +1015,9 @@ static void release_texture_slots(bool with_persist)
} }
else { else {
for (int i = 0; i < GPU_max_textures(); ++i) { for (int i = 0; i < GPU_max_textures(); ++i) {
if (DST.RST.bound_tex_slots[i] != BIND_PERSIST) if (DST.RST.bound_tex_slots[i] != BIND_PERSIST) {
DST.RST.bound_tex_slots[i] = BIND_NONE; DST.RST.bound_tex_slots[i] = BIND_NONE;
}
} }
} }
@@ -1029,8 +1033,9 @@ static void release_ubo_slots(bool with_persist)
} }
else { else {
for (int i = 0; i < GPU_max_ubo_binds(); ++i) { for (int i = 0; i < GPU_max_ubo_binds(); ++i) {
if (DST.RST.bound_ubo_slots[i] != BIND_PERSIST) if (DST.RST.bound_ubo_slots[i] != BIND_PERSIST) {
DST.RST.bound_ubo_slots[i] = BIND_NONE; DST.RST.bound_ubo_slots[i] = BIND_NONE;
}
} }
} }
@@ -1317,8 +1322,9 @@ static void drw_update_view(void)
static void drw_draw_pass_ex(DRWPass *pass, DRWShadingGroup *start_group, DRWShadingGroup *end_group) static void drw_draw_pass_ex(DRWPass *pass, DRWShadingGroup *start_group, DRWShadingGroup *end_group)
{ {
if (start_group == NULL) if (start_group == NULL) {
return; return;
}
DST.shader = NULL; DST.shader = NULL;

View File

@@ -219,10 +219,12 @@ static void edit_text_cache_populate_select(void *vedata, Object *ob)
float selboxw; float selboxw;
if (i + 1 != ef->selboxes_len) { if (i + 1 != ef->selboxes_len) {
if (ef->selboxes[i + 1].y == sb->y) if (ef->selboxes[i + 1].y == sb->y) {
selboxw = ef->selboxes[i + 1].x - sb->x; selboxw = ef->selboxes[i + 1].x - sb->x;
else }
else {
selboxw = sb->w; selboxw = sb->w;
}
} }
else { else {
selboxw = sb->w; selboxw = sb->w;

View File

@@ -542,12 +542,15 @@ static void OBJECT_engine_init(void *vedata)
grid_res = fabsf(tanf(fov)) / grid_scale; grid_res = fabsf(tanf(fov)) / grid_scale;
e_data.grid_flag = (1 << 4); /* XY plane */ e_data.grid_flag = (1 << 4); /* XY plane */
if (show_axis_x) if (show_axis_x) {
e_data.grid_flag |= SHOW_AXIS_X; e_data.grid_flag |= SHOW_AXIS_X;
if (show_axis_y) }
if (show_axis_y) {
e_data.grid_flag |= SHOW_AXIS_Y; e_data.grid_flag |= SHOW_AXIS_Y;
if (show_floor) }
if (show_floor) {
e_data.grid_flag |= SHOW_GRID; e_data.grid_flag |= SHOW_GRID;
}
} }
else { else {
@@ -925,8 +928,9 @@ static void DRW_shgroup_empty_image(
{ {
/* TODO: 'StereoViews', see draw_empty_image. */ /* TODO: 'StereoViews', see draw_empty_image. */
if (!BKE_object_empty_image_is_visible_in_view3d(ob, rv3d)) if (!BKE_object_empty_image_is_visible_in_view3d(ob, rv3d)) {
return; return;
}
/* Calling 'BKE_image_get_size' may free the texture. Get the size from 'tex' instead, see: T59347 */ /* Calling 'BKE_image_get_size' may free the texture. Get the size from 'tex' instead, see: T59347 */
int size[2] = {0}; int size[2] = {0};

View File

@@ -69,13 +69,15 @@ void main(void)
if (abs(fac0) > 1e-5 && abs(fac3) > 1e-5) { if (abs(fac0) > 1e-5 && abs(fac3) > 1e-5) {
/* If both adjacent verts are facing the camera the same way, /* If both adjacent verts are facing the camera the same way,
* then it isn't an outline edge. */ * then it isn't an outline edge. */
if (sign(fac0) == sign(fac3)) if (sign(fac0) == sign(fac3)) {
return; return;
}
} }
/* Don't outline if concave edge. */ /* Don't outline if concave edge. */
if (dot(n0, v13) > 0.0001) if (dot(n0, v13) > 0.0001) {
return; return;
}
vec2 thick = vColSize[0].w * (lineThickness / viewportSize); vec2 thick = vColSize[0].w * (lineThickness / viewportSize);
vec2 edge_dir = compute_dir(ssPos[1], ssPos[2]); vec2 edge_dir = compute_dir(ssPos[1], ssPos[2]);

View File

@@ -37,8 +37,9 @@ void main()
int color_id = (vertFlag[1] >> 4); int color_id = (vertFlag[1] >> 4);
/* Don't output any edges if we don't show handles */ /* Don't output any edges if we don't show handles */
if (!showCurveHandles && (color_id < 5)) if (!showCurveHandles && (color_id < 5)) {
return; return;
}
bool edge_selected = (((vertFlag[1] | vertFlag[0]) & VERTEX_SELECTED) != 0); bool edge_selected = (((vertFlag[1] | vertFlag[0]) & VERTEX_SELECTED) != 0);

View File

@@ -8,10 +8,12 @@ out vec4 FragColor;
void main() void main()
{ {
if (isSelected != 0) if (isSelected != 0) {
FragColor = colorFaceDot; FragColor = colorFaceDot;
else }
else {
FragColor = colorVertex; FragColor = colorVertex;
}
#ifdef VERTEX_FACING #ifdef VERTEX_FACING
FragColor.a *= 1.0 - abs(facing) * 0.4; FragColor.a *= 1.0 - abs(facing) * 0.4;

View File

@@ -18,14 +18,18 @@ void main()
ivec4 data_m = data & dataMask; ivec4 data_m = data & dataMask;
if ((data_m.x & FACE_ACTIVE) != 0) if ((data_m.x & FACE_ACTIVE) != 0) {
faceColor = colorFaceSelect; faceColor = colorFaceSelect;
else if ((data_m.x & FACE_SELECTED) != 0) }
else if ((data_m.x & FACE_SELECTED) != 0) {
faceColor = colorFaceSelect; faceColor = colorFaceSelect;
else if ((data_m.x & FACE_FREESTYLE) != 0) }
else if ((data_m.x & FACE_FREESTYLE) != 0) {
faceColor = colorFaceFreestyle; faceColor = colorFaceFreestyle;
else }
else {
faceColor = colorFace; faceColor = colorFace;
}
#ifdef USE_WORLD_CLIP_PLANES #ifdef USE_WORLD_CLIP_PLANES
world_clip_planes_calc_clip_distance((ModelMatrix * vec4(pos, 1.0)).xyz); world_clip_planes_calc_clip_distance((ModelMatrix * vec4(pos, 1.0)).xyz);

View File

@@ -148,5 +148,7 @@ void main()
#endif #endif
/* don't write depth if not opaque */ /* don't write depth if not opaque */
if (FragColor.a == 0.0) discard; if (FragColor.a == 0.0) {
discard;
}
} }

View File

@@ -150,14 +150,18 @@ void main()
/* Face */ /* Face */
vec4 fcol; vec4 fcol;
if ((vData[0].x & FACE_ACTIVE) != 0) if ((vData[0].x & FACE_ACTIVE) != 0) {
fcol = colorFaceSelect; fcol = colorFaceSelect;
else if ((vData[0].x & FACE_SELECTED) != 0) }
else if ((vData[0].x & FACE_SELECTED) != 0) {
fcol = colorFaceSelect; fcol = colorFaceSelect;
else if ((vData[0].x & FACE_FREESTYLE) != 0) }
else if ((vData[0].x & FACE_FREESTYLE) != 0) {
fcol = colorFaceFreestyle; fcol = colorFaceFreestyle;
else }
else {
fcol = colorFace; fcol = colorFace;
}
/* Vertex */ /* Vertex */
ssPos[0] = proj(pPos[0]); ssPos[0] = proj(pPos[0]);

View File

@@ -82,14 +82,18 @@ void main()
} }
/* Face */ /* Face */
if ((vData[0].x & FACE_ACTIVE) != 0) if ((vData[0].x & FACE_ACTIVE) != 0) {
faceColor = colorFaceSelect; faceColor = colorFaceSelect;
else if ((vData[0].x & FACE_SELECTED) != 0) }
else if ((vData[0].x & FACE_SELECTED) != 0) {
faceColor = colorFaceSelect; faceColor = colorFaceSelect;
else if ((vData[0].x & FACE_FREESTYLE) != 0) }
else if ((vData[0].x & FACE_FREESTYLE) != 0) {
faceColor = colorFaceFreestyle; faceColor = colorFaceFreestyle;
else }
else {
faceColor = colorFace; faceColor = colorFace;
}
# ifdef VERTEX_SELECTION # ifdef VERTEX_SELECTION
vertexColor = EDIT_MESH_vertex_color(data0.x).rgb; vertexColor = EDIT_MESH_vertex_color(data0.x).rgb;

View File

@@ -33,8 +33,9 @@ void main()
/* If both adjacent verts are facing the camera the same way, /* If both adjacent verts are facing the camera the same way,
* then it isn't an outline edge. */ * then it isn't an outline edge. */
if (sign(fac0) == sign(fac3)) if (sign(fac0) == sign(fac3)) {
return; return;
}
/* Don't outline if concave edge. */ /* Don't outline if concave edge. */
/* That would hide a lot of non useful edge but it flickers badly. /* That would hide a lot of non useful edge but it flickers badly.

View File

@@ -39,12 +39,15 @@ void main()
} }
#ifdef USE_AXIS #ifdef USE_AXIS
if (axis == 0) if (axis == 0) {
finalColor = vec4(1.0, 0.0, 0.0, 1.0); finalColor = vec4(1.0, 0.0, 0.0, 1.0);
else if (axis == 1) }
else if (axis == 1) {
finalColor = vec4(0.0, 1.0, 0.0, 1.0); finalColor = vec4(0.0, 1.0, 0.0, 1.0);
else }
else {
finalColor = vec4(0.0, 0.0, 1.0, 1.0); finalColor = vec4(0.0, 0.0, 1.0, 1.0);
}
#else #else
if (val < 0.0) { if (val < 0.0) {
finalColor = vec4(color, 1.0); finalColor = vec4(color, 1.0);

View File

@@ -18,15 +18,17 @@ float contours(float value, float steps, float width_px, float max_rel_width, fl
/* Don't draw lines at 0 or 1. */ /* Don't draw lines at 0 or 1. */
float rel_value = value * steps; float rel_value = value * steps;
if (rel_value < 0.5 || rel_value > steps - 0.5) if (rel_value < 0.5 || rel_value > steps - 0.5) {
return 0.0; return 0.0;
}
/* Check if completely invisible due to fade out. */ /* Check if completely invisible due to fade out. */
float rel_gradient = gradient * steps; float rel_gradient = gradient * steps;
float rel_min_width = min_width_px * rel_gradient; float rel_min_width = min_width_px * rel_gradient;
if (max_rel_width <= rel_min_width) if (max_rel_width <= rel_min_width) {
return 0.0; return 0.0;
}
/* Main shape of the line, accounting for width bias and maximum weight space width. */ /* Main shape of the line, accounting for width bias and maximum weight space width. */
float rel_width = width_px * rel_gradient; float rel_width = width_px * rel_gradient;
@@ -48,8 +50,9 @@ vec4 contour_grid(float weight, float weight_gradient)
/* Fade away when the gradient is too low to avoid big fills and noise. */ /* Fade away when the gradient is too low to avoid big fills and noise. */
float flt_eps = max(1e-8, 1e-6 * weight); float flt_eps = max(1e-8, 1e-6 * weight);
if (weight_gradient <= flt_eps) if (weight_gradient <= flt_eps) {
return vec4(0.0); return vec4(0.0);
}
/* Three levels of grid lines */ /* Three levels of grid lines */
float grid10 = contours(weight, 10.0, 5.0, 0.3, weight_gradient); float grid10 = contours(weight, 10.0, 5.0, 0.3, weight_gradient);