* Add a default fallback image when a StreamingImageAsset fails to load
Signed-off-by: Tommy Walton <waltont@amazon.com>
* Don't release a missing/invalid texture reference in the skybox component. Hold on to the reference so that it can hot-reload
Signed-off-by: Tommy Walton <waltont@amazon.com>
* Don't release a missing/invalid texture reference in the ibl component. Hold on to the reference so that it can hot-reload
Signed-off-by: Tommy Walton <waltont@amazon.com>
* Use a different fallback image depending on the status of the asset. Including a setting to use a friendly image that is less obnoxious for anything that might have been missed in a release build
Signed-off-by: Tommy Walton <waltont@amazon.com>
* Adding the stubbed in fallback textures
Signed-off-by: Tommy Walton <waltont@amazon.com>
* Updated the seedlist for the RPI to include the fallback images. It only needs the default and the missing asset images, since the AP doesn't run in release builds, the asset status will always be unknown, not processing or failed to process, so if an asset is not bundled, it is just missing.
Signed-off-by: Tommy Walton <waltont@amazon.com>
* Switched to GetAssetIdByPath and removed some tabs
Signed-off-by: Tommy Walton <waltont@amazon.com>
* fix brute force mesh intersection function
Signed-off-by: Tom Hulton-Harrop <82228511+hultonha@users.noreply.github.com>
* add test for brute force ray intersection fix
Signed-off-by: Tom Hulton-Harrop <82228511+hultonha@users.noreply.github.com>
* refactor tests to remove as much duplication and provide API for future tests if required
Signed-off-by: Tom Hulton-Harrop <82228511+hultonha@users.noreply.github.com>
* small updates after review feedback
Signed-off-by: Tom Hulton-Harrop <82228511+hultonha@users.noreply.github.com>
* update following review feedback
Signed-off-by: Tom Hulton-Harrop <82228511+hultonha@users.noreply.github.com>
* fix for pointer offset
Signed-off-by: Tom Hulton-Harrop <82228511+hultonha@users.noreply.github.com>
2. Add a higher "launch_ap_timeout" for Mac because launching a newly built/downloaded AP can take a while.
Signed-off-by: amzn-sj <srikkant@amazon.com>
Fixed potential render scene time precision issues.
The timestamp was simply converted from GetTimeAtCurrentTick to a float. Since this value is backed by QueryPerformanceCounter which is 0 at boot, you could see broken animations on the GPU when your system has been on for a long time. So I simplified the RPI's time API (removed unused code), and subtracted the application start time each frame before converting the time value to a float.
Also moved FindShaderInputConstantIndex("m_time") to be called only once, instead of every frame.
Testing:
Originally: I had a local material shader that did vertex animation and it wasn't working at all before, and now it works.
More recently, I made local changes to StandardPBR to add a simple sin wave animation. I also modified GetTimeNowMicroSecond() to artificially add 30 days to the clock. This showed choppy animation before my changes, and smooth animation after.
AtomSampleViewer passed dx12 and vulkan (other than pre-existing issues)
Signed-off-by: santorac <55155825+santorac@users.noreply.github.com>
Changed material document to load a source data are for the parent material as well. It was also a previously loading the parent material products asset which would be out of date compared to the source data.
Changed material document to track source file dependency changes instead of product asset changes.
Fixed a bug or copy paste error in the document manager that was using the same container to track documents the modified externally and from other dependency changes.
Returning source data dependencies when creating a material asset from source.
Signed-off-by: Guthrie Adams <guthadam@amazon.com>
This RenderStates is used to override the values in the final draw packet, if the values are valid; it's supposed to be initialized to invalid values, but it wasn't. So the depth compare function was getting set to Less instead of GreaterEqual. This wasn't a problem when using serialized assets from disk, because the deserialization uses the default constructor which did initialize m_renderStatesOverlay. No all Item constructors initialize m_renderStatesOverlay.
Signed-off-by: santorac <55155825+santorac@users.noreply.github.com>
Signed-off-by: Guthrie Adams <guthadam@amazon.com>
* ATOM-16747 RPISystemInterface::GetDefaultScene returns the scene created by PreviewRenderer but not the Main Scene
Deprecate GetDefaultScene() function.
Update all the places which use GetDefaultScene to use Scene::GetFeatureProcessorFromEntityId or GetMainScene.
Tested with Editor, UI Editor, Material Editor, game launcher.
Signed-off-by: Qing Tao <55564570+VickyAtAZ@users.noreply.github.com>
(cherry picked from commit 8da6bea073)
* Shaders changes require two or more change cycles before updating
This fixes the problem described in the title.
Consolidated the responsibility to update the root shader variant
asset into the Shader() class. It was unnecessarily spread across
Shader(), ShaderVariant() and ShaderAsset().
In particular OnAssetReloaded now makes a temporary copy of the root
ShaderVariantAsset and updates the ShaderAsset with such reference
only when OnAssetReloaded() is called on behalf of the ShaderAsset.
Signed-off-by: galibzon <66021303+galibzon@users.noreply.github.com>
* Adding shaders and attimage files as runtime depenencies for pass files, so that they are included in asset bundles. Also using the correct job key for attimage files.
Signed-off-by: Tommy Walton <waltont@amazon.com>
* Use a reference to avoid a copy
Signed-off-by: Tommy Walton <waltont@amazon.com>
* Bumping the AnyAsset builder version
Signed-off-by: Tommy Walton <waltont@amazon.com>
* Revert "Bumping the AnyAsset builder version"
This reverts commit 778798ae9cdd93ebe93248b3113e4cfb7609020d.
Signed-off-by: Tommy Walton <waltont@amazon.com>
Move imageAttachmentCopy instance from RenderPass to Pass so it can support preview image for all passes but not only for RenderPass.
Fixed an issue with image attachment preview when switching render pipeline with attachment preview on.
Signed-off-by: Qing Tao <qingtao@amazon.com>
Moved DoubleSided Flag Out Of Opacity Group
The double-sided flag was hidden inside the opacity property group, and only exposed when you set the opacity to non-opaque. Here we move doubleSided from opacity to general making it easier to find and set.
Also...
- Fixed a bug with the material version auto-update, where it could rename properties but could not move them to another group.
- Added another "default" texture map to the Common/Feature gem that is directional, so better for understanding UV/tangent space. These were copied from the AtomLyIntegration gem.
* ATOM-16489 Add find passes functions for Scene or RenderPipeline in PassSystemInterface
Introduced new PassSystemInterface::ForEachPass() funtion to replace PassSystemInterface::FindPasses(), PassSystemInterface::GetPassesByTemplateName and ParentPass::FindPassByNameRecursive() functions.
Update all the places which were using those three functions.
The new pass finding filter support any combination of pass name, pass template name, pass class type, pass hirechary, owner scene, owner render pipeline.
Update unit tests.
Signed-off-by: Qing Tao <qingtao@amazon.com>
(cherry picked from commit fe8dac7989)
MaterialAssignment::ApplyProperties() still reports warnings but does not update the m_propertyOverrides.
MaterialAssignment::ApplyProperties() will now skip the old name'd overrides if overrides are present for the new names. I'm not sure if this will ever happen, but it did happen while I had some intermediate changes, so I imagine it could happen again.
I had to update the Material::FindPropertyIndex function to expose information about renames when they occur. This should make it easier for other systems to get (somewhat) automatic benefit from the version update feature.
I also found that there was an issue with material inspector where it wouldn't be initialized the the right override values when renames were present. Now it applies the renames to whatever override data it gets from the Material Component.
Signed-off-by: santorac <55155825+santorac@users.noreply.github.com>
I added an ApplyPropertyRenames function to MaterialTypeAsset very similar to the one in MaterialTypeSourceData.
Updated the MaterialAssignment class to apply any property renames when it discovers the old name doesn't work. This will be written to disk when the level or prefab is saved.
Signed-off-by: santorac <55155825+santorac@users.noreply.github.com>
(It's a simple enough change to make manually, and making .materialtype is an uncommon workflow, so not worth doing this automatically).
Signed-off-by: santorac <55155825+santorac@users.noreply.github.com>
Also improved the MaterialAssetTests UpgradeMaterialAsset() to focus on testing the inputs and outputs of the class rather than the private internal data.
Signed-off-by: santorac <55155825+santorac@users.noreply.github.com>
Also rearranged some logic to simplify the code that loops over rename actions, avoiding making unnecessary additional maps.
Signed-off-by: santorac <55155825+santorac@users.noreply.github.com>
- Added MaterialSourceData::ApplyVersionUpdates() for updating the properties. This should be called by tools after loading the MaterialSourceData. (But can be omitted if a tool wants to read the data exactly as it appears in the .material file).
- Updated MaterialTypeSourceData::FindProperty to support applying version update renames, including a ApplyPropertyRenames utility function, which are necessary for MaterialSourceData to be able to find the necessary property definitons while loading.
- Added a new context struct to JsonMaterialPropertyValueSerializer for passing down the material type version number, to help with applying property renames.
- Renamed the .material file format "propertyLayoutVersion" to "materialTypeVersion" which is more accurate. This shouldn't hurt existing data as this field wasn't actually used for anything before.
- Updated Material Editor to again store the material type version number in .material files.
MaterialSourceDataTests updates...
- Updated to include both a .materialtype file and a MaterialTypeAsset for the test material type. Both are used by the MaterialTypeSourceData class.
- The default test material type now includes some version update steps; these are only used for version update tests and won't impact the other test functions.
- Updated the path for storing temp files to disk, to just be in a "temp" folder in the exe path. (Originally they were saved to the gem folder near MaterialSourceDataTests.cpp, but at some point someone changed it to be under the exe folder, so there's no reason to use the full gem path anymore).
MaterialTypeSourceDataTests updates...
- Moved some code that was accidentally added to LoadAllFieldsUsingOldFormat but should have been in LoadAndStoreJson_AllFields.
- Added test cases for unsupported version update operations
Signed-off-by: santorac <55155825+santorac@users.noreply.github.com>
- Each resource type is tracked and updated separately
- Added caching ability for Raytracing srg to save ~2ms for a scene containing 100 x 50 vegetation patch
Signed-off-by: moudgils <moudgils@amazon.com>
* Atom Timer fix - changed milliseconds to seconds
- Tested on both fog and EyeAdaptation animations - both are the only affected and were broken before
- This is a small fix for pull #3969 that replaced the timer mechanism: https://github.com/o3de/o3de/pull/3969
Signed-off-by: Adi-Amazon <barlev@amazon.com>
* Atom Timer fix - using seconds to begin with and removing obsolete variable
Signed-off-by: Adi-Amazon <barlev@amazon.com>
* ATOM-16249 Adding draw srg caching to DynamicDrawContext since creating SRG can be expensive for some backend
Signed-off-by: Qing Tao <qingtao@amazon.com>
* Create helper function for getting threads per
group from a compute shader
Added GetComputeShaderNumThreads() functions to RPIUtils.
By default the function returns 1, 1, 1 in case of errors.
Updated existing code that was looking for 'numthreads' attribute data
with the new GetComputeShaderNumThreads() API.
Signed-off-by: garrieta <garrieta@amazon.com>
* Added a ModelReloader class that handles reloading the hierarchy of assets in the correct order. A ModelReloaderSystem that is used to make sure there is only one ModelReloader at a time for a given asset. Modified the Model, ModelLodAsset, and Buffer assets to not automatically reload, and instead handle reloads manually via AssetCatalog events. Modified the MeshLoader to kick off a reload via the ModelReloaderSystem whenever a model asset is added or changed.
Signed-off-by: amzn-tommy <waltont@amazon.com>
* Comment updates
Signed-off-by: amzn-tommy <waltont@amazon.com>
* Minor naming and comment updates based on PR feedback
Signed-off-by: amzn-tommy <waltont@amazon.com>
* Correcting previous commit. I flipped == to != when switching from count to find, when it should have stayed ==
Signed-off-by: amzn-tommy <waltont@amazon.com>
* Updating RenderCommon header
Signed-off-by: amzn-tommy <waltont@amazon.com>
* Removing unneeded headers
Signed-off-by: amzn-tommy <waltont@amazon.com>
* Reverting RayTracingFeatureProcessor change following Doug's guidance. This logic was tricky to get right initially, and leads to TDR when incorrect, so leaving as is.
Signed-off-by: amzn-tommy <waltont@amazon.com>
* Removing a tab
Signed-off-by: amzn-tommy <waltont@amazon.com>
* Added missing #include for AssetId
Signed-off-by: amzn-tommy <waltont@amazon.com>
* Adding missing RTTI header
Signed-off-by: amzn-tommy <waltont@amazon.com>
* Include ModelAsset definition intead of forward declaring it to avoid a static assert on Linux
Signed-off-by: amzn-tommy <waltont@amazon.com>
* Hair
- First introduction of Hair gem to Atom and O3DE
- The hair technology is based off TressFX 4.1
- These are some of the areas we enhanced the original TressFX implementation:
- Lighting model was replaced and we now use a modified Marschner model
- Blending is done directly with the back buffer removing the silhouette of the original implementation
- Hair depth / thickness is now calculated to remove incorrect back lighting (TT lobe in the Marschner model)
- Thickness corrected to handle hair gaps hence introducing better light passage for the TT
- The hair is fully integrated into the Atom pipeline and structure design
- Usage of single shared buffer for the computer buffers reduces barriers sync overhead
Remarks:
- Collisions via SDF compute are to be introduced soon
- Improved shortcut rendering method ala Eidos Montreal to be introduced soon
Signed-off-by: Adi-Amazon <barlev@amazon.com>
* Hair - code clean pass
Signed-off-by: Adi-Amazon <barlev@amazon.com>
* Hair - EMFX Actor visibility implementation
Signed-off-by: Adi-Amazon <barlev@amazon.com>
* Hair - COnnecting hair passes to Atom's MainPipeline.pass
Signed-off-by: Adi-Amazon <barlev@amazon.com>
* Hair - adding dedicated thumbnail pipeline that does not include the hair gem
Signed-off-by: Adi-Amazon <barlev@amazon.com>
* Hair - changed Atom shader files to allow hooking the hair to the lighting data structures
Signed-off-by: Adi-Amazon <barlev@amazon.com>
* Hair - fixed a few headers to have the latest O3DE license + verification fixes
Signed-off-by: Adi-Amazon <barlev@amazon.com>
* Hair - enabling editor component only when tool pipline is built + default texture add
Signed-off-by: Adi-Amazon <barlev@amazon.com>
* Hair - fixing Linux and Android compilation builds
Signed-off-by: Adi-Amazon <barlev@amazon.com>
* Hair - another files change to make Linux compile
Signed-off-by: Adi-Amazon <barlev@amazon.com>
* Hair - more Linux and Android build fixes
Signed-off-by: Adi-Amazon <barlev@amazon.com>
* Hair
- Adding usage of fallback white texture
- Removing invalid null assignments into vectors
- Removing redundant mutex preventing deletion on some platforms
Signed-off-by: Adi-Amazon <barlev@amazon.com>
* Hair
- Shame: removed forgoten #pragma optimize
- Adding header complained by Android
Signed-off-by: Adi-Amazon <barlev@amazon.com>
* Hair - removing the Hair Gem connection in the active project.
- This submission removes the connection to the active project hence allowing to run without the Gem. Enable the passes in MainPipeline.pass and declare them again when you want to use the Gem.
Remark: the gem file PassTemplates.azasset was renamed and will be connected via code in the future to avoid the need to declare in the global pass template.
Signed-off-by: Adi-Amazon <barlev@amazon.com>
* Hair - registrating gem pass templates through the gem templates file (#198)
* Hair - registrating gem pass templates through the gem templates file
Signed-off-by: Adi-Amazon <barlev@amazon.com>
* Hair - adding handler disconnect for the pass template registration.
Signed-off-by: Adi-Amazon <barlev@amazon.com>
* Hair - PPLLIndexCounter buffer going data driven via the pass declarations (#202)
* Hair - PPLLIndexCounter buffer going data driven via the pass declaration
- Moving PPLLIndexCounter from code allocation and attachment to be data driven
- Fixed RPI typo bug that can prevent using buffers like that
Signed-off-by: Adi-Amazon <barlev@amazon.com>
* Hair - fixing UI Editor (LYShine) crash (#209)
Signed-off-by: Adi-Amazon <barlev@amazon.com>
* [Hair - resolved the multi pipeline mismatches and crashes + cleaned initialization & leftovers (#222)
* [Hair] - multiple render pipelines handling
Signed-off-by: Adi-Amazon <barlev@amazon.com>
* [Hair] - Shut down order is handle to allow hair feature processor be deregistered only after the bootstrap component has disabled it
Signed-off-by: Adi-Amazon <barlev@amazon.com>
* [Hair] - minor cleanups
Signed-off-by: Adi-Amazon <barlev@amazon.com>
* [Hair] - followups from review nits
Signed-off-by: Adi-Amazon <barlev@amazon.com>
* Hair - code fixes based on the CR remarks for the Hair merge to Dev (#248)
* Hair
- First introduction of Hair gem to Atom and O3DE
- The hair technology is based off TressFX 4.1
- These are some of the areas we enhanced the original TressFX implementation:
- Lighting model was replaced and we now use a modified Marschner model
- Blending is done directly with the back buffer removing the silhouette of the original implementation
- Hair depth / thickness is now calculated to remove incorrect back lighting (TT lobe in the Marschner model)
- Thickness corrected to handle hair gaps hence introducing better light passage for the TT
- The hair is fully integrated into the Atom pipeline and structure design
- Usage of single shared buffer for the computer buffers reduces barriers sync overhead
Remarks:
- Collisions via SDF compute are to be introduced soon
- Improved shortcut rendering method ala Eidos Montreal to be introduced soon
Signed-off-by: Adi-Amazon <barlev@amazon.com>
* Hair - code clean pass
Signed-off-by: Adi-Amazon <barlev@amazon.com>
* Hair - EMFX Actor visibility implementation
Signed-off-by: Adi-Amazon <barlev@amazon.com>
* Hair - COnnecting hair passes to Atom's MainPipeline.pass
Signed-off-by: Adi-Amazon <barlev@amazon.com>
* Hair - adding dedicated thumbnail pipeline that does not include the hair gem
Signed-off-by: Adi-Amazon <barlev@amazon.com>
* Hair - changed Atom shader files to allow hooking the hair to the lighting data structures
Signed-off-by: Adi-Amazon <barlev@amazon.com>
* Hair - fixed a few headers to have the latest O3DE license + verification fixes
Signed-off-by: Adi-Amazon <barlev@amazon.com>
* Hair - enabling editor component only when tool pipline is built + default texture add
Signed-off-by: Adi-Amazon <barlev@amazon.com>
* Hair - fixing Linux and Android compilation builds
Signed-off-by: Adi-Amazon <barlev@amazon.com>
* Hair - another files change to make Linux compile
Signed-off-by: Adi-Amazon <barlev@amazon.com>
* Hair - more Linux and Android build fixes
Signed-off-by: Adi-Amazon <barlev@amazon.com>
* Hair
- Adding usage of fallback white texture
- Removing invalid null assignments into vectors
- Removing redundant mutex preventing deletion on some platforms
Signed-off-by: Adi-Amazon <barlev@amazon.com>
* Hair
- Shame: removed forgoten #pragma optimize
- Adding header complained by Android
Signed-off-by: Adi-Amazon <barlev@amazon.com>
* Hair - removing the Hair Gem connection in the active project.
- This submission removes the connection to the active project hence allowing to run without the Gem. Enable the passes in MainPipeline.pass and declare them again when you want to use the Gem.
Remark: the gem file PassTemplates.azasset was renamed and will be connected via code in the future to avoid the need to declare in the global pass template.
Signed-off-by: Adi-Amazon <barlev@amazon.com>
* Hair - registrating gem pass templates through the gem templates file (#198)
* Hair - registrating gem pass templates through the gem templates file
Signed-off-by: Adi-Amazon <barlev@amazon.com>
* Hair - adding handler disconnect for the pass template registration.
Signed-off-by: Adi-Amazon <barlev@amazon.com>
* Hair - PPLLIndexCounter buffer going data driven via the pass declarations (#202)
* Hair - PPLLIndexCounter buffer going data driven via the pass declaration
- Moving PPLLIndexCounter from code allocation and attachment to be data driven
- Fixed RPI typo bug that can prevent using buffers like that
Signed-off-by: Adi-Amazon <barlev@amazon.com>
* Hair - fixing UI Editor (LYShine) crash (#209)
Signed-off-by: Adi-Amazon <barlev@amazon.com>
* [Hair - resolved the multi pipeline mismatches and crashes + cleaned initialization & leftovers (#222)
* [Hair] - multiple render pipelines handling
Signed-off-by: Adi-Amazon <barlev@amazon.com>
* [Hair] - Shut down order is handle to allow hair feature processor be deregistered only after the bootstrap component has disabled it
Signed-off-by: Adi-Amazon <barlev@amazon.com>
* [Hair] - minor cleanups
Signed-off-by: Adi-Amazon <barlev@amazon.com>
* [Hair] - followups from review nits
Signed-off-by: Adi-Amazon <barlev@amazon.com>
* Hair - last fixes based on CR remarks
Signed-off-by: Adi-Amazon <barlev@amazon.com>
* Hair - fixing AR
Signed-off-by: Adi-Amazon <barlev@amazon.com>
* adding Windows/release to PR-validation builds
Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com>
* changing trace back to expand to nothing for release
Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com>
* typo
Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com>
* more fixes
Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com>
* fixing some more unused variable cases
Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com>
* renaming file in ScriptCanvas that causes a msbuild warning
Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com>
* reverting a previous change
Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com>