nmbr73 / Shaderfuse

Shadertoy.com WebGL shaders converted to DCTL Fuses for use with Version 18 of Blackmagic Design's DaVinci Resolve and/or BMD's Fusion running on Windows (with nvidia GPU) or (Apple Silicon) macOS.
Other
54 stars 11 forks source link

DVIPComputeNode() returns `nil` if not supported on GPU #42

Closed nmbr73 closed 3 years ago

nmbr73 commented 3 years ago

See http://www.steakunderwater.com/wesuckless/viewtopic.php?p=38465#p38465 ... we should safeguard access to node (that is in every fuse :sweat:) to give at least some comprehensible error message.

J-i-P-i commented 3 years ago

Actually, GPU detection should be the job of Resolve / Fusion, i.e. we're "ironing out" a bug because Resolve / Fusion detects a GPU that doesn't exist, right? The "notification of the user is very time-consuming here. I have tried endlessly to start an" input "that opens a fu.UIManager instance from the fuse. Unfortunately, I did not succeed. The display via the viewer would be possible, but also very time-consuming. Or you want all parameters to be invisible and show an info text instead, not even without it. I shy away from the very great effort :-)

nmbr73 commented 3 years ago

Was thinking about an assert or if node == nil to then just print a "check you GPU - seems to be not supported" message and exit ... just to give the user something more comprehensible compared to "attempt to index global 'node' (a nil value)". And we are still in Lua at this point of the execution - so not in the depth of the shader code ... doing some "interaction" should be much easier here.

But as we now can see on the screenshot ...

image

... Fusion did give a clear warning here already - given that there is no need to repeat it ;-)

All in all it's good habit to check for nil before accessing a resource - but now that we see with WSL#p38482 that it really is about old hardware and Fusion gave a warning, I'd say there is no urgency here.

nmbr73 commented 3 years ago

Old one. Solved (as we concluded that there is nothing to be done).