Changeset View
Changeset View
Standalone View
Standalone View
source/blender/draw/engines/gpencil/shaders/gpencil_point_frag.glsl
| Show First 20 Lines • Show All 42 Lines • ▼ Show 20 Lines | |||||
| { | { | ||||
| vec2 rtn; | vec2 rtn; | ||||
| rtn.x = abs(pt.x) / radius.x; | rtn.x = abs(pt.x) / radius.x; | ||||
| rtn.y = abs(pt.y) / radius.y; | rtn.y = abs(pt.y) / radius.y; | ||||
| return rtn; | return rtn; | ||||
| } | } | ||||
| float linearrgb_to_srgb(float c) | |||||
| { | |||||
| if (c < 0.0031308) { | |||||
| return (c < 0.0) ? 0.0 : c * 12.92; | |||||
| } | |||||
| else { | |||||
| return 1.055 * pow(c, 1.0 / 2.4) - 0.055; | |||||
| } | |||||
| } | |||||
| vec4 texture_read_as_srgb(sampler2D tex, bool premultiplied, vec2 co) | |||||
| { | |||||
| /* By convention image textures return scene linear colors, but | |||||
| * grease pencil still works in srgb. */ | |||||
| vec4 color = texture(tex, co); | |||||
| /* Unpremultiply if stored multiplied, since straight alpha is expected by shaders. */ | |||||
| if (premultiplied && !(color.a == 0.0 || color.a == 1.0)) { | |||||
| color.rgb = color.rgb / color.a; | |||||
| } | |||||
| color.r = linearrgb_to_srgb(color.r); | |||||
| color.g = linearrgb_to_srgb(color.g); | |||||
| color.b = linearrgb_to_srgb(color.b); | |||||
| return color; | |||||
| } | |||||
| void main() | void main() | ||||
| { | { | ||||
| vec2 centered = mTexCoord - vec2(0.5); | vec2 centered = mTexCoord - vec2(0.5); | ||||
| float ellip = check_ellipse_point(centered, vec2(gradient_s / 2.0)); | float ellip = check_ellipse_point(centered, vec2(gradient_s / 2.0)); | ||||
| vec2 box; | vec2 box; | ||||
| if (mode != GPENCIL_MODE_BOX) { | if (mode != GPENCIL_MODE_BOX) { | ||||
| if (ellip > 1.0) { | if (ellip > 1.0) { | ||||
| ▲ Show 20 Lines • Show All 49 Lines • Show Last 20 Lines | |||||