Changeset View
Changeset View
Standalone View
Standalone View
source/blender/gpu/shaders/gpu_shader_2D_widget_base_vert.glsl
| Show First 20 Lines • Show All 55 Lines • ▼ Show 20 Lines | |||||
| #endif | #endif | ||||
| vec2 do_widget(void) | vec2 do_widget(void) | ||||
| { | { | ||||
| /* Offset to avoid losing pixels (mimics conservative rasterization). */ | /* Offset to avoid losing pixels (mimics conservative rasterization). */ | ||||
| const vec2 ofs = vec2(0.5, -0.5); | const vec2 ofs = vec2(0.5, -0.5); | ||||
| lineWidth = abs(rect.x - recti.x); | lineWidth = abs(rect.x - recti.x); | ||||
| vec2 emboss_ofs = vec2(0.0, -lineWidth); | vec2 emboss_ofs = vec2(0.0, -lineWidth); | ||||
| vec2 v_pos[4] = vec2[4](rect.xz + emboss_ofs + ofs.yy, | |||||
| rect.xw + ofs.yx, | vec2 pos; | ||||
| rect.yz + emboss_ofs + ofs.xy, | switch (gl_VertexID) { | ||||
| rect.yw + ofs.xx); | default: | ||||
| vec2 pos = v_pos[gl_VertexID]; | case 0: { | ||||
| pos = rect.xz + emboss_ofs + ofs.yy; | |||||
| break; | |||||
| } | |||||
| case 1: { | |||||
| pos = rect.xw + ofs.yx; | |||||
| break; | |||||
| } | |||||
| case 2: { | |||||
| pos = rect.yz + emboss_ofs + ofs.xy; | |||||
| break; | |||||
| } | |||||
| case 3: { | |||||
| pos = rect.yw + ofs.xx; | |||||
| break; | |||||
| } | |||||
| } | |||||
| uvInterp = pos - rect.xz; | uvInterp = pos - rect.xz; | ||||
| outRectSize = rect.yw - rect.xz; | outRectSize = rect.yw - rect.xz; | ||||
| outRoundCorners = rads * roundCorners; | outRoundCorners = rads * roundCorners; | ||||
| vec2 uv = uvInterp / outRectSize; | vec2 uv = uvInterp / outRectSize; | ||||
| float fac = clamp((shadeDir > 0.0) ? uv.y : uv.x, 0.0, 1.0); | float fac = clamp((shadeDir > 0.0) ? uv.y : uv.x, 0.0, 1.0); | ||||
| /* Note innerColor is premultiplied inside the fragment shader. */ | /* Note innerColor is premultiplied inside the fragment shader. */ | ||||
| ▲ Show 20 Lines • Show All 119 Lines • Show Last 20 Lines | |||||