demotool/demo.srd

112 lines
2.7 KiB
Text
Raw Normal View History

2017-11-06 10:15:38 +01:00
(init
# Compute viewport size
(if (gt width height)
(
(set vp-height height)
(set vp-width (mul height (div 16 9)))
(set vp-x (div (sub width vp-width) 2))
(set vp-y 0)
)(
(set vp-width width)
(set vp-height (div width (div 16 9)))
(set vp-y (div (sub height vp-height) 2))
(set vp-x 0)
)
)
(program prg-fullscreen "fullscreen.v.glsl")
(call dof-init)
)
2017-11-06 10:15:38 +01:00
(frame
(profiling "Frame render"
{ FIXME: other stages }
(call dof-main { FIXME: args here })
)
)
################################################################################
# Depth of Field
(fn dof-init ()
# Sampler used for the inputs
(sampler dof-sampler
(sampling clamp-edge)
(mipmaps no)
(sampling linear)
(lod 0 0)
)
# Texture & RT for pass 1
(texture tx-dof-pass1 rgb-f16 vp-width vp-height)
(framebuffer rt-dof-pass1 (colors tx-dof-pass1))
# Texture & RT for pass 2
(texture tx-dof-pass2 rgb-f16 vp-width vp-height)
(framebuffer rt-dof-pass2 (colors tx-dof-pass2))
(alias tx-dof-output tx-dof-pass2)
# Output debugging
(odbg tx-dof-pass1 hdr "DoF - First pass")
(odbg tx-dof-pass2 hdr "DoF - Output")
# Programs
(program prg-dof-pass1 "dof-pass1.f.glsl")
(program prg-dof-pass2 "dof-pass2.f.glsl")
(set-uniforms-integer prg-dof-pass1 0 1)
(set-uniforms-integer prg-dof-pass1 1 1)
(set-uniforms-integer prg-dof-pass2 0 1)
(set-uniforms-integer prg-dof-pass2 1 1)
# Pipelines
(pipeline pl-dof-pass1 prg-fullscreen prg-dof-pass1)
(pipeline pl-dof-pass2 prg-fullscreen prg-dof-pass2)
# Inputs
(input dof-sharp-distance 0)
(input dof-sharp-range 50)
(input dof-falloff 50)
(input dof-max-blur 16)
(input dof-samples 16)
# Input overrides
(ui-overrides "Post-processing" "Depth of Field"
(float dof-sharp-distance (min 0) (max 1000) (step .1))
(float dof-sharp-range (min 0) (max 500) (step .1))
(float dof-falloff (min 0) (max 500) (step .1))
(float dof-max-blur (min 1) (max 64) (step .1))
(int dof-samples (min 1) (max 64) (step .1))
)
)
(fn dof-set-uniforms (prog)
(set-uniforms prog 2 (
(get-input dof-sharp-distance)
(get-input dof-sharp-range)
(get-input dof-falloff)
(get-input dof-max-blur)
))
(set-uniforms prog 3 ((get-input dof-samples)))
(set-uniforms prog 4 (vp-width vp-height time))
)
(fn dof-main (in-image in-depth)
(profiling "Depth of Field"
(use-texture 1 in-depth dof-sampler)
# First pass
(call dof-set-uniforms prg-dof-pass1)
(use-texture 0 in-image dof-sampler)
(use-pipeline pl-dof-pass1)
(use-framebuffer rt-dof-pass1)
(fullscreen)
# Second pass
(call dof-set-uniforms prg-dof-pass2)
(use-texture 0 tx-dof-pass1 dof-sampler)
(use-pipeline pl-dof-pass2)
(use-framebuffer rt-dof-pass2)
(fullscreen)
)
)