Open tebjan opened 1 year ago
Out of curiousity, as it seems the stable release is around the corner - what is the status / opinion about this?
With the latest fuse release we can now look into better aligning fuse with vl and stride
Here are my thoughts to it after all it might not all be so easy, there might be details that are not that easily covered, another point to think of is if it makes sense to make fuse not to stride dependend to be open for other renderering front ends, still we code offer solutions for a seemless VL, Fuse Stride Experience. Next Steps could be.
Before the 1.0 stable release the FUSE systems that double functionality of VL.Stride should be removed and replaced by the ones already in place in VL.Stide. This has several advantages:
Systems that are easy to replace
The strategy
Taking part in the compilation
Since FUSE is basically a string generator, VL.Stride only needs a node to get a string shader into the mixin system. Fuse hands over the string and VL.Stride takes care of compilation and input key handling.
Input values and ShaderFX to FUSE
Ideally, FUSE only deals with GPU types/values, if it needs a CPU value, a
GPU<T>
will be composed into the shader. So fuse only needs to make shader permutation keys, but no value keys. VL.Stride will create and compose the CPU inputs. The types between fuse nodes can still be a proprietary type. Buffers and Textures can also be passed by ComputeBuffer or ComputeTexture shaders that return either GPU resource.FUSE to ShaderFX
The resulting fuse string shader inherits from ComputeFloat4 or any other shader etc. and can be composed normally into other shaders.
All in all, it only needs minor additions to ShaderFX and in FUSE small changes and a lot can be removed.