forked from OctaForge/OctaCore
179 lines
5 KiB
INI
179 lines
5 KiB
INI
lazyshader = [
|
|
defershader $arg1 $arg2 [
|
|
shader @arg1 @arg2 [@@arg3] [@@arg4]
|
|
]
|
|
]
|
|
|
|
ginterpdepth = [
|
|
result [
|
|
uniform vec2 lineardepthscale;
|
|
uniform vec3 gdepthpackparams;
|
|
varying float lineardepth;
|
|
]
|
|
]
|
|
|
|
ginterpvert = [
|
|
if (|| $gdepthformat $arg1) [ginterpdepth]
|
|
]
|
|
msaainterpvert = [ginterpvert $msaasamples]
|
|
|
|
ginterpfrag = [
|
|
result [
|
|
fragdata(0) vec4 gcolor;
|
|
fragdata(1) vec4 gnormal;
|
|
@(? $gdepthformat [
|
|
fragdata(2) vec4 gdepth;
|
|
fragdata(3) vec4 gglow;
|
|
] [
|
|
fragdata(2) vec4 gglow;
|
|
])
|
|
@(if (|| $gdepthformat $arg1) [ginterpdepth])
|
|
]
|
|
]
|
|
msaainterpfrag = [ginterpfrag $msaasamples]
|
|
|
|
gdepthpackvert = [
|
|
if (|| $gdepthformat $arg1) [result [
|
|
lineardepth = dot(lineardepthscale, gl_Position.zw);
|
|
]]
|
|
]
|
|
msaapackvert = [gdepthpackvert $msaasamples]
|
|
|
|
gpackdepth = [
|
|
result [
|
|
vec3 @arg1 = @arg2 * gdepthpackparams;
|
|
@arg1 = vec3(@arg1.x, fract(@arg1.yz));
|
|
@arg1.xy -= @arg1.yz * (1.0/255.0);
|
|
]
|
|
]
|
|
|
|
ghashdepth = [
|
|
if $arg3 [
|
|
arg1 = [(@arg1 + 5.0*@arg3)]
|
|
]
|
|
if $arg2 [result [
|
|
@arg2*0.76 + mix(0.75, 0.25, @arg2)*fract(@arg1*mix(-1.0/192.0, -1.0/64.0, @arg2))
|
|
]] [result [
|
|
0.75*fract(@arg1*(-1.0/192.0))
|
|
]]
|
|
]
|
|
|
|
gdepthpackfrag = [
|
|
result [
|
|
@(if (= $gdepthformat 1) [result [
|
|
@(gpackdepth packdepth lineardepth)
|
|
gdepth.rgb = packdepth;
|
|
gdepth.a = @(? $arg2 $arg2 [0.0]);
|
|
]] [? (> $gdepthformat 1) [
|
|
gdepth.r = lineardepth;
|
|
]])
|
|
@(if $usepacknorm [result [
|
|
gnormal.a = @(if $arg1 [ghashdepth lineardepth $arg2 $arg3] [? $arg2 $arg2 [0.0]]);
|
|
]])
|
|
]
|
|
]
|
|
msaapackfrag = [gdepthpackfrag $msaasamples $arg1 $arg2]
|
|
|
|
gspecpack = [
|
|
result [
|
|
gcolor.a = @(if $arg3 [result [@arg3 *]]) (@arg1 * 85.0/255.0 + 0.5/255.0) @(if $arg2 [result [+ @(if $arg3 [result [@arg4 *]]) 84.0/255.0*clamp(1.5 - 1.5/(1.0 + @arg2), 0.0, 1.0)]]);
|
|
]
|
|
]
|
|
|
|
gnormpack = [
|
|
if $usepacknorm [result [
|
|
gnormal.rgb = @arg1 @(if $arg2 [result [* sqrt(0.25 + 0.5*(@arg2))]]) * 0.5 + 0.5;
|
|
]] [result [
|
|
gnormal.rgb = @arg1*0.5 + 0.5;
|
|
gnormal.a = @(if $arg2 [result [(@arg2)]] [result [1.0]]);
|
|
]]
|
|
]
|
|
|
|
gnormpackdef = [
|
|
result [
|
|
#ifdef @arg2
|
|
@(gnormpack $arg1 $arg2)
|
|
#else
|
|
@(gnormpack $arg1)
|
|
#endif
|
|
]
|
|
]
|
|
|
|
gglowpack = [
|
|
result [
|
|
@(if $arg1 [result [
|
|
float colork = max(gcolor.r, max(gcolor.g, gcolor.b)), glowk = max(@arg1.r, max(@arg1.g, @arg1.b));
|
|
]])
|
|
glowk /= glowk + colork + 1.0e-3;
|
|
gcolor.rgb = @(if $arg1 [result [mix(gcolor.rgb, @arg1, glowk)]] [result [gcolor.rgb]]) * (1.0 - 2.0*glowk*(glowk - 1.0));
|
|
#define @arg2 1.0-glowk
|
|
]
|
|
]
|
|
|
|
gdepthunpackparams = [
|
|
result [
|
|
uniform vec3 gdepthscale;
|
|
uniform vec3 gdepthunpackparams;
|
|
]
|
|
]
|
|
|
|
gdepthunpack = [
|
|
if $arg6 [
|
|
if $arg7 [result [
|
|
vec3 @[arg7] = @[arg2].rgb;
|
|
float @[arg1] = dot(@[arg7], gdepthunpackparams);
|
|
@arg3
|
|
]] [result [
|
|
float @[arg1] = dot(@[arg2].rgb, gdepthunpackparams);
|
|
@arg3
|
|
]]
|
|
] [if (|| $gdepthformat $arg5) [
|
|
if (|| (> $gdepthformat 1) $arg5) [result [
|
|
float @[arg1] = @[arg2].r;
|
|
@arg3
|
|
]] [result [
|
|
float @[arg1] = dot(@[arg2].rgb, gdepthunpackparams);
|
|
@arg3
|
|
]]
|
|
] [if (=s $arg4 []) [result [
|
|
float @[arg1] = gdepthscale.x / (@[arg2].r*gdepthscale.y + gdepthscale.z);
|
|
]] [result [
|
|
float @[arg1] = @[arg2].r;
|
|
@arg4
|
|
]]]]
|
|
]
|
|
|
|
gdepthunpackortho = [
|
|
result [
|
|
float @[arg1] = @(if (= $gdepthformat 1) [result [dot(@[arg2].rgb, gdepthunpackparams)]] [result [@[arg2].r]]);
|
|
@arg3
|
|
]
|
|
]
|
|
|
|
gfetchdefs = [
|
|
gfetchprefix = (? $arg3 $arg3 "gfetch")
|
|
if (? (>= $numargs 2) $arg2 $msaalight) [result [
|
|
uniform sampler2DMS @(prettylist $arg1);
|
|
#define @[gfetchprefix]sample 0
|
|
#define @[gfetchprefix](sampler, coords) texelFetch(sampler, ivec2(coords), @[gfetchprefix]sample)
|
|
#define @[gfetchprefix]offset(sampler, coords, offset) texelFetch(sampler, ivec2(coords) + offset, @[gfetchprefix]sample)
|
|
#define @[gfetchprefix]proj(sampler, coords) texelFetch(sampler, ivec2(coords.xy / coords.z), @[gfetchprefix]sample)
|
|
@(if (! $arg3) [gdepthunpackparams])
|
|
]] [result [
|
|
uniform sampler2DRect @(prettylist $arg1);
|
|
#define @[gfetchprefix](sampler, coords) texture2DRect(sampler, coords)
|
|
#define @[gfetchprefix]offset(sampler, coords, offset) texture2DRectOffset(sampler, coords, offset)
|
|
#define @[gfetchprefix]proj(sampler, coords) texture2DRectProj(sampler, coords)
|
|
@(if (! $arg3) [gdepthunpackparams])
|
|
]]
|
|
]
|
|
|
|
screentexcoord = [
|
|
result [
|
|
uniform vec4 screentexcoord@arg1;
|
|
#define vtexcoord@arg1 (vvertex.xy * screentexcoord@arg1.xy + screentexcoord@arg1.zw)
|
|
]
|
|
]
|
|
|
|
|