Commit Graph

1006 Commits

Author SHA1 Message Date
mnaumov db7afee383 Adding parameters to ACES tone mapping 2021-05-18 22:38:27 -07:00
moudgils 42c9f4416b Merge branch 'main' into DxcExperiment 2021-05-18 20:43:43 -07:00
moudgils 1ebb7c405f Merge branch 'main' into DxcExperiment 2021-05-18 20:24:52 -07:00
Anton Michels 27d38a4880 Merge pull request #725 from aws-lumberyard-dev/Atom/antonmic/lowEnd
Implemented Atom Low End Render Pipeline
2021-05-18 18:47:42 -07:00
antonmic 519525b28f fixing feature common asset cmake 2021-05-18 13:54:07 -07:00
Tommy Walton 3182dc37c3 Fix for ATOM-15488 : Rendering out an animation with shadows crashes the editor (#794)
Previously, the SkinnedMeshFeatureProcessor assumed there would only be one skinning pass. However, that's not always the case. When rendering with track view, the feature processor was getting a pass that only updated once every three frames, which could lead to a condition where a skinned mesh was released, but the pass never submitted and cleared the previously added dispatch items, and one or two frames later it would go to submit after the skinned mesh and all of its resources had already been released.

-Modified the skinning and morph target compute passes to pull dispatch items from the feature processor instead of the feature processor pushing them to the passes.
-If more than one skinning (or morph target) pass is active in the frame, whichever one is first will submit all the dispatch items, and clear the feature processor's dispatch items before the next one tries to submit anything
-Moved the logic for caching shader options from the SkinnedMeshComputePass to the SkinnedMeshFeatureProcessor, since there may be more than one pass but only one feature processor per scene
2021-05-18 13:52:01 -07:00
antonmic a4e1b40e88 Merge branch 'main' into Atom/antonmic/lowEnd 2021-05-18 13:04:25 -07:00
Tommy Walton c10e37f2d6 Atom-15447 : Crash on null buffer with many morph targets
Fixed a crash by keeping a reference to the buffer instance after creating it and checking for null
2021-05-18 10:54:39 -07:00
mrieggeramzn aab4b4a126 Merge pull request #737 from aws-lumberyard-dev/Atom/mriegger/ATOM-15529
Making shadow res of 1024 and bicubic pcf the default
2021-05-18 09:13:49 -07:00
antonmic 242a10dd10 addressed PR feedback 2021-05-17 23:57:01 -07:00
Chris Santora 1d8f5f6f0d Updated to improve the blending of surface properties to have a smoother transition, and remove harsh edges around the blend.
It wasn't just a matter of using smoothstep, I had to refactor the code to take a different approach to generating blend weights. We really have to avoid any kind of division for normalization of weights because that causes all the blend functions to become non-linear. So with these changes, the blend weights are calculated based on linear interpretation for displacement-based blending too (before only the non-displacement blending used linear interpolation). With that in place, smoothstep can now be used to give a smooth transition.
2021-05-17 15:47:16 -07:00
dmcdiarmid-ly 3143b41020 Merge pull request #757 from aws-lumberyard-dev/Atom/dmcdiar/ATOM-13575
[ATOM-13575] Move the RHI::RayTracingShaderTable build into the RHI frame
2021-05-17 13:02:52 -07:00
Jonny Galloway 275fbc714d Merge branch 'aws-lumberyard:main' into cherry-pick_fix_ATOM14976_to_main 2021-05-17 10:32:06 -05:00
Chris Santora c84578c37f Optimized a bit by skipping layers when the blend weight is 0.
This reduced frame time by about 2ms (from 12ms when parallax was off, and from 47ms when parallax was on).
2021-05-16 17:54:21 -07:00
Chris Santora f7c8514160 Made StandardMultilayerPBR automatically set the slider range for displacementBlendDistance to match the total displacement range. 2021-05-15 15:16:40 -07:00
Chris Santora 2983225b4d Removed .orig files that I accidentally added. 2021-05-14 23:11:36 -07:00
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
mrieggeramzn dc8971e80d Merge pull request #756 from aws-lumberyard-dev/Atom/mriegger/15542
Fixing clone function in DecalTextureArrayFeatureProcessor
2021-05-14 21:01:05 -07:00
dmcdiar 73f438e185 Changed the descriptor a shared_ptr. 2021-05-14 19:10:25 -07:00
SJ 2a6938bdf5 Remove hardcoded paths to Atom gems in registration.py and clean up gem.json files 2021-05-14 13:54:17 -07:00
Vicky 1c575763c7 ATOM-4661 Improvement with pass templates registration from data (#735)
* ATOM-4661 Improvement with pass templates registration from data
- Update PassLibrary so it can load pass templates from more than one files and report duplicate pass templates.
- Added load templates events to pass system so the handlers from any gems can load their own pass templates.
- Added PassSystemInterface::OnReadyLoadTemplatesEvent::Handler in FeatureCommon gem's CommonSystemeComponet to load the PassTemplates.azasset in featureCommon gem.
- Misc: moved BindlessPrototypeSrg.asli from RPI to ASV project; fixed an assert issue when exit ASV
2021-05-14 13:45:26 -07:00
Chris Santora 8690ce5736 Added a displacement blend factor for a smooth transition between depth-blended layers.
Renamed StandardMultilayerPBR_Parallax.lua to StandardMultilayerPBR_Displacement.lua because it is used for more than just strictly parallax, it generally deals with displcament which can be used for blending even when parallax is disabled.
2021-05-14 12:17:15 -07:00
moudgils 9c071c46ac Merge branch 'main' into DxcExperiment 2021-05-14 12:13:53 -07:00
amzn-sj 05fec17ebd Remove hardcoded paths to Atom gems in registration.py and clean up gem.json files 2021-05-14 10:35:50 -07:00
Chris Santora b56667bb64 Added new blend source options that allow a blend mask to be used together with depth based blending. 2021-05-14 00:02:15 -07:00
mriegger c07c7d822e Adding warning feedback from mnaumov 2021-05-13 21:16:32 -07:00
mriegger ecef0e88f3 Fixing clone function 2021-05-13 21:04:15 -07:00
dmcdiar 3371483315 Merge branch 'main' into Atom/dmcdiar/ATOM-13575 2021-05-13 19:20:53 -07:00
dmcdiar c5982c0115 Changed the RayTracingShaderTable build to be queued with the RHISystem and processed during FrameScheduler::Compile, after the Srgs are compiled.
Removed the RayTracingShaderTable scopes and moved the calls to Build to the ray tracing dispatch scopes.
2021-05-13 19:03:38 -07:00
Chris Santora 9dafc54fc0 Got things working again after merging my depth-based-blend changes together with the new layering model.
Updated the terminology (yet again) to hopefully be a bit more clear and consistent.
"Blend mask" means the R and G channels that mask layers 2-3. These can come from multipls source, including a "blend mask texture" or "blend mask vertex colors".
"Blend weights" are the final RGB channels that are multiplied and added with layer properties to do the final blend.
"Blend source" is the combination of data that is used to produce the blend weights, which could be a combination of displacement maps, blend mask texture, vertex colors, or others in the future.

Added another debug render mode, so now we can show either the blend mask and the final blend weights.
2021-05-13 14:57:16 -07:00
gallowj 7d230dc80e adding a license.txt file for a modified asset with a CC license 2021-05-13 16:53:37 -05:00
Chris Santora 828ce72123 Merge branch 'Atom/santorac/MultilayerPbrImprovements' into Atom/santorac/DepthBasedLayerBlending 2021-05-13 12:12:51 -07:00
guthadam d85e0500d5 PR feedback 2021-05-13 00:55:29 -05:00
guthadam 488e3b5da5 Merge branch 'main' into Atom/guthadam/ATOM-15223 2021-05-13 00:33:28 -05:00
mriegger bcea9f29a8 Improved variable name 2021-05-12 22:11:49 -07:00
moudgils 30637274e1 Merge branch 'main' into DxcExperiment 2021-05-12 19:35:26 -07:00
Chris Santora 37a1b77d50 Merge branch 'main' into Atom/santorac/NewLayeringWorkflow 2021-05-12 17:45:28 -07:00
Chris Santora 53188a12da Made StandardMultilayerPBR hide a layer's property groups when that layer is disabled.
ATOM-14688 Disable Individual Layers

- Added new SetMaterialPropertyGroupVisibility functions to the material functors.
- Updated the MaterialFunctor::EditorContext to include parameters for handling material property group metadata.
- Updated the material inspector(s) to apply the property group visiblity changes from the material functor, to hide or show the property groups.
- Moved some code from MaterialPropertyDescriptor.h/cpp to a new MaterialDynamicMetadata.h/cpp, since these aren't really related to the MaterialPropertyDescriptor code. It's more for material functors to use.
- Also fixed the casing for the "GetMaterialPropertyValue_Image" lua function, since I was already in this code (ATOM-14793 "Fix Inconsistent Casing For LuaMaterialFunctorRuntimeContext")

Tested in MaterialEditor and in in the main Editor's MaterialComponent property override inspector.
2021-05-12 17:06:57 -07:00
mriegger 9b1f4c04e6 Removing the old hack code 2021-05-12 14:54:33 -07:00
guthadam 931a127b7b ATOM-15223 updating material assignment ID to be portable to other models
The bug was reported that copy and paste did not work with the material component.
Copy and paste to take the worked fine.
All of the material assignments/overrides get mapped using the LOD and asset ID of materials provided with the model.
The asset IDs of materials exported by atom builders, using the scene API, are the combination of the same UUID as the model asset ID and the unique sub ID that is now hashed from the material name provided by the DCC tool.
If we map material assignments using the entire asset ID that was generated in the model builder then the mapping will only work with that specific model.
This change updates the material assignment ID equality operators and hash function to only use the sub ID portion of the asset ID.
As long as the sub IDs are generated consistently the material assignment mappings will be portable to models with the same material names.

Also moved material assignment structures to atom common features static library so this was to be moved to cpp files
2021-05-12 13:47:47 -05:00
antonmic b52388f5eb Remove unused file 2021-05-12 11:11:45 -07:00
antonmic 92b7099d78 Some clean up 2021-05-12 11:10:13 -07:00
antonmic f5e91c6e42 Added low end shaders in StandardPBR_ShaderEnable.lua 2021-05-12 10:39:18 -07:00
Chris Santora 275bb1bfec ATOM-14688 Disable Individual Layers
Added flags for enabling StandardMultilayerPBR layers 2 and 3. This makes it easy to create a two-layer material, or to flip layers off and on for debugging.
2021-05-11 17:25:53 -07:00
Chris Santora 9faf35b529 Refactor in prepration for ATOM-14688 "Disable Individual Layers"
Refactored StandardMultilayerPBR to collate all the code for each layer into a couple structs and utility functions. This makes the code easier to maintain, and in particular will make it easy for me to add Enable flags for the layers in a subsequent commit.
Also removed subsurface scattering and translucency from StandardMultilayerPBR, according to ATOM-4120 "Stabilize Standard PBR Regarding Subsurface and Translucency".

Squashed commit of the following:

commit a6052d6ad4f70183d0ce72e84c7dc5512dc24d5e
Author: Chris Santora <santorac@amazon.com>
Date:   Tue May 11 16:32:15 2021 -0700

    Got the refactor finally working. I had change it to blend the baseColor, spec factor, and metalness before converting to albedo and spec, in order to get exactly the same results as before.

commit 42d6da7f405097dea07b6ed0426d6a662b61440d
Author: Chris Santora <santorac@amazon.com>
Date:   Tue May 11 15:58:38 2021 -0700

    Fixed clear coat issue due to LightingData initialized too late.

commit 358194a5caf6f9eb99b0e5345ad5f7768b244a93
Author: Chris Santora <santorac@amazon.com>
Date:   Tue May 11 15:18:30 2021 -0700

    Fixed a couple issues.

commit adb431f8113b945057959db288a7ee2dd825dd69
Author: Chris Santora <santorac@amazon.com>
Date:   Tue May 11 12:42:12 2021 -0700

    WIP refactor of StandardMultilayerPBR to collate the code for each layer. Also removed subsurface scattering from multilayer.
2021-05-11 17:09:41 -07:00
AMZN-mnaumov d469572422 Merge pull request #681 from aws-lumberyard-dev/Atom/mnaumov/ATOM-14320
[ATOM-14320] Fixing parallax artifacts
2021-05-11 14:31:50 -07:00
mnaumov b4f7038d6a param ordering 2021-05-11 12:42:37 -07:00
mnaumov c41ee23ea4 PR feedback 2021-05-11 12:40:37 -07:00
antonmic 8e4d0d73dc Good working state, but material always emmits low end draw item 2021-05-11 01:29:53 -07:00
Chris Santora 89bb0edb30 ATOM-15518 Change Multilayer PBR To Use Lerp Base Blending
Changed to lerp-based blending, with an implicit base layer.
Renamed some variables to be more clear (blendWeight instead of blendMask, since the weights could come from vertex colors instead of a texture).
Updated DefaultBlendMask_layers.png to better suit the new layering model. It has a black background and overlapping R, G, and B areas.
Updated some of the test materials UV transforms to better fit the new DefaultBlendMask_layers image.
Added a new test object, which is a plane that has painted vertices.
Note that I updated test criteria in AtomSampleViewer to account for these changes as well.
2021-05-10 23:04:56 -07:00