Commit Graph

730 Commits

Author SHA1 Message Date
santorac 284a44d74c Updated AssetUtils::ResolvePathReference to avoid "The second join parameter is an absolute path" warnings from StringFunc::Path::Join.
Signed-off-by: santorac <55155825+santorac@users.noreply.github.com>
2021-11-16 11:45:26 -08:00
Tommy Walton 0dcf49affc Merge commit 'b0dfe26232b318e520887af65cd579ec87016636' into amzn-tommy/gitflow_211116_o3de2
Signed-off-by: Tommy Walton <waltont@amazon.com>
2021-11-16 11:45:09 -08:00
Tommy Walton 783bb72944 Merge commit 'f1d9e7ae28bf0667487c939aa32b1ef833da80f4' into amzn-tommy/gitflow_211116_o3de2 2021-11-16 11:41:26 -08:00
santorac db3d41ad9d Merge remote-tracking branch 'upstream/stabilization/2110' into Atom/santorac/MaterialEditorHandlesMissingTextures 2021-11-16 10:06:28 -08:00
santorac a789d7b762 Minor code cleanup.
Signed-off-by: santorac <55155825+santorac@users.noreply.github.com>
2021-11-16 00:00:10 -08:00
santorac 2657620846 Minor code cleanup.
Signed-off-by: santorac <55155825+santorac@users.noreply.github.com>
2021-11-15 23:56:10 -08:00
santorac aa85963a2b Fixed MaterialPropertyValue::FromAny to preserve the Hint string when converting Asset objects. This fixed an issue where the hint didn't show up in the Material Component's instance inspector.
Signed-off-by: santorac <55155825+santorac@users.noreply.github.com>
2021-11-15 23:21:21 -08:00
santorac 7d849cc0d2 Changed the overall strategy for how to handle missing image references. Instead of replacing it with one of the placeholder assets, we replace it with an random UUID which will be interpreted as a missing asset (unless some discovers discovers a UUID collision). This eventually gets replaced by one of the placeholder textures at runtime. This approach gives more consistent results in how missing texture are handled between Material Editor and Material Component.
I actually tried this approach before and it didn't seem to work the way we needed, but I realized that's because PropertyAssetCtrl wasn't handling missing assets properly. I fixed a few issues there including showing the error button when the asset can't be found, and fixing a broken reference to the error icon file.

Signed-off-by: santorac <55155825+santorac@users.noreply.github.com>
2021-11-15 16:51:22 -08:00
amzn-sean 38a03817bb Removal and Replacement of the CryTimer (gEnv->pTimer) (#5409)
Replaced and removed the CryTimer (gEnv->pTimer). The new TimeSystem is a merger of the current time functionality found in the engine.

* Rename TimeSystemComponent.h/.cpp to TimeSystem.h/.cpp
* Adding New TimeSystem
* remove old timer cvars
* small improvements to the time system.
 - updated parts to use the time conversion functions.
 - in AdvanceTickDeltaTimes applying t_simulationTickScale is now uses doubles instead of floats.
* Replace gEnv->pTimer / ITimer usages with TimeSystem
* Updating usages of AZ::TimeMs{ 0 } and AZ::TimeUs{ 0 } to AZ::Time::ZeroTimeMs and AZ::Time::ZeroTimeUs
* red code the CryTimer
* using TimeUs instead of TimeMs is some cases + updating usages of old cvars to new

Signed-off-by: amzn-sean <75276488+amzn-sean@users.noreply.github.com>
2021-11-15 12:11:58 +00:00
Guthrie Adams 4d3c977d58 Merge pull request #5585 from aws-lumberyard-dev/Atom/guthadam/cherrypick_material_relative_paths_to_stab
Cherry pick material editor saves relative paths to external references and test support to stabilization
2021-11-12 14:54:36 -06:00
galibzon b0dfe26232 The Build Time Stamp of ShaderAsset And (#5373)
* The Build Time Stamp of ShaderAsset And
ShaderVariantAsset Should Be Based On
GetTimeUTCMilliSecond()

GetTimeNowMicroseconds() is useful to measure time stamp differences.
GetTimeUTCMilliSecond() is for time stamps based on absolute clock/wall time.

* Updated DiffuseGlobalIllumination precompiled shaders

Co-authored-by: dmcdiar <dmcdiar@amazon.com>
Signed-off-by: galibzon <66021303+galibzon@users.noreply.github.com>
2021-11-12 13:51:07 -06:00
Guthrie Adams 172ec938cc moved AssetSystemStub to TestUtils folder
Signed-off-by: Guthrie Adams <guthadam@amazon.com>
2021-11-11 21:47:21 -06:00
Guthrie Adams 01ce02ffec Added basic unit test for relative path function
Moved asset system stub to RPI utils

Signed-off-by: Guthrie Adams <guthadam@amazon.com>
2021-11-11 21:46:40 -06:00
Guthrie Adams f18f838da6 material editor and exporter save source materials with relative paths
Signed-off-by: Guthrie Adams <guthadam@amazon.com>
2021-11-11 21:43:51 -06:00
santorac e1e282484f Merge remote-tracking branch 'upstream/stabilization/2110' into Atom/santorac/MaterialEditorHandlesMissingTextures 2021-11-11 13:13:23 -08:00
Tommy Walton f1d9e7ae28 Skybox hot reloading - fix black screen when running the editor for the first time with a clean cache (#5529)
* 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>
2021-11-11 12:55:06 -08:00
santorac 57989c35db Changed material builder to not fail on warnings.
The main reason for this is to give consistent results between the AP and Material Editor, where a placholder texture can be used if a texture is missing. Otherwise, you could get a placeholder texture in Material Editor and stale data in the runtime; this inconsistency would be confusing.
As a consequence, it is possible for example that the user could mess up the name of a property in a .material file and not notice the problem because it is now a warning instead of an error. If warnings-as-errors is desirable, you can enable the new "/O3DE/Atom/RPI/MaterialBuilder/WarningsAsErrors" registry setting.

Signed-off-by: santorac <55155825+santorac@users.noreply.github.com>
2021-11-11 12:50:17 -08:00
Nicholas Van Sickle 8d5dd4e35f Merge remote-tracking branch 'upstream/stabilization/2110' into nvsickle/StabToDevNov21
Signed-off-by: Nicholas Van Sickle <nvsickle@amazon.com>
2021-11-11 10:15:52 -08:00
Tom Hulton-Harrop 2812ec2024 Fix brute force mesh intersection function (#5447)
* 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>
2021-11-11 16:33:08 +00:00
santorac f27203a5fa Updated Material Editor to use the available default fallback images to visually indicate a missing texture.
Material Editor also warns the user when saving a material that is populated with fallback image references.
Factored out the path strings for the default images to ImateSystemInterface.h.

Signed-off-by: santorac <55155825+santorac@users.noreply.github.com>
2021-11-10 19:28:42 -08:00
santorac 2783248f03 Merge remote-tracking branch 'origin/Atom/amzn-tommy/ATOM-16289_SkyboxHotReloading' into Atom/santorac/MaterialEditorHandlesMissingTextures 2021-11-10 14:04:35 -08:00
santorac cd28d210ab Working on making Material Editor able to open materials that have missing textures.
Made it a warning instead of an error when MaterialAssetCreator can't find a texture.
Updated the Material Editor's MaterialDocument class to not elevate warnings to errors.
Material Editor uses new features in TraceRecorder to show a message dialog when warnings are detected so the user is notified of the missing texture.

Next I will work on making MaterialAssetCreator put a "missing" texture in place of the requested one.

Signed-off-by: santorac <55155825+santorac@users.noreply.github.com>
2021-11-10 14:02:17 -08:00
Tommy Walton 9a470f35ad Merge remote-tracking branch 'upstream/stabilization/2110' into Atom/amzn-tommy/ATOM-16289_SkyboxHotReloading
Signed-off-by: Tommy Walton <waltont@amazon.com>
2021-11-10 13:20:47 -08:00
Tommy Walton 09b9d371e0 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>
2021-11-10 13:20:25 -08:00
Qing Tao 21a254e9dc Fixed a type with pass filter (#5506)
Signed-off-by: Qing Tao <55564570+VickyAtAZ@users.noreply.github.com>
2021-11-10 13:15:04 -08:00
santorac 04c6f3cc94 cherry-pick 48f3bb7d
Signed-off-by: Guthrie Adams <guthadam@amazon.com>
2021-11-10 13:37:15 -06:00
Guthrie Adams 824da6cabf update comment and error message
Signed-off-by: Guthrie Adams <guthadam@amazon.com>
2021-11-10 13:34:35 -06:00
Guthrie Adams c73b6bbe27 Changing lua material functor script loading code to pass the correct sub ID for a compiled script asset
Signed-off-by: Guthrie Adams <guthadam@amazon.com>
2021-11-10 13:33:48 -06:00
Guthrie Adams 287f08a33c Fix parent material loading
Signed-off-by: Guthrie Adams <guthadam@amazon.com>
2021-11-10 13:33:10 -06:00
Guthrie Adams 086859d49a updated comments and error messages
Signed-off-by: Guthrie Adams <guthadam@amazon.com>
2021-11-10 13:32:27 -06:00
Guthrie Adams fbebf04161 cherry-pick c0acbe7b
Signed-off-by: Guthrie Adams <guthadam@amazon.com>
2021-11-10 13:31:24 -06:00
Guthrie Adams 6ea951214c Moving material type asset PostInit call to be consistent with material asset
Signed-off-by: Guthrie Adams <guthadam@amazon.com>
2021-11-10 12:58:47 -06:00
Guthrie Adams 6729941942 adding ifdef to compare loading vs creating material type assets
Signed-off-by: Guthrie Adams <guthadam@amazon.com>
2021-11-10 12:57:56 -06:00
Guthrie Adams b72970201b cleanup and setting asset preload flags
Signed-off-by: Guthrie Adams <guthadam@amazon.com>
2021-11-10 12:56:38 -06:00
Guthrie Adams b038faf9ca material editor loads source data
Signed-off-by: Guthrie Adams <guthadam@amazon.com>
2021-11-10 12:55:57 -06:00
Guthrie Adams 87c7023e3c Merge pull request #5109 from aws-lumberyard-dev/Atom/guthadam/material_editor_loads_source_data2
Material editor creates material assets from source JSON data instead of relying on AP
2021-11-10 12:31:17 -06:00
SJ 0c546828d6 1. Add nullptr checks to prevent crashes when non-critical shaders fail to compile. (#5451)
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>
2021-11-10 11:31:59 -06:00
SJ f5c00e9e72 Fix Editor crashes on asset failures (#5421)
* 1. Add nullptr checks to prevent crashes when non-critical shaders fail to compile.
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>

* Fix one more nullptr dereference.

Signed-off-by: amzn-sj <srikkant@amazon.com>
2021-11-10 11:31:49 -06:00
Guthrie Adams f0b4eb1712 update comment and error message
Signed-off-by: Guthrie Adams <guthadam@amazon.com>
2021-11-10 10:54:53 -06:00
santorac 68ceb9ed94 Merge pull request #5437 from aws-lumberyard-dev/Atom/santorac/CherrypickFixSceneSrgTime2
Cherrypick: Fixed potential render scene time precision issues
2021-11-09 11:00:31 -08:00
lumberyard-employee-dm 5fc4551ac0 [LYN-8041] Enable relocation of the Project Game Release Layout (#5380)
* Enable relocation of the Project Game Release Layout

Relocating the Project Game Release Layout to another directory on the file system failed due to the querying of the engine root failing due to the ComponentApplication::m_engineRoot not using the project path stored in the SettingsRegisry if the engine root cannot be detected

Removed the ApplicationRequestBus GetEngineRoot function.
The ComponentApplicationRequestBus has a function of the same name that returns the same path.

Removed the deprecated GetAppRoot function.
The path it returns has no defined value. It was not the engine root or the project root.
Removed unused CFileUtil and CFileUtil_impl functions that were invoking the ApplicationREquestBus GetEngineRoot function.
On the way to update the functions it was discovered that they aren't called

Added a CalculateBranchToken overload that can populate a fixed_string to avoid heap allocations

Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>

* Protect against an empty list of artifacts to remove when generating the
engine.pak

Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>
2021-11-09 12:03:52 -06:00
santorac c5cb90ddb7 Merge pull request #4426 from aws-lumberyard-dev/Atom/santorac/FixSceneSrgTime
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>
2021-11-08 20:24:53 -08:00
santorac 36043983cc Merge pull request #4426 from aws-lumberyard-dev/Atom/santorac/FixSceneSrgTime
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)
2021-11-08 19:35:00 -08:00
Guthrie Adams c372761f4e Changing lua material functor script loading code to pass the correct sub ID for a compiled script asset
Signed-off-by: Guthrie Adams <guthadam@amazon.com>
2021-11-08 18:21:51 -06:00
Guthrie Adams 791d11c8f9 Fix parent material loading
Signed-off-by: Guthrie Adams <guthadam@amazon.com>
2021-11-08 18:21:48 -06:00
Guthrie Adams 5afd701e23 updated comments and error messages
Signed-off-by: Guthrie Adams <guthadam@amazon.com>
2021-11-08 18:21:45 -06:00
Guthrie Adams c0acbe7bd4 Changed how asset creator generates the asset instance. Instead of finding or creating the asset in the asset manager, one is directly instantiated and only added to the asset manager after creation is complete. This allows for reuse of previously loaded asset ids and will replace or “reload” a pre-existing asset with the newly created one. This also sends although correct notifications.
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>
2021-11-08 18:21:42 -06:00
santorac 48f3bb7d7a Fixed missing initialization of ShaderCollection::Item::m_renderStatesOverlay.
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>
2021-11-08 18:21:39 -06:00
Guthrie Adams e632dc3b39 Moving material type asset PostInit call to be consistent with material asset
Signed-off-by: Guthrie Adams <guthadam@amazon.com>
2021-11-08 18:21:35 -06:00
Guthrie Adams 0724403f90 adding ifdef to compare loading vs creating material type assets
Signed-off-by: Guthrie Adams <guthadam@amazon.com>
2021-11-08 18:21:31 -06:00