Looking to use PBR and notice a lot of combination options which look like it could get heavy on the VRAM if using all of them. Any advice or opinion welcome. Pro’s/cons and such. Wondering if it would be suffice to use Color, Normal map with alpha as Displacement, and a single texture which uses each channel for: AO, roughness, and metallic? How many of these do ppl actually use most of the time?
Also wondering if there’s some option coming for vertex texture fetching to be available for OpenGL builds - as right now I can do it with HLSL side. [ I just thought it would be real handy for complex animation stuff - like cloth, softbody/flex/jiggle, numerous bone-weights, multi-morph targets & animation blends. Could make some really awesome stuff happen in realtime… although I suppose there are ways of making it all look realtime too with springs and fewer morph targets. ]
After a lot of searching I’ve basically sorted most of this out I think. Most of the time I could get away with BRDF and sometimes PBR comes in handy for some materials. Seems the appearance of SSS can be done more easily too.
If can’t do VTF (texture decoding in vertex shader) thru Mojo, I found ways to do so for each platform using a separate compiled shaders tactic. HLSL’s actually really easy to setup in Monogame. The GLSL pre-compiles come with problems but I found ways to ensure a working version for each detected platform.
If you really want you can save yourself a channel if you encode normals with 2 colors instead of 3 (by not supplying z, which is directed at the camera anyways).
AO is an option, many PBR renderers omit that because it’s not really physically based any more if it’s prebaked.
For some further reference and maybe Monogame implementation stuff you can check the modelviewer:
Sorry about the vertex texture fetching, I have only ever tried on DirectX.