mirror of
https://github.com/italicsjenga/vello.git
synced 2025-01-10 04:31:30 +11:00
24 lines
927 B
WebGPU Shading Language
24 lines
927 B
WebGPU Shading Language
|
// SPDX-License-Identifier: Apache-2.0 OR MIT OR Unlicense
|
||
|
|
||
|
// This file defines utility functions that interact with host-shareable buffer objects. It should
|
||
|
// be imported once following the resource binding declarations in the shader module that access
|
||
|
// them.
|
||
|
|
||
|
// Reads a draw tag from the scene buffer, defaulting to DRAWTAG_NOP if the given `ix` is beyond the
|
||
|
// range of valid draw objects (e.g this can happen if `ix` is derived from an invocation ID in a
|
||
|
// workgroup that partially spans valid range).
|
||
|
//
|
||
|
// This function depends on the following global declarations:
|
||
|
// * `scene`: array<u32>
|
||
|
// * `config`: Config (see config.wgsl)
|
||
|
fn read_draw_tag_from_scene(ix: u32) -> u32 {
|
||
|
let tag_ix = config.drawtag_base + ix;
|
||
|
var tag_word: u32;
|
||
|
if tag_ix < config.drawtag_base + config.n_drawobj {
|
||
|
tag_word = scene[tag_ix];
|
||
|
} else {
|
||
|
tag_word = DRAWTAG_NOP;
|
||
|
}
|
||
|
return tag_word;
|
||
|
}
|