Commit Graph

3469 Commits

Author SHA1 Message Date
Chris Santora 6cd1c44b7e Merge pull request #1385 from aws-lumberyard-dev/santorac/stabilization/2106/HotReloadFixes
Fixed ATOM-14613 MatertialHotReloadTest fails to reload the material after reloading the shader

The problem was...
After a MaterialAsset reload, there could be two different versions of the MaterialAsset in memory: the old one and the reloaded one. The old one is still connected to buses and can send reinitialization messages when other things reload or reinitialize. So when the shader asset reloaded, both the old and new MaterialAsset were sending reinitialization messages. Material::OnMaterialAssetReinitialized was using the materialAsset parameter to initialize the Material, and the latest call to OnMaterialAssetReinitialized was for the old MaterialAsset.

The solution is to use the m_materialAsset member when reinitializing the Material. I also added checks in a couple places to skip unnecessary reinitialization, and added comments in the bus headers to warn developers about this issue.

Testing: Added a new step to ASV's MaterialHotReloadTest.bv.lua script for the error scenario, and this now passes. Ran ASV full test suite, both dx12 and vulkan, only known issues occurred. Tested .shader and .material hot reload in Editor and Material Editor.

See also aws-lumberyard/o3de-atom-sampleviewer#121
2021-06-16 18:47:32 -07:00
Chris Santora 688c5d1052 Merge remote-tracking branch 'upstream/stabilization/2106' into santorac/stabilization/2106/HotReloadFixes 2021-06-16 17:23:06 -07:00
Chris Santora b176697ce9 Fixed ATOM-14613 Baseviewer MatertialHotReloadTest fails to change the color after turning blending on and off
The problem was...
After a MaterialAsset reload, there could be two different versions of the MaterialAsset in memory: the old one and the reloaded one. The old one is still connected to buses and can send reinitialization messages when other things reload or reinitialize. So when the shader asset reloaded, both the old and new MaterialAsset were sending reinitialization messages. Material::OnMaterialAssetReinitialized was using the materialAsset parameter to initialize the Material, and the latest call to OnMaterialAssetReinitialized was for the *old* MaterialAsset.

The solution is to use the m_materialAsset member when reinitializing the Material. I also added checks in a couple places to skip unnecessary reinitialization, and added comments in the bus headers to warn developers about this issue.

Testing: Added a new step to ASV's MaterialHotReloadTest.bv.lua script for the error scenario, and this now passes. Ran ASV full test suite, both dx12 and vulkan, only known issues occurred.
2021-06-16 17:04:49 -07:00
Qing Tao 7b0d2aac03 Fixed potential crash if an attachment binding doesn't connect to an attachment. (#1373) 2021-06-16 17:00:41 -07:00
Danilo Aimini 62c70035f4 Change Editor Window name for Developer Preview (#1371) 2021-06-16 16:48:25 -07:00
moudgils 1e35e0e1e7 Fix minor compile error (#1375) 2021-06-16 16:41:38 -07:00
Gene Walters 17d1f3ce18 Merge pull request #1357 from aws-lumberyard-dev/SPEC7214_SeparateNetworkPropertiesEventBindingsAndScriptBindings
SPEC-7214 New Network Property Attribute: "ExposeToScript"
2021-06-16 15:40:40 -07:00
amzn-hdoke b74a153f75 Update AWSAttribution endpoint to prod endpoint (#1335) 2021-06-16 14:25:26 -07:00
Qing Tao aa2c27b22d ATOM-15780 Improve cpu profiler allows pause and output profiling data to a file for reference (#1358)
- Added a pause button in imgui cpu profiler.
- Added a capture button to save cpu profiling data to a data file.
- Added some profile marks in both RPI and RHI.
2021-06-16 13:41:27 -07:00
sharmajs-amzn 6d608c2297 {SPEC-6460} BuildReleaseAuxiliaryContent fails to execute (#1341)
* Removing Auxiliary tests

* removing auxiliary test from running
2021-06-16 13:36:12 -07:00
Chris Santora 15db879e43 Merge pull request #1356 from aws-lumberyard-dev/santorac/stabilization/2106/HotReloadFixes
Added new shader reinitialization signaling

This was done while working on "ATOM-15728 Shader Hot Reload Fails in Debug Build", but it turned out these changes did not actually fix the issue (or any other known hot-reload issue). Still, these improvements are appropriate as they correct logical oversights.

ShaderVariant was not listening to asset reloads. It needs to know when the ShaderVariantAsset reload happens so it can reinitialize it's members as well as propagate reinitialization messages. I added a member for the ShaderAsset as the class needs this to reinitialize itself. So now the class listens for reloads of both the ShaderVariantAsset and the ShaderAsset.

Shader was not listening for ShaderAsset reinitialization events.

Updated the API for ShaderReloadNotificationBus's OnShaderVariantReinitialized to include the ShaderVariant which is the most relevant information (the other information wasn't really being used anyway).

Testing: Ran ASV full test suite in dx12 and vulkan, saw only known issues. Tested hot reload in Material Editor and main Editor.

See also aws-lumberyard/o3de-atom-sampleviewer#118
2021-06-16 12:20:58 -07:00
Ken Pruiksma cf9e088133 ATOM-15708 ATOM-15709. Disabling the low end shader for blended and tinted transparencies. The standard shader is already drawing in the transparent pass for those blend modes. Also improving the way StandardPBR_HandleOpacityMode is getting the correct shader by using a tag instead of index. (#1355) 2021-06-16 14:17:21 -05:00
Alex Peterson b0bb29373b Removed legacy PhysicsEntities gem 2021-06-16 11:43:21 -07:00
mrieggeramzn a505ed8a51 Merge pull request #1302 from aws-lumberyard-dev/Atom/mriegger/esmexponent2106
Atom/mriegger/esmexponent2106
2021-06-16 10:47:26 -07:00
Chris Santora ddfd0dd046 Merge remote-tracking branch 'upstream/stabilization/2106' into santorac/stabilization/2106/HotReloadFixes 2021-06-16 10:42:14 -07:00
Benjamin Jillich 2cfa1de148 [LYN-3117] Adding a skeletal mesh to a project doesn't include an Actor by default (#1303)
* Before we were skipping actors in case there was animation data present in the source asset to avoid having many duplicated actors.
* There was an issue though for simple test fbx files containing a full character with a test motion.
* The new rule is that we will be exporting actors on default whenever there is a skeleton including either skinning data or morph targets, as these usually are not included for animation assets to not increase disk space heavily.
* Tested with several of our assets and always showed the expected behavior with the new way.
2021-06-16 19:08:16 +02:00
Scott Romero 00ebaad9db [stabilization/2106] legal and UX requested changes to installer (#1351)
Updated window size and re-organized elements
Updated product name to include [Developer Preview]
Replaced font type with correct one
Replaced square O3DE logo with full name logo
Reworded and removed checkbox for EULA acceptance
2021-06-16 08:58:15 -07:00
Chris Burel 5946a5981e Fix code that triggers -Wnon-pod-varargs (#1354)
This fixes mac-specific instances of the `-Wnon-pod-varargs` warning.
2021-06-16 08:35:07 -07:00
AMZN-stankowi 1fd0886b70 Updated AssImp to v10 for Windows Invert PostRotation matrix in animation chains (#1340) 2021-06-16 08:32:47 -07:00
Gene Walters bcd008df20 Allowing network properties to generate event bindings while staying hidden from script by using a new ExposeToScript attribute. This was useful in hiding NetworkTransformComponent properties which needed event binding in order to update the normal transform, but remain hidden from scripters who should still be using the normal transform component 2021-06-15 21:22:45 -07:00
Chris Santora c158ca178f Added new shader reinitialization signaling.
This was done while working on "ATOM-15728 Shader Hot Reload Fails in Debug Build", but it turned out these changes did not actually fix the issue (or any other known hot-reload issue). Still, these improvements are appropriate as they correct logical oversights.

ShaderVariant was not listening to asset reloads. It needs to know when the ShaderVariantAsset reload happens so it can reinitialize it's members as well as propagate reinitialization messages. I added a member for the ShaderAsset as the class needs this to reinitialize itself. So now the class listens for reloads of both the ShaderVariantAsset and the ShaderAsset.

Shader was not listening for ShaderAsset reinitialization events.

Updated the API for ShaderReloadNotificationBus's OnShaderVariantReinitialized to include the ShaderVariant which is the most relevant information (the other information wasn't really being used anyway).
2021-06-15 19:26:11 -07:00
scottr 084430f0c9 [cpack/stabilization/2106] update xml strings to use cmake bracket argument 2021-06-15 19:17:51 -07:00
Chris Santora 634b755338 Merge pull request #1323 from aws-lumberyard-dev/santorac/stabilization/2106/HotReloadFixes
Fixed Shader Hot-Reload Race Condition

ATOM-15728 Shader Hot Reload Fails in Debug Build

The main change was to add OnAssetReady handlers to each of the asset classes. See comments in ShaderAsset::OnAssetReady for a detailed explanation. In short, OnAssetReloaded gets missed while assets are being reloaded at the same time on multiple threads, but OnAssetReady is always called whenever connecting to the AssetBus because of its AssetConnectionPolicy.

The above change required the addition of a new AssetInitBus to call the PostLoadInit() functions. Because OnAssetReady connects to buses that are not mutex-protected, they have to be connected on the main thread. AssetInitBus::PostLoadInit is called every frame in RPISystem::SimulationTick. All Atom's asset handlers that need to do post-load initialization must connect to the AssetInitBus, and the asset will disconnect itself after initialization is complete.

We also need the Shader class to handle OnShaderAssetReinitialized to properly handle the shader reload.

With these changes I can click back and forth between "Blending On" and "Blending Off" many times (like 20 times) without issue.

Testing: AtomSampleViewer passes in dx12 and vulkan (except for known issues). Opened several AtomTest levels. Opened a multilayer material in material editor and made changes to the multilayer forward pass .shader file and saw proper reload.
2021-06-15 19:05:39 -07:00
lumberyard-employee-dm b945e1689a Updated the Default Project template to enable the "Standard" list of gems (#1325)
* Added a ModuleInterface class for sharing an AZ::Module implementation

The ModuleInterface class registers the SystemComponent that that comes
with the Client module and returns in it's GetRequiredSystemComponent
the Clients module SystemComponent

An EditorModule class has been added which inherits from the
ModuleInterface class and extends the registered SystemComponent
descriptors with it's SystemComponent.
It then overrides teh GetRequiredSystemComponent function and replaces
the required SystemComponent with it's Tools module SystemComponent

* Updated the DefaultProject list of Gems to match the decided Standard list of gems

* Updated the comment in the EditorModule constructor

The comment indicates that all component descriptors should be added to the m_descriptors list

* Added more detail to the ModuleInterface constructor about the registering the Component Descriptors
2021-06-15 20:45:10 -05:00
lumberyard-employee-dm 4014cacff8 Added a ${GemName}.Builders variant to Asset-Only Gems (#1324)
* Creating Builder variant aliases for all Asset Gems

* Added an AssetGem template for creating an Asset Gem

The AssetGem template is meant for non-code Gems

* Updated the engine_template.py commands to use pathlib

Each of the four commands: create-template, create-from-template,
create-project and create-gem have been updated to use pathlib.Path or
any path manipulation

Fix several python errors when instantiating a template with missing
o3de objects.
For example attempting to use the create-project command with the
"DefaultGem" template would result in a python exception instaed of a
error log and a return value 0..

Added a **force** option to the engine_template commands
to force overriding of existing files

* Optimized search through text files when the create-template command is
run when attempting to replace the license text section

* Adding a Minimal Project Template that contains the minimal set of gems
as stated by UX

* Minor changes to the DefaultProject template. Added a license section to the EngineFinder.cmake

* Adding the MinimalProject to the engine.json file
2021-06-15 20:44:23 -05:00
scottr ba1979b6fc [cpack/stabilization/2106] fixed various text entries getting clipped after reinstalling the font 2021-06-15 18:42:21 -07:00
Chris Santora 7bfc6dd7cb Merge remote-tracking branch 'upstream/stabilization/2106' into santorac/stabilization/2106/HotReloadFixes 2021-06-15 17:01:19 -07:00
Chris Santora 570f4f5f36 Fixed unit test compile issue 2021-06-15 17:00:30 -07:00
srikappa-amzn 604dca1c3e Merge pull request #1349 from aws-lumberyard-dev/BenchMarksReset
Change create-spawnable benchmarks to not destroy created spawnables immediately
2021-06-15 16:18:02 -07:00
scottr cd44bb2950 Merge branch 'stabilization/2106' into cpack/stabilization/2106 2021-06-15 16:12:20 -07:00
scottr 91dec06f66 [cpack/stabilization/2106] minor tweaks: increased button height to fit admin icon, fixed button bar background size issue, fixed progress text overwrite bug 2021-06-15 15:56:14 -07:00
Eric Phister 74491c88b8 Fix AssetBuilders when project-path has a trailing slash (#1345)
* Fixes issues with project paths w/ trailing slash

When launching AP with a --project-path that has a trailing slash, the
AssetBuilders would get that slash instead of a normalized version.
This would mess up the params sent to AssetBuilders.

* Missed a variable name replacement

* Addresses feedback on code style guidelines

Removed 'auto' keyword in favor of explicit types.
2021-06-15 17:50:40 -05:00
Jonny Galloway 7c28b1ff86 Merge pull request #1346 from aws-lumberyard-dev/Atom/gallowj/stabilization/2106
Removing this superfluous data not used by engine
2021-06-15 17:04:52 -05:00
carlitosan 889e6e2b14 Merge pull request #1287 from aws-lumberyard-dev/carlito/stabilization/2106
Remove unwanted entries from ScriptCanvas node palette
2021-06-15 15:01:54 -07:00
scottr f4f3009948 [cpack/stabilization/2106] re-layout bottom button bar 2021-06-15 14:45:08 -07:00
srikappa-amzn bd8b6aea8e Moved vector declartion inside state for loop 2021-06-15 14:12:08 -07:00
scottr e82a782ca8 [cpack/stabilization/2106] fixed a couple ux issues that cropped up in the re-layout 2021-06-15 14:11:38 -07:00
scottr e309afb077 [cpack/stabilization/2106] font cleanup 2021-06-15 14:01:54 -07:00
chcurran 94edb18ed0 disabled upgrade menu until we can stabilize the tool (LYN-3799) 2021-06-15 13:36:03 -07:00
Jonny Galloway 76e0f84670 Merge pull request #1342 from aws-lumberyard-dev/Atom/gallowj/stabilization/2106
Removing the LookDevStudio asset gem from primary o3de repo
2021-06-15 15:31:12 -05:00
gallowj f558e961ae Removing this superflous data not used by engine 2021-06-15 15:30:21 -05:00
scottr 6c96ad89c4 [cpack/stabilization/2106] updated failure state page layout to include warning image 2021-06-15 13:26:14 -07:00
scottr 0108953586 [cpack/stabilization/2106] added: welcome page title, package full name. updated: install page title, vendor 2021-06-15 12:51:44 -07:00
yuriy0 e40a598648 Bug fix: check for valid extension in case insensitive manner (#1339) 2021-06-15 12:41:58 -07:00
scottr 2d5fe7b835 [cpack/stabilization/2106] resize bootstrapper windows size and adjust center elements 2021-06-15 12:30:18 -07:00
Chris Santora 03171fee54 Updated AssetInitBus comments. 2021-06-15 12:17:44 -07:00
chcurran 2fd985f162 Fix for unconverted once nodes 2021-06-15 12:13:25 -07:00
chcurran 9f7f6e84a4 Merge branch 'stabilization/2106' of https://github.com/aws-lumberyard/o3de into carlito/stabilization/2106 2021-06-15 12:10:10 -07:00
Mike Balfour ab3aa904f0 Fixed misc slice conversion bugs
* Fixed crash caused by nesting the same slice twice
If the same slice is nested at multiple levels in the same slice hierarchy, the second conversion would reregister the prefab and crash.  Now that case is detected and the slice isn't reconverted.

* Fixed json array patches where multiple elements are removed.
The patches now generate removals from back to front, instead of front to back, so that the indices remain valid as each patch is applied.
2021-06-15 14:00:47 -05:00
gallowj 5c952e2e14 Removing the LookDevStudio asset gem from primary o3de repo 2021-06-15 13:39:18 -05:00