Before, the material builder was loading the MaterialTypeAsset and doing some processing with it, but was avoiding declaring job dependencies that would cause reprocessing lots of assets when a shader or .materialtype file changes. Reading the asset data isn't safe when not declaring a job dependency (or when declaring a weak job dependency like OrderOnce which is the case here). This caused to several known bugs.
The main change here is it no longer loads the MaterialTypeAsset at all; all other changes flow from there.
The biggest changes (when deferred material processing is enabled) are ...
1) MaterialSourceData no longer loads MaterialTypeAsset. All it really needs is to determine whether a string is an image file reference or an enum value, which is easy to do by just looking for the "." for the extension.
2) MaterialAssetCreator no longer produces a finalized material asset. It no longer uses MaterialAssetCreatorCommon because that only produces a non-finalized MaterialAsset, which has very different needs for the SetPropertyValue function. (We could consider merging MaterialAssetCreatorCommon into MaterialTypeAssetCreator since that's the only subclass at this point). And it doesn't do any validation against the properties layout since that can be done at runtime.
3) Moved processing of enum property values from MaterialSourceData to MaterialAsset::Finalize (this was the only thing being done in the builder that actually needed to read the material type asset data).
Also...
- Updated the MaterialAsset class mostly to clarify and formalize the two different modes it can be in: whether it is finalized or not.
- Merged the separate "IncludeMaterialPropertyNames" registry settings from MaterialConverterSystemComponent and MaterialBuilder into one "FinalizeMaterialAssets" setting used for both.
- Removed MaterialSourceData::ApplyVersionUpdates. Now the flow of data is the same regardless of whether the materials are finalized by the AP or at runtime. Version updates are always applied on the MaterialAsset.
- Added a validation check to MaterialTypeAssetCreator ensuring that once a property is renamed, the old name can never be used again for a new property. This assumption was already made previously, but not formalized, in that Material::FindPropertyIndex does not expect every caller to provide a version number for the material property name, also the material asset's list of raw property names was never versioned. The only way for this to be a safe assumption is to prevent reuse of old names.
Signed-off-by: santorac <55155825+santorac@users.noreply.github.com>
* Templates/Restricted upgrade/fixes:
Fixed template storage format: templates now only store true relative paths and no longer save "origin" paths and "optional" has been removed, it was never used.
Upgraded all templates to new standard
Template system now correctly handles child objects: Child objects no longer have to specify restricted they inherit from parent
Restricted now operates at the object level and makes no assumptions about parent
Restricted templates can now be combined and seperated on creation
ly_get_list_relative_filename has been deprecated for o3de_pal_dir
All Gems/Projects/Templates updated to use new code
Signed-off-by: byrcolin <byrcolin@amazon.com>
The "precise" keyword was recently added to several shader inputs, but one was missed. This led to inconsistency between the depth and forward passes which resulted in artifacts when parallax pixel depth offset was in use. See https://github.com/o3de/o3de/pull/6536
Testing: I used AtomSampleViewer to make a local baseline of all screenshots in _fulltestsuite_.bv.lua. The only change was to the parallax test cases, which were a clear improvement.
Signed-off-by: santorac <55155825+santorac@users.noreply.github.com>
Commit 67689d48cc enforced precision in
many vertex position outputs. This adds the attribute to the output of
the z-prepass, needed to ensure proper depth testing in the forward
passes.
Signed-off-by: Jeremy Ong <jcong@amazon.com>
* Breaking up terrain FP wip - macro materials decoupled from meshes. Mesh creation and rendering pulled out from MeshFeatureProcessor into TerrainMeshManager. Stubs added for macro and detail material managers.
Signed-off-by: Ken Pruiksma <pruiksma@amazon.com>
* Separated macro material management from the terrain feature processor. Also separated bindless image array handling from terrain feature processor.
Signed-off-by: Ken Pruiksma <pruiksma@amazon.com>
* Detail materials separated from terrain feature processor. Also pulled out Aabb2i and Vector2i into their own simple classes
Signed-off-by: Ken Pruiksma <pruiksma@amazon.com>
* Changed some classes so that when the SRG changes the classes don't need to be completely reinitialized and can instead just update their indices and push data to the new srg. Fixed an issue where MacroMaterialData wasn't being exposed to ScriptCanvas. Terrain shader reloads should now work correctly. Also added some debug logging to help catch an issue where sometimes detail materials don't seem to load.
Signed-off-by: Ken Pruiksma <pruiksma@amazon.com>
* Terrain PR reveiw updates
Signed-off-by: Ken Pruiksma <pruiksma@amazon.com>
* Some small PR review fixes. More comments in TerrainDetailMaterialManager.h
Signed-off-by: Ken Pruiksma <pruiksma@amazon.com>
* Fixing unused variable causing clang failure
Signed-off-by: Ken Pruiksma <pruiksma@amazon.com>
* Fixing unused variable in release.
Signed-off-by: Ken Pruiksma <pruiksma@amazon.com>
* Fixing a forward declare that oddly didn't work on linux.
Signed-off-by: Ken Pruiksma <pruiksma@amazon.com>
* Fixing linux missing include... not sure why only linux failed on this.
Signed-off-by: Ken Pruiksma <pruiksma@amazon.com>
* Adding missing include
Signed-off-by: Ken Pruiksma <pruiksma@amazon.com>
* Hide the invalid parameters in the EnhancedPBR in the Material Editor
Signed-off-by: T.J. McGrath-Daly <tj.mcgrath.daly@huawei.com>
* Fixed headers
Signed-off-by: T.J. McGrath-Daly <tj.mcgrath.daly@huawei.com>
Make View::SortFinalizedDrawLists use child jobs so they don't block the worker thread from doing other work while waiting.
Implement a TaskGraph version of the view draw list sort.
Fix a misc bug where the scene was waiting on a task graph event twice and so hanging.
Enable MeshFeatureProcessor::Simulate to be able to use jobs when no parent job is specified because the parent job is a task.
Signed-off-by: rgba16f <82187279+rgba16f@users.noreply.github.com>
* Multiple bug fixes
- Handle Dx12 validation error related to multiple resource transitions happening on the same resource.
- Added API to better query for image/buffer views associated with an attachment.
- Address possible serialization issues by usage of size_t
- Reduced number of Descriptor sets allowed per SRG Pool in order to reduce descriptor waste.
Signed-off-by: moudgils <47460854+moudgils@users.noreply.github.com>
* Addressed minor feedback
Signed-off-by: moudgils <47460854+moudgils@users.noreply.github.com>
* Fix compile issues
Signed-off-by: moudgils <47460854+moudgils@users.noreply.github.com>
* Missed a few other fixes
Signed-off-by: moudgils <47460854+moudgils@users.noreply.github.com>
Switched to HDR irradiance.
SDK Update.
Fixed a Vulkan validation error on RayTracingSceneSrg::MeshInfo.
Improvements to DiffuseProbeGrid blending.
Signed-off-by: dmcdiarmid-ly <63674186+dmcdiarmid-ly@users.noreply.github.com>
* Fix quad light NAN on contact with other surfaces
- Quad lights can produce nan if intersecting other surfaces. This is caused by a division by 0 in the edge integration functions. Fixed by saturating the output.
- Small refactoring on LTC edge integration functions. To make the terms more explicit.
Signed-off-by: Thomas Poulet <1039134+Bindless-Chicken@users.noreply.github.com>
* Replace incorrect saturate with EPSILON clamp
Signed-off-by: Thomas Poulet <1039134+Bindless-Chicken@users.noreply.github.com>
Co-authored-by: Thomas Poulet <1039134+Lord-Nazdar@users.noreply.github.com>