update ispc_dso_generate to handle multi-output shaders
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 52/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- cmake
- Domain
- build-system
Research direction
Start with cmake_modules/build_scripts/ispc_dso_generate and inspect the shader JSON files that define outputAttributes; trace how generated declarations are used in attributes.cc and attributes.isph. Support multiple named, typed outputs and define the return structure in JSON order, while accepting both output and outputAttributes during transition. Done when generated SceneClass attributes and return structures cover multi-output shaders.
Written by the indexing model from the issue text.
Description
Update cmake_modules/build_scripts/ispc_dso_generate
- declare the outputs on the SceneClass
- Provide a structure for multi-output shaders use for returning results
Some Implementation Thoughts
- Accept shader json files having multiple named and typed outputs
- declare the outputs in the attributes.cc file using the new SceneClass functions
For each output add a line to attribute.cc - sceneClass.declareAttribute<{typename}>("{name}", {uniformity}) - define structs in attributes.cc and attributes.isph which include all of the outputs in the order defined in the json file
For multi-output shaders declare a structure named "{shadername}_return_data" in attributes.cc with a member for each output of the appropriate type. (Bool, Int, Float, Vec2g, Vec3f, Vec4f, Color, Rgba, Mat3f, or Mat4f).
In the process of naming other things in this project it seems apparent that the existing "outputAttributes" record in the shader json files is probably misnamed and should just be something like "outputs". During transition it might be a good idea to recognize either "output" or "outputAttributes" as the list of output attributes.
- Dominant language
- CMake
- Stars
- 4.7k
- Forks
- 321
- Avg merge
- 13m
- Merged PRs (30d)
- 3
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from OpenMoonRay/openmoonray
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
OpenMoonRay/openmoonray#332 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 64/100
OpenMoonRay/openmoonray#320 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 64/100
OpenMoonRay/openmoonray#233 ·
-
Difficulty 3/5 1-2 days Newbie friendliness 57/100
OpenMoonRay/openmoonray#331 ·
-
Difficulty 3/5 1-2 days Newbie friendliness 68/100
OpenMoonRay/openmoonray#330 ·
All issues in OpenMoonRay/openmoonray
Similar issues
-
cleanup documentation
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 2 days
-
check-typing: ty 0.0.98+ fails on the renamed rule `unresolved-import` (now `import-not-found`)Open
Difficulty 1/5 Under an hour Newbie friendliness 92/100
crossbario/crossbar#2383 ·
Maintainers usually reply within 1 day
-
check-typing: ty 0.0.98+ fails on the renamed rule `unresolved-import` (now `import-not-found`)Possibly taken A pull request linked to this issue is open or already merged. Open
Difficulty 1/5 Under an hour Newbie friendliness 94/100
crossbario/autobahn-python#2046 ·
Maintainers usually reply within 1 day
-
Fresh comstockpostproc install fails on import: PyAthena 4.x requires SQLAlchemy 2 (AttributeError: sqlalchemy.types has no attribute DOUBLE)Possibly taken @JanghyunJK claimed this today. Openpostprocessing
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
NatLabRockies/ComStock#473 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
transitmatters/stripmap#45 ·
Maintainers usually reply within 3 days