mirror of
https://github.com/italicsjenga/vello.git
synced 2025-01-10 20:51:29 +11:00
18563101b2
The blending math had two errors: first, colors were not separated for the purpose of blending (blending was wrongly applied to premultiplied values), and second, alpha was applied over-aggressively to the alpha channel. This PR does *not* address the issue of gamma correctness. That is a complex issue and should probably be handled in the short term by disabling sRGB conversions and doing the internal math in sRGB color space rather than linear. This will degrade the quality of antialiasing but on the other hand give spec-compliant results for compositing. We remove the plus-darker mode as its specification does not appear to be valid. The plus-lighter mode remains as it is quite useful for cross-fading effects. Also the generated shaders were compiled on mac so the DXIL is unsigned. Those should be compiled on Windows before this PR is merged. (and we should figure out a better strategy for all that)
135 lines
6.4 KiB
GLSL
135 lines
6.4 KiB
GLSL
# Build file for shaders.
|
|
|
|
# You must have Vulkan tools in your path, or patch here.
|
|
|
|
glslang_validator = glslangValidator
|
|
spirv_cross = spirv-cross
|
|
dxc = dxc
|
|
|
|
# See https://github.com/KhronosGroup/SPIRV-Cross/issues/1248 for
|
|
# why we set this.
|
|
msl_flags = --msl-decoration-binding
|
|
|
|
rule glsl
|
|
command = $glslang_validator $flags -V -o $out $in
|
|
|
|
rule hlsl
|
|
command = $spirv_cross --hlsl --shader-model 60 $in --output $out
|
|
|
|
rule dxil
|
|
command = $dxc -T cs_6_0 $in -Fo $out
|
|
|
|
rule msl
|
|
command = $spirv_cross --msl $in --output $out $msl_flags
|
|
|
|
build gen/binning.spv: glsl binning.comp | bins.h drawtag.h setup.h mem.h
|
|
build gen/binning.hlsl: hlsl gen/binning.spv
|
|
build gen/binning.dxil: dxil gen/binning.hlsl
|
|
build gen/binning.msl: msl gen/binning.spv
|
|
|
|
build gen/tile_alloc.spv: glsl tile_alloc.comp | drawtag.h tile.h setup.h mem.h
|
|
build gen/tile_alloc.hlsl: hlsl gen/tile_alloc.spv
|
|
build gen/tile_alloc.dxil: dxil gen/tile_alloc.hlsl
|
|
build gen/tile_alloc.msl: msl gen/tile_alloc.spv
|
|
|
|
build gen/path_coarse.spv: glsl path_coarse.comp | pathseg.h tile.h setup.h mem.h
|
|
build gen/path_coarse.hlsl: hlsl gen/path_coarse.spv
|
|
build gen/path_coarse.dxil: dxil gen/path_coarse.hlsl
|
|
build gen/path_coarse.msl: msl gen/path_coarse.spv
|
|
|
|
build gen/backdrop.spv: glsl backdrop.comp | tile.h setup.h mem.h
|
|
build gen/backdrop.hlsl: hlsl gen/backdrop.spv
|
|
build gen/backdrop.dxil: dxil gen/backdrop.hlsl
|
|
build gen/backdrop.msl: msl gen/backdrop.spv
|
|
|
|
build gen/backdrop_lg.spv: glsl backdrop.comp | tile.h setup.h mem.h
|
|
flags = -DBACKDROP_DIST_FACTOR=4
|
|
build gen/backdrop_lg.hlsl: hlsl gen/backdrop_lg.spv
|
|
build gen/backdrop_lg.dxil: dxil gen/backdrop_lg.hlsl
|
|
build gen/backdrop_lg.msl: msl gen/backdrop_lg.spv
|
|
|
|
build gen/coarse.spv: glsl coarse.comp | drawtag.h bins.h ptcl.h blend.h setup.h mem.h
|
|
build gen/coarse.hlsl: hlsl gen/coarse.spv
|
|
build gen/coarse.dxil: dxil gen/coarse.hlsl
|
|
build gen/coarse.msl: msl gen/coarse.spv
|
|
|
|
build gen/kernel4.spv: glsl kernel4.comp | blend.h ptcl.h setup.h mem.h
|
|
build gen/kernel4.hlsl: hlsl gen/kernel4.spv
|
|
build gen/kernel4.dxil: dxil gen/kernel4.hlsl
|
|
build gen/kernel4.msl: msl gen/kernel4.spv
|
|
|
|
build gen/kernel4_gray.spv: glsl kernel4.comp | blend.h ptcl.h setup.h mem.h
|
|
flags = -DGRAY
|
|
build gen/kernel4_gray.hlsl: hlsl gen/kernel4_gray.spv
|
|
build gen/kernel4_gray.dxil: dxil gen/kernel4_gray.hlsl
|
|
build gen/kernel4_gray.msl: msl gen/kernel4_gray.spv
|
|
|
|
# New element pipeline follows
|
|
|
|
build gen/transform_reduce.spv: glsl transform_reduce.comp | scene.h setup.h mem.h
|
|
build gen/transform_reduce.hlsl: hlsl gen/transform_reduce.spv
|
|
build gen/transform_reduce.dxil: dxil gen/transform_reduce.hlsl
|
|
build gen/transform_reduce.msl: msl gen/transform_reduce.spv
|
|
|
|
build gen/transform_root.spv: glsl transform_scan.comp | setup.h
|
|
flags = -DROOT
|
|
build gen/transform_root.hlsl: hlsl gen/transform_root.spv
|
|
build gen/transform_root.dxil: dxil gen/transform_root.hlsl
|
|
build gen/transform_root.msl: msl gen/transform_root.spv
|
|
|
|
build gen/transform_leaf.spv: glsl transform_leaf.comp | scene.h tile.h setup.h mem.h
|
|
build gen/transform_leaf.hlsl: hlsl gen/transform_leaf.spv
|
|
build gen/transform_leaf.dxil: dxil gen/transform_leaf.hlsl
|
|
build gen/transform_leaf.msl: msl gen/transform_leaf.spv
|
|
|
|
build gen/pathtag_reduce.spv: glsl pathtag_reduce.comp | pathtag.h setup.h mem.h
|
|
build gen/pathtag_reduce.hlsl: hlsl gen/pathtag_reduce.spv
|
|
build gen/pathtag_reduce.dxil: dxil gen/pathtag_reduce.hlsl
|
|
build gen/pathtag_reduce.msl: msl gen/pathtag_reduce.spv
|
|
|
|
build gen/pathtag_root.spv: glsl pathtag_scan.comp | pathtag.h setup.h
|
|
flags = -DROOT
|
|
build gen/pathtag_root.hlsl: hlsl gen/pathtag_root.spv
|
|
build gen/pathtag_root.dxil: dxil gen/pathtag_root.hlsl
|
|
build gen/pathtag_root.msl: msl gen/pathtag_root.spv
|
|
|
|
build gen/bbox_clear.spv: glsl bbox_clear.comp | setup.h mem.h
|
|
build gen/bbox_clear.hlsl: hlsl gen/bbox_clear.spv
|
|
build gen/bbox_clear.dxil: dxil gen/bbox_clear.hlsl
|
|
build gen/bbox_clear.msl: msl gen/bbox_clear.spv
|
|
|
|
build gen/pathseg.spv: glsl pathseg.comp | tile.h pathseg.h pathtag.h setup.h mem.h
|
|
build gen/pathseg.hlsl: hlsl gen/pathseg.spv
|
|
build gen/pathseg.dxil: dxil gen/pathseg.hlsl
|
|
build gen/pathseg.msl: msl gen/pathseg.spv
|
|
|
|
build gen/draw_reduce.spv: glsl draw_reduce.comp | scene.h drawtag.h setup.h mem.h
|
|
build gen/draw_reduce.hlsl: hlsl gen/draw_reduce.spv
|
|
build gen/draw_reduce.dxil: dxil gen/draw_reduce.hlsl
|
|
build gen/draw_reduce.msl: msl gen/draw_reduce.spv
|
|
|
|
build gen/draw_root.spv: glsl draw_scan.comp | drawtag.h setup.h
|
|
flags = -DROOT
|
|
build gen/draw_root.hlsl: hlsl gen/draw_root.spv
|
|
build gen/draw_root.dxil: dxil gen/draw_root.hlsl
|
|
build gen/draw_root.msl: msl gen/draw_root.spv
|
|
|
|
build gen/draw_leaf.spv: glsl draw_leaf.comp | blend.h scene.h drawtag.h setup.h mem.h
|
|
build gen/draw_leaf.hlsl: hlsl gen/draw_leaf.spv
|
|
build gen/draw_leaf.dxil: dxil gen/draw_leaf.hlsl
|
|
build gen/draw_leaf.msl: msl gen/draw_leaf.spv
|
|
|
|
build gen/clip_reduce.spv: glsl clip_reduce.comp | mem.h setup.h
|
|
build gen/clip_reduce.hlsl: hlsl gen/clip_reduce.spv
|
|
build gen/clip_reduce.dxil: dxil gen/clip_reduce.hlsl
|
|
build gen/clip_reduce.msl: msl gen/clip_reduce.spv
|
|
|
|
build gen/clip_leaf.spv: glsl clip_leaf.comp | mem.h setup.h
|
|
build gen/clip_leaf.hlsl: hlsl gen/clip_leaf.spv
|
|
build gen/clip_leaf.dxil: dxil gen/clip_leaf.hlsl
|
|
build gen/clip_leaf.msl: msl gen/clip_leaf.spv
|
|
|
|
build spv: phony gen/backdrop_lg.spv gen/backdrop.spv gen/bbox_clear.spv gen/binning.spv gen/clip_leaf.spv gen/clip_reduce.spv gen/coarse.spv gen/draw_leaf.spv gen/draw_reduce.spv gen/draw_root.spv gen/kernel4.spv gen/kernel4_gray.spv gen/path_coarse.spv gen/pathseg.spv gen/pathtag_reduce.spv gen/pathtag_root.spv gen/tile_alloc.spv gen/transform_leaf.spv gen/transform_reduce.spv gen/transform_root.spv
|
|
build dxil: phony gen/backdrop.hlsl gen/backdrop_lg.hlsl gen/bbox_clear.hlsl gen/binning.hlsl gen/clip_leaf.hlsl gen/clip_reduce.hlsl gen/coarse.hlsl gen/draw_leaf.hlsl gen/draw_reduce.hlsl gen/draw_root.hlsl gen/kernel4.hlsl gen/kernel4_gray.hlsl gen/path_coarse.hlsl gen/pathseg.hlsl gen/pathtag_reduce.hlsl gen/pathtag_root.hlsl gen/tile_alloc.hlsl gen/transform_leaf.hlsl gen/transform_reduce.hlsl gen/transform_root.hlsl
|
|
build msl: phony gen/backdrop_lg.msl gen/backdrop.msl gen/bbox_clear.msl gen/binning.msl gen/clip_leaf.msl gen/clip_reduce.msl gen/coarse.msl gen/draw_leaf.msl gen/draw_reduce.msl gen/draw_root.msl gen/kernel4.msl gen/kernel4_gray.msl gen/path_coarse.msl gen/pathseg.msl gen/pathtag_reduce.msl gen/pathtag_root.msl gen/tile_alloc.msl gen/transform_leaf.msl gen/transform_reduce.msl gen/transform_root.msl
|