Files
o3de/Gems
Chris Santora ec9cafcef5 Improved the displacement property handling to be more cohesive and intuitive. Also fixed a bunch of edge cases.
I'm not sure which of these edge cases may have existed before updating the property handling, and which were caused by it.

- Rearranged the per-layer parallax property groups because these are more general than just parallax. They can be used for displacement-based blending regardless of whether a parallax effect is being used.
-- Renamed "Parallax Mapping" to "Displacement" because these properties can be used for other things besides parallax, in particular the new displacement-based blend modes.
-- Removed the unnecessary per-layer "enable parallax" flags. This also allowed me to remove the StandardMultilayerPBR_ParallaxPerLayer.lua script and replace this with simply a UseTexture functor for each layer.
-- Made the "offset" property always available, so this can be used to adjust displacement for blending purposes even when there is no heightmap or parallax. The "factor" property still only shows up with a heightmap because its only purpose is to scale the heightmap.
-- In order to get the offset to work when there is no texture map, I had to fix the logic a bit in GetLayerDepthValues where it was ignoring the offset.
-- Had to rearrange the logic in StandardMultilayerPBR_Displacement.lua a bit to get this all working, particularly because the per-layer displacement properties are no longer hidden behind an enable flag.
- Change the displacementBlendFactor to displacementBlendDistance because it felt weird when sliding per-layer displacment offset values and seeing this impact the surface property transition. Using an absolute distance value feels more natural.
- Made the displacement blend mask push the displacement down *past* the min displacement value to address edge cases where blend mask 0 didn't actually make a layer disappear. (See GetSubMinDisplacement()).
- Inlined the GetBlendWeightsFromLayerDepthValues code into GetBlendWeights because I realized it was only being used there, and the code is easier to read this way IMO.
- Displacement-based blend weights weren't being normalized in cases where layerDepthBlendDistance is 0, which caused incorrect depth values where two layers meet.
2021-05-14 23:05:33 -07:00
..
2021-03-26 09:26:12 -07:00
2021-05-07 09:54:49 -07:00
2021-04-28 21:38:43 -05:00
2021-03-25 13:57:57 -07:00
2021-04-28 21:38:43 -05:00
2021-05-11 16:36:44 -07:00
2021-05-07 16:20:00 -07:00
2021-05-11 16:36:44 -07:00