What makes you say that? I’m finding PCGs runtime generation + GPU compute perfectly capable of landscape grass. But I think runtime generation doesn’t let you set up the actor in the outliner like pre-built, so any settings that aren’t exposed are inaccessible.
Like RecourseDesign mentioned, perhaps it can be set via blueprint or something in runtime after generation.
I’m pretty sure I’ve seen a tutorial on PCG where the author accessed the HISMC itself from a Blueprint - there was a setting from memory called Post-Process Blueprint in the StaticMesh Spawner.
I just had a quick look to see if I could find the video but didn’t have any luck.
Maybe ask someone on the PCG channel of the Unreal Source Discord server?
Edit: Right, There’s a getter for it but not a setter so that wouldn’t help anyway - I would think that will be added fairly soon though.
Not sure if HLSL would work. You’d have to dynamically branch away all pixel programmable functions. Even if you did I’m not sure that would necessarily result in nanite knowing to automatically switch to fixed function shading.
Edit: I’m speculating here though. Ultimately I need to look at what exactly that setting is doing under the hood… I guess my point is just that there’s a chance that if nanite doesn’t detect these features (mask, WPO, PDO…) it may automatically switch.
No idea what would be involved in dynamically branching the shading model though. So I’ll have to give it a solid maybe.
Exactly, there is a getter, not a setter. I talked to someone from the PCG team and they mentioned it’s up to rendering to expose it to the relevant components.
Mainly FISMComponentDescriptorBase
I think it is more the opposite - the HLSL reads the bool to determine if it should be pixel programmable or not, and then the shaders go from there. #if NANITE_PIXEL_PROGRAMMABLE appears to be what the shader is looking for when deciding if it will allow those features.
Those are some nice steps.
No luck on the HLSL side. Unless I messed something up, branching does not seem to have any impact - and I’m getting the impression it might be impossible to branch the blend mode anyway.
So basically I think the nanite pass is switching to a different permutation based on the distance, so the dynamic permutation is still viewed as pixel programmable due to having something plugged into the relevant pins, even if the value branches to 0.
Thanks for looking into it. Makes sense.
From what i can see, this means that for anything GPU-generated, we can’t set the NPPD value in PCG (or LGT or FT) currently.