vkgs-sim / configs /render_graph.json
kimjunhan's picture
Add files using upload-large-folder tool
5170de3 verified
Raw History Blame Contribute Delete
9.33 kB
{
"_doc": "Vulkan ๋ Œ๋” ๊ทธ๋ž˜ํ”„ (src/vkgs/src/render_graph.*). pipelines = ํŒŒ์ดํ”„๋ผ์ธ ์ •์˜, resources = ๊ทธ๋ž˜ํ”„๊ฐ€ ์ถ”์ ํ•˜๋Š” ๋ฆฌ์†Œ์Šค, passes = ๋…ธ๋“œ (kind = ์—”์ง„์˜ ์‹คํ–‰๊ธฐ ์ด๋ฆ„, uses = [๋ฆฌ์†Œ์Šค, ์‚ฌ์šฉ ๋ฐฉ์‹]). ์—”์ง„์€ ์„ ์–ธ ์ˆœ์„œ๋Œ€๋กœ for ๋ฌธ ํ•˜๋‚˜๋กœ ์ˆœํšŒํ•˜๋ฉฐ, uses ๋กœ ๋ฐฐ๋ฆฌ์–ดยท๋ ˆ์ด์•„์›ƒ ์ „ํ™˜์„ ์ž๋™์œผ๋กœ ๋„ฃ๋Š”๋‹ค (์„ ์–ธ ์ˆœ์„œ = ์ ‘๊ทผ ์ˆœ์„œ). vkgs_viewer --graph out.dot ๋กœ ๊ทธ๋ฆผ.",
"pipelines": {
"_doc": "graphics: vertex + fragment, topology(triangle_list|triangle_strip|line_list), depth(off|test|test_write|write_only), cull(none|back), line_width(dynamic ์ด๋ฉด vkCmdSetLineWidth). compute: compute.",
"gs_preprocess": {"compute": "gs_preprocess.comp"},
"gs_sort": {"compute": "gs_sort.comp"},
"gs_radix_hist": {"compute": "gs_radix_hist.comp"},
"gs_radix_scan": {"compute": "gs_radix_scan.comp"},
"gs_radix_scatter": {"compute": "gs_radix_scatter.comp"},
"gs_splat": {"vertex": "gs_splat.vert", "fragment": "gs_splat.frag", "topology": "triangle_strip", "depth": "test"},
"line": {"vertex": "line.vert", "fragment": "line.frag", "topology": "line_list", "depth": "test", "line_width": "dynamic"},
"occluder": {"vertex": "line.vert", "fragment": "line.frag", "topology": "triangle_list", "depth": "write_only", "line_width": "dynamic"},
"env": {"vertex": "env.vert", "fragment": "env.frag", "topology": "triangle_list", "depth": "off", "target": "background"},
"sky_sim": {"vertex": "env.vert", "fragment": "sky_sim.frag", "topology": "triangle_list", "depth": "off", "target": "background"},
"pbr": {"vertex": "pbr.vert", "fragment": "pbr.frag", "topology": "triangle_list", "depth": "test_write", "cull": "back"},
"gltf_opaque": {"vertex": "pbr_gltf.vert", "fragment": "pbr_gltf.frag", "topology": "triangle_list", "depth": "test_write"},
"gltf_blend": {"vertex": "pbr_gltf.vert", "fragment": "pbr_gltf.frag", "topology": "triangle_list", "depth": "test"},
"shadow": {"vertex": "shadow.vert", "fragment": "shadow.frag", "topology": "triangle_strip", "depth": "test"},
"weather": {"compute": "weather.comp"},
"precip": {"vertex": "precip.vert", "fragment": "precip.frag", "topology": "triangle_strip", "target": "precip"},
"fxaa": {"compute": "fxaa.comp"},
"camera_isp": {"compute": "camera_isp.comp", "_doc": "์…ฐ์ด๋” ๊ทธ๋ž˜ํ”„ configs/shader_graphs/camera_isp.json ์ด ์ƒ์„ฑ"},
"camera_mode": {"compute": "camera_mode.comp"}
},
"resources": {
"gaussians": {"type": "buffer", "doc": "๊ฐ€์šฐ์‹œ์•ˆ (์œ„์น˜ยท๊ณต๋ถ„์‚ฐยทSH), ๋กœ๋“œ ๋•Œ ํ•œ ๋ฒˆ"},
"camera": {"type": "buffer", "doc": "์นด๋ฉ”๋ผ UBO"},
"splats": {"type": "buffer", "doc": "ํ™”๋ฉด๊ณต๊ฐ„ ์Šคํ”Œ๋žซ"},
"keys": {"type": "buffer", "doc": "๊นŠ์ด ์ •๋ ฌ ํ‚ค (๋ณด์ด๋Š” ๊ฒƒ๋งŒ ์•ž์— ๋ชจ์€๋‹ค)"},
"keys_tmp": {"type": "buffer", "doc": "radix ์ •๋ ฌ ์ž„์‹œ (keys ์™€ ๋ฒˆ๊ฐˆ์•„)",
"create": {"bytes_per": "gaussians_pow2", "stride": 8, "bindless": "ssbo"}},
"sort_hist": {"type": "buffer", "doc": "radix ์ •๋ ฌ (์›Œํฌ๊ทธ๋ฃน, ์ž๋ฆฟ์ˆ˜) ํžˆ์Šคํ† ๊ทธ๋žจยท์ถœ๋ ฅ ์œ„์น˜",
"create": {"bytes": 524288, "bindless": "ssbo"}},
"draw_args": {"type": "buffer", "doc": "์ธ๋‹ค์ด๋ ‰ํŠธ ๊ทธ๋ฆฌ๊ธฐ ์ธ์ž"},
"draw_readback": {"type": "buffer", "doc": "๋ณด์ด๋Š” ์Šคํ”Œ๋žซ ์ˆ˜ (ํ˜ธ์ŠคํŠธ ์ฝ๊ธฐ)"},
"color": {"type": "image", "format": "rgba16f", "doc": "์žฅ๋ฉด ์ƒ‰ (premultiplied). rgba16f | rgba32f โ€” 16๋น„ํŠธ๋Š” ๋ธ”๋ Œ๋”ฉ ๋Œ€์—ญํญ์ด ๋ฐ˜"},
"depth_acc": {"type": "image", "format": "rg32f", "doc": "๊ฑฐ๋ฆฌ ๋ˆ„์  (ฮฃzฮฑ, ฮฃฮฑ) โ€” ํ‘œ๋ฉด ๊นŠ์ด = R/G, ๋ฐฐ๊ฒฝ ๋น„์œจ = 1โˆ’G (depth_common.glsl). rg32f | rg16f"},
"depth": {"type": "image", "format": "d32", "doc": "๋ฉ”์‹œ ๊นŠ์ด"},
"weather_ubo": {"type": "buffer", "doc": "๋‚ ์”จยท์กฐ๋„ ๋งค๊ฐœ๋ณ€์ˆ˜"},
"post": {"type": "image", "format": "rgba16f", "doc": "๋‚ ์”จ ํ›„์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ โ†’ ํ™”๋ฉดยทPNGยท๋ฏธ๋ฆฌ๋ณด๊ธฐ"},
"background": {"type": "image", "format": "rgba16f", "doc": "๋ฐฐ๊ฒฝ ํ•˜๋Š˜ (์‹œ๋ฎฌ๋ ˆ์ด์…˜ ํ•˜๋Š˜ยทํ•™์Šต๋œ ํ•˜๋Š˜ยทํ™˜๊ฒฝ๋งต). ์žฅ๋ฉด์€ ํˆฌ๋ช… ๋ฐฐ๊ฒฝ ์œ„์— ์Œ“๊ณ  weather ๊ฐ€ ํ•ฉ์นœ๋‹ค",
"create": {"size": "screen"}},
"precip": {"type": "image", "format": "rgba16f", "doc": "๊ฐ•์ˆ˜ ์ž…์ž ๋ ˆ์ด์–ด (premultiplied ์„ ํ˜•) โ†’ weather ๊ฐ€ ํ•ฉ์„ฑ",
"create": {"size": "screen"}},
"isp_params": {"type": "buffer", "doc": "์นด๋ฉ”๋ผ ISP ์…ฐ์ด๋” ๊ทธ๋ž˜ํ”„ ๋งค๊ฐœ๋ณ€์ˆ˜ (float[])",
"create": {"bytes": 1024, "host_visible": true, "bindless": "ssbo"}}
},
"targets": {
"_doc": "๋ Œ๋” ํŒจ์Šค ์ •์˜: color = ์ƒ‰ ์ฒจ๋ถ€ (๊ทธ๋ž˜ํ”„๊ฐ€ ๋งŒ๋“  ์ด๋ฏธ์ง€), ๋งค๋ฒˆ ์ง€์šด๋‹ค. ํŒŒ์ดํ”„๋ผ์ธ์˜ target ๊ณผ ๋ž˜์Šคํ„ฐ ํŒจ์Šค์˜ params.target ์ด ์ด ์ด๋ฆ„์„ ์“ด๋‹ค. scene ์€ ์—”์ง„ ๊ธฐ๋ณธ (color + depth_acc + depth)",
"precip": {"color": ["precip"]},
"background": {"color": ["background"]}
},
"passes": [
{"name": "clear_draw_args", "kind": "fill_draw_args", "uses": [["draw_args", "transfer_dst"]],
"params": {"buffer": "draw_args", "values": [4, 0, 0, 0]}},
{"name": "preprocess", "kind": "compute",
"uses": [["gaussians", "storage_read"], ["camera", "uniform"], ["splats", "storage_write"], ["keys", "storage_write"], ["draw_args", "storage_read_write"]],
"params": {"pipeline": "gs_preprocess", "dispatch": "gaussians_pow2"}},
{"name": "sort", "kind": "radix_sort",
"_doc": "๋ณด์ด๋Š” ๊ฒƒ๋งŒ GPU radix (8๋น„ํŠธ ร— 4ํŒจ์Šค, ์•ˆ์ •). subgroup ballot ์ด ์—†์œผ๋ฉด bitonic (๊ธฐ์ค€ ๊ตฌํ˜„, 2^n ์ „์ฒด). VKGS_BITONIC=1 ๋กœ ๊ฐ•์ œ",
"uses": [["keys", "storage_read_write"], ["keys_tmp", "storage_read_write"], ["sort_hist", "storage_read_write"], ["draw_args", "storage_read"]],
"params": {"hist": "gs_radix_hist", "scan": "gs_radix_scan", "scatter": "gs_radix_scatter",
"keys": "keys", "tmp": "keys_tmp", "histogram": "sort_hist", "groups": 512, "key_bits": 32,
"fallback": "bitonic_sort", "fallback_pipeline": "gs_sort"}},
{"name": "readback_count", "kind": "copy_buffer", "uses": [["draw_args", "transfer_src"], ["draw_readback", "transfer_dst"]],
"params": {"src": "draw_args", "dst": "draw_readback", "bytes": 16, "host_read": true}},
{"name": "background", "kind": "raster",
"_doc": "๋ฐฐ๊ฒฝ ํ•˜๋Š˜์„ ๋”ฐ๋กœ โ€” ๋‚ ์”จ๊ฐ€ ๊ฐ€์šฐ์‹œ์•ˆ ๋ถ€๋ถ„๊ณผ ํ•˜๋Š˜ ๋ถ€๋ถ„์„ ๋”ฐ๋กœ ๋ณด์ •ํ•œ ๋’ค ๋ฎ์ž„ ฮฑ ๋กœ ํ•ฉ์นœ๋‹ค (์‹œ๋ฎฌ๋ ˆ์ด์…˜ ํ•˜๋Š˜์„ ๋‘ ๋ฒˆ ์–ด๋‘ก๊ฒŒ ํ•˜์ง€ ์•Š๊ฒŒ)",
"uses": [["weather_ubo", "uniform"], ["background", "color_attachment"]],
"params": {"target": "background", "draws": ["background"]}},
{"name": "scene", "kind": "raster",
"uses": [["splats", "vertex"], ["keys", "vertex"], ["draw_args", "indirect"], ["color", "color_attachment"], ["depth_acc", "color_attachment"], ["depth", "depth_attachment"]],
"params": {"draws": ["spheres", "gltf_opaque", "splats", "shadows", "gltf_translucent", "lines"]}},
{"name": "precip", "kind": "raster",
"_doc": "์›”๋“œ ๊ณต๊ฐ„ ๋น„ยท๋ˆˆ ์ž…์ž (precip.vert). ์ž์ฐจ ์ฃผ๋ณ€ ์ƒ์ž์— ์›”๋“œ ๊ณ ์ • โ†’ 6์บ ์ด ๊ฐ™์€ ๋น—๋ฐฉ์šธ, ์‹œ์ฐจยท์ฃผํ–‰ ๊ธฐ์šธ๊ธฐ. ๊ฑฐ๋ฆฌ ๋ฒ„ํผ๋กœ ๊ฐ€๋ ค์ง",
"uses": [["depth_acc", "storage_read"], ["weather_ubo", "uniform"], ["precip", "color_attachment"]],
"params": {"target": "precip", "draws": ["precip"]}},
{"name": "weather", "kind": "compute",
"uses": [["color", "storage_read"], ["depth_acc", "storage_read"], ["precip", "storage_read"], ["background", "storage_read"], ["weather_ubo", "uniform"], ["post", "storage_write"]],
"params": {"pipeline": "weather", "dispatch": "screen", "push_slots": ["precip", "background"]}},
{"name": "fxaa", "kind": "compute", "optional": true,
"_doc": "ํ™”๋ฉด ๊ณต๊ฐ„ AA (๋ฉ”์‹œยท์„  ๊ฐ€์žฅ์ž๋ฆฌ). post โ†’ color(๋‹ค ์“ด ์žฅ๋ฉด ์ƒ‰์„ ๋นŒ๋ฆผ) โ†’ ๋‹ค์Œ ํŒจ์Šค๊ฐ€ post ๋กœ ๋ณต์‚ฌ. MSAA ๋Š” ์Šคํ”Œ๋žซ ๋ธ”๋ Œ๋”ฉ์„ ์ƒ˜ํ”Œ ์ˆ˜๋ฐฐ๋กœ ๋Š˜๋ ค ์“ฐ์ง€ ์•Š๋Š”๋‹ค",
"uses": [["post", "storage_read"], ["color", "storage_write"]],
"params": {"pipeline": "fxaa", "dispatch": "screen"}},
{"name": "fxaa_resolve", "kind": "copy_image", "follows": "fxaa",
"uses": [["color", "transfer_src"], ["post", "transfer_dst"]],
"params": {"src": "color", "dst": "post"}},
{"name": "camera_isp", "kind": "compute", "optional": true, "enabled": false,
"_doc": "์…ฐ์ด๋” ๊ทธ๋ž˜ํ”„(์นด๋ฉ”๋ผ ISP). ํ”ฝ์…€ ๋‹จ์œ„ ๋…ธ๋“œ๋งŒ์ด๋ผ post ๋ฅผ ์ œ์ž๋ฆฌ์—์„œ ๊ณ ์นœ๋‹ค. ์ผœ๊ธฐ: F2 ์ฐฝ ๋˜๋Š” sim.json shader_graphs.camera_isp.enabled",
"uses": [["post", "storage_read_write"], ["isp_params", "storage_read"]],
"params": {"pipeline": "camera_isp", "dispatch": "screen", "push_slots": ["isp_params"]}},
{"name": "camera_mode", "kind": "compute",
"_doc": "์นด๋ฉ”๋ผ ๋ชจ๋“œ (๊นŠ์ด ยท ์‹œ๋งจํ‹ฑ ยท ํ‘๋ฐฑ, ๋ทฐ์–ด F3). RGB ๋ฉด ์…ฐ์ด๋”๊ฐ€ ๋ฐ”๋กœ ๋๋‚œ๋‹ค. ๊นŠ์ด = depth_acc ๋ฅผ ์ƒ‰์œผ๋กœ, ํ‘๋ฐฑ = ์ตœ์ข… ์˜์ƒ์˜ ๋ฃจ๋งˆ",
"uses": [["post", "storage_read_write"], ["depth_acc", "storage_read"], ["camera", "uniform"]],
"params": {"pipeline": "camera_mode", "dispatch": "screen"}},
{"name": "to_present", "kind": "none", "uses": [["post", "transfer_src"]],
"_doc": "์‹คํ–‰ํ•  ์ผ์€ ์—†๊ณ , post ๋ฅผ ํ™”๋ฉดยทPNGยท๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋ณต์‚ฌ(transfer)์šฉ์œผ๋กœ ์ „ํ™˜ํ•˜๋Š” ๋…ธ๋“œ"}
]
}