Differential D16125 Diff 56366 source/blender/draw/engines/overlay/shaders/overlay_outline_prepass_gpencil_frag.glsl
Changeset View
Changeset View
Standalone View
Standalone View
source/blender/draw/engines/overlay/shaders/overlay_outline_prepass_gpencil_frag.glsl
| Show All 19 Lines | if (gpencil_stroke_round_cap_mask(gp_interp.sspos.xy, | ||||
| discard; | discard; | ||||
| } | } | ||||
| if (!gpStrokeOrder3d) { | if (!gpStrokeOrder3d) { | ||||
| /* Stroke order 2D. Project to gpDepthPlane. */ | /* Stroke order 2D. Project to gpDepthPlane. */ | ||||
| bool is_persp = drw_view.winmat[3][3] == 0.0; | bool is_persp = drw_view.winmat[3][3] == 0.0; | ||||
| vec2 uvs = vec2(gl_FragCoord.xy) * drw_view.viewport_size_inverse; | vec2 uvs = vec2(gl_FragCoord.xy) * drw_view.viewport_size_inverse; | ||||
| vec3 pos_ndc = vec3(uvs, gl_FragCoord.z) * 2.0 - 1.0; | vec3 pos_ndc = vec3(uvs, gl_FragCoord.z) * 2.0 - 1.0; | ||||
| vec4 pos_world = drw_view.persinv * vec4(pos_ndc, 1.0); | vec4 pos_world = drw_view.viewinv * (drw_view.wininv * vec4(pos_ndc, 1.0)); | ||||
| vec3 pos = pos_world.xyz / pos_world.w; | vec3 pos = pos_world.xyz / pos_world.w; | ||||
| vec3 ray_ori = pos; | vec3 ray_ori = pos; | ||||
| vec3 ray_dir = (is_persp) ? (drw_view.viewinv[3].xyz - pos) : drw_view.viewinv[2].xyz; | vec3 ray_dir = (is_persp) ? (drw_view.viewinv[3].xyz - pos) : drw_view.viewinv[2].xyz; | ||||
| vec3 isect = ray_plane_intersection(ray_ori, ray_dir, gpDepthPlane); | vec3 isect = ray_plane_intersection(ray_ori, ray_dir, gpDepthPlane); | ||||
| vec4 ndc = point_world_to_ndc(isect); | vec4 ndc = point_world_to_ndc(isect); | ||||
| gl_FragDepth = (ndc.z / ndc.w) * 0.5 + 0.5; | gl_FragDepth = (ndc.z / ndc.w) * 0.5 + 0.5; | ||||
| } | } | ||||
| else { | else { | ||||
| gl_FragDepth = gl_FragCoord.z; | gl_FragDepth = gl_FragCoord.z; | ||||
| } | } | ||||
| out_object_id = interp.ob_id; | out_object_id = interp.ob_id; | ||||
| } | } | ||||