Commit Graph

212 Commits

Author SHA1 Message Date
moudgils 8e24408959 Merge pull request #819 from aws-lumberyard-dev/DxcExperiment
Update Dxc to the latest + all the fixes related to it
2021-05-20 14:02:33 -07:00
Chris Santora 6deae83906 Merge pull request #736 from aws-lumberyard-dev/Atom/santorac/NewLayeringWorkflow
Updated StandardMultilayerPBR To Use New Layering Model

ATOM-15518 "Change Multilayer PBR To Use Lerp Base Blending"
ATOM-14688 "Disable Individual Layers"
ATOM-14793 "Fix Inconsistent Casing For LuaMaterialFunctorRuntimeContext"
ATOM-4120 "Stabilize Standard PBR Regarding Subsurface and Translucency" (partial)

Changed to lerp-based blending, with an implicit base layer.
Refactored the shader code 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.
Added support for disabling individual layers, so you can easily make a 2-layer material instead of a 3-layer material.
Added support to the material system and MaterialEditor for hiding entire property groups. This is used to hide the disabled layers.
Added and updated test data to reflect the new blend model.
Removed subsurface scattering and translucency from StandardMultilayerPBR.
Note to reviewers: There are a lot of changes here, but they are broken down into separate commits. I recommend going through each commit individually rather than doing one comprehensive review.

ASV changes are here: aws-lumberyard/o3de-atom-sampleviewer#55
2021-05-20 12:06:11 -07:00
moudgils 5a149a4594 Merge branch 'main' into DxcExperiment 2021-05-20 11:56:35 -07:00
AMZN-stankowi c47c45724a LYN-3772 : For non-PBR materials, apply the diffuse color to the base color field on the Atom material, so a color value set in the DCC tool still comes through. (#733) 2021-05-20 11:28:34 -07:00
Chris Santora 8799d1ab54 Merge branch 'main' into Atom/santorac/NewLayeringWorkflow 2021-05-20 09:07:08 -07:00
moudgils 94a8c8258b Bumped shader builders 2021-05-19 19:22:35 -07:00
Chris Santora bcf21e0930 Removed unused InitializeZero function from StandardSurface 2021-05-19 17:43:24 -07:00
Chris Santora f3099aa7d5 Merge remote-tracking branch 'origin/main' into Atom/santorac/NewLayeringWorkflow 2021-05-19 16:57:49 -07:00
moudgils e265990a0c Set DisableOptimizations to false. 2021-05-19 16:18:11 -07:00
mnaumov e510446185 PR feedback 2021-05-19 16:18:02 -07:00
mnaumov 19664dccd2 Merge main 2021-05-19 16:10:44 -07:00
mnaumov 58eea979cf AR build fix 2021-05-19 13:24:04 -07:00
mnaumov 9fc01ea24d AR fixes 2021-05-19 11:51:42 -07:00
Tommy Walton ded39be57e Merging WrinkleMask support from 1.0 to main (#680)
Added a loop to the skin shader that will sample from wrinkle masks, multiply them by a weight, combine them, and use them instead of vertex colors for wrinkle map blending

Added an array of masks, an array of weights, and a wrinkle mask count to the DefaultObjectSrg. -Will create a follow up task to handle this a better way.

Removed motion vector (for now) from skin.materialtype since we're not using them, and removed depthtransparent since skin doesn't support transparency

Added an interface to the MeshFeatureProcessor to get the object srg

Wrapped srg->Compile in if(srg->IsQueuedForCompile()) to prevent compiling twice --This doesn't stop a race condition if both happen at the same time, but that is at least far less likely. It will need a better solution later.

Added a function to the MorphTargetExporter that will check to see if a texture that matches the blend shape name exists in a particular folder, and adds a reference to that image to the MorphTargetMetaAsset --Only supports .tif, and doesn't automatically re-process the .fbx if the folder is updated. These can be improved in later iterations

Added a null check in MaterialTypeSourceData.cpp to fix a crash I ran into

Added a for loop in two places to look for the first submesh that has a morph target, instead of just using the first to check if a lod has morph targets or not. --I have a better fix for this, but it involves more areas of the code, so I'm saving that for another change.

Modified AtomActorInstance to look for any morph targets that have a wrinkle mask reference

Then each frame, for any morph targets with non-zero weights that also have wrinkle masks, it updates the mask array, weights, and count on the object srg.
2021-05-19 11:21:44 -07:00
mnaumov 06784a8026 cleanup 2021-05-18 22:50:13 -07:00
mnaumov 44601b7a38 Some refactoring 2021-05-18 22:45:43 -07:00
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
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
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
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
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
gallowj 7d230dc80e adding a license.txt file for a modified asset with a CC license 2021-05-13 16:53:37 -05: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