GPUCodegen
destructor calls ShaderCreateInfo
destructor.
But deleting a ShaderCreateInfo
pointer holding a GPUCodegen
instance is undefined behavior.
This may not be a problem at the…
This is unrelated to the PR itself, really. I just saw the issue while looking at this code. I can commit it to main directly instead if you prefer.
Because it has a derived class with a constructor.
Because it's a derived class, so deleting a base class pointer won't call this destructor. I've also made the base class destructor virtual.
Ok then, here is another approach I can see working:
- Make all static create infos call finalize on startup.
- Make a special variant of the ShaderCreateInfo that does not do any…
I assumed this would have been caused by the recent draw_manager_shader
refactors, but doesn't seem to be the case.
The issue here seems that we are compiling, at the same time, deferred and…
The initial PR version tried to be more clever: blender/blender#113980 (comment)
There isn't 100% robust solution to this problem. Arguably,…
Fixing this is trivial:
diff --git a/source/blender/draw/engines/eevee_next/eevee_film.cc b/source/blender/draw/engines/eevee_next/eevee_film.cc
index dbed6f50318..fad03f00867…
And we need to do these includes at runtime (because of material shaders) at this point we don't have any filesystem structure.
I only took a quick look, but PreprocessGlsl
takes a…
Since we are at it, can't we just use something like shaderc
PreprocessGlsl
and have a real preprocessor?