Commit Graph

175 Commits

Author SHA1 Message Date
moudgils 7ef383580e Metal sync interval support (#2187)
* Metal sync interval support
Add shader name to SRGPool for debugging purposes
Set default value of rpi_vsync_interval to 1

Signed-off-by: moudgils <moudgils@amazon.com>
2021-07-15 11:50:19 -07:00
AMZN-tpeng cd819062f9 [ATOM][RHI][Vulkan][Android] - use bit conversion from enum to check for gpu query type support (#2141)
ATOM-15742

Signed-off-by: Tony Peng <tonypeng@amazon.com>
Signed-off-by: Peng <tonypeng@amazon.com>
2021-07-14 12:20:39 -05:00
Jeremy Ong 11327b59ea Expose vsync interval with new cvar rpi_vsync_interval and support Vulkan vsync (#2061)
* Expose vsync interval with new cvar rpi_vsync_interval

On change, the rpi_vsync_interval is broadcasted to a new event on
the WindowNotificationBus and all swapchains are recreated with the
new vsync value.

Signed-off-by: Jeremy Ong <jeremycong@gmail.com>

* Add vsync interval support to the Vulkan RHI

Vsync intervals are not intrinsically supported using the Vulkan
swapchain extension. Instead, extra presents are enqueued for each
extra vblank requested past 1. Swapchain recreation is triggered
when transitioning to and from the FIFO presentation mode (when
rpi_vsync_interval transitions from and to 0 respectively).

Signed-off-by: Jeremy Ong <jeremycong@gmail.com>

* Rollback vsync > 1 implementation on Vulkan and leverage *Internal pattern

Signed-off-by: Jeremy Ong <jeremycong@gmail.com>
2021-07-13 20:54:06 -07:00
Chris Galvan e924ed0b86 Merged stabilization/2106 to development; Resolved merge conflicts
Signed-off-by: Chris Galvan <chgalvan@amazon.com>
2021-07-12 10:45:23 -05:00
dmcdiar 4efecb88a5 Merge branch 'stabilization/2106' into Atom/dmcdiar/ATOM-15951 2021-07-09 18:32:24 -07:00
Chris Galvan 3b1873b045 Merged stabilization/2106 -> development (resolved merge conflicts).
Signed-off-by: Chris Galvan <chgalvan@amazon.com>
2021-07-08 13:56:47 -05:00
Qing Tao 6d9230e292 ATOM-15939 Add support to capture attachment for ParentPass (#1887)
* ATOM-15939 Add support to capture attachment for ParentPass
- Moved the attachment read back support to Pass class so it supports both ParentPass and RenderPass.
- Added support to output input or output state of an InputOutput attachment.
- Enabled showing ParentPass attachments in PassTree tool.

Signed-off-by: Tao <qingtao@amazon.com>
2021-07-08 08:23:37 -07:00
dmcdiar 762b3ee582 Suspended ray tracing for DiffuseProbeGrids that are not visible, either off-screen or behind an occlusion culling plane
Added a culling flag that indicates if the cullable object is currently visible in any view

Signed-off-by: dmcdiar <dmcdiar@amazon.com>
2021-07-08 00:24:52 -07:00
nvsickle 14cab097c7 Fix DPI change callback not being wired up correctly.
Signed-off-by: nvsickle <nvsickle@amazon.com>
2021-07-07 13:19:51 -07:00
nvsickle 21dbe8b48f Address review feedback
Signed-off-by: nvsickle <nvsickle@amazon.com>
2021-07-07 11:51:16 -07:00
nvsickle dd20a598b2 Add DPI scaling to IMGUI
Signed-off-by: nvsickle <nvsickle@amazon.com>
2021-07-07 11:51:15 -07:00
nvsickle 6b76eceb1f Add GetDpiScaleFactor to native window API
-This includes implementations of the API for the Editor and Windows, all other platforms will have a 1.0 scale for now

Signed-off-by: nvsickle <nvsickle@amazon.com>
2021-07-07 11:51:08 -07:00
Chris Galvan 40f9761f86 Fixed more copyright header issues caused by script replacement
Signed-off-by: Chris Galvan <chgalvan@amazon.com>
2021-07-02 16:21:26 -05:00
Chris Galvan b9e06e70d9 Fixed copyright header issues per new validator
Signed-off-by: Chris Galvan <chgalvan@amazon.com>
2021-07-02 15:34:04 -05:00
Chris Galvan d7574777a8 Resolved merge conflicts
Signed-off-by: Chris Galvan <chgalvan@amazon.com>
2021-07-02 12:42:44 -05:00
Steve Pham b4a2edec6a Final update copyright headers to reference license files at the repo root (#1693)
* Final update copyright headers to reference license files at the repo root

Signed-off-by: spham <spham@amazon.com>

* Fix copyright validator unit tests to support the stale O3DE header scenario

Signed-off-by: spham <spham@amazon.com>
2021-06-30 19:51:55 -07:00
Tommy Walton 8d2154af26 Partial fix for LYN-2227 : MeshComponent initialization performance improvement (#1381)
Skip a shader item before creating a shader instance if it's not going to be rendered based on the draw tag. This avoids creating and releasing the shader instance over and over again, which results in a disk write each time during release.
2021-06-30 11:13:54 -07:00
Gene Walters f905b71844 Adding missing o3de copyright headers
Signed-off-by: Gene Walters <genewalt@amazon.com>
2021-06-29 13:48:45 -07:00
Gene Walters 4e14c0069b Merge branch 'upstream/stabilization/2106' into genewalt/gitflow_210628 2021-06-28 19:09:20 -07:00
Tommy Walton 5656736db4 Fix for LYN-3726 : Actor Draw Character Doesn't Work (#1336)
-Re-purposed an unused boolean in RPI::Cullable for previous frame's visiblity to instead represent objects that are hidden in the simulation.
-Updated MeshFeatureProcessor::SetVisible to set this value on the cullable.
-Updated the MeshComponent to handle visiblity changes by not rendering the mesh instead of deactivating and/or reactivating the component.
-Updated the AtomActorInstance to handle changes to the visibility from the ActorComponent.

Tested by creating two entities with static mesh components, on entity hidden and the other visible. Plus three entities with actor components, one where the actor is visible, one where the entity is visible but the 'render character' setting on the actor component is disabled, and one where the 'render character' setting is enabled, but the entity is not visible.

For each of these 5 entities, I added them as 5 loose entities, 5 entities that were children to a parent entity, and a slice with all 5 as children to a parent entity, and tested toggling visibility of the parent entities.

For each of these 3 sets of 5 entities, I added them directly to the level, added them all to a layer where the layer was visible, and added them all to a layer where the layer was not visible, and tested toggling the visibility of the layers.
2021-06-28 09:26:03 -07:00
Chris Santora 7c2f5890b6 Removed unused shader "2" files
Removed unused shader "2" files

Removed unused shader "2" files that were part of a redesign effort, which is now complete on the development branch. These files are not needed for the upcoming release and could cause confusion for other developers.

ATOM-15837 Remove Unused Shader System Related *2 Classes From Stabilization Branch.

Testing: ASV full test suite on dx12 and vulkan. Only saw known issues.

See also https://github.com/aws-lumberyard/o3de-atom-sampleviewer/pull/142

Merge pull request #1585 from aws-lumberyard-dev/santorac/stabilization/2106/RemoveShader2-ATOM-15837
2021-06-25 11:53:01 -07:00
Qing Tao 9ccb65aac4 ATOM-15859 AuxGeom rendering in editor is too expensive (#1582)
* ATOM-15859 AuxGeom rendering in editor is too expensive
- The OrphanBuffer calls is the main reason that AuxGeom FP render is slow.
- Switched to use DynamicBuffer for buffers used in DynamicPrimitiveProcessor
- Added some profiling marks.
- Removed DynamicPrimitiveProcessor per view which was added because of OrphanBuffer can only be called once per frame.
2021-06-25 11:45:07 -07:00
Chris Santora 81247aa0e8 Removed unused shader "2" files that were part of a redesign effort, which is now complete on the development branch. These files are not needed for the upcoming release and could cause confusion for other developers.
ATOM-15837 Remove Unused Shader System Related *2 Classes From Stabilization Branch.

Testing: ASV full test suite on dx12 and vulkan. Only saw known issues.
2021-06-24 22:42:45 -07:00
Mike Balfour 567156b85a [ATOM-4343] Temporary fix for vegetation raycasts until full solution is implemented. (#1572)
Currently, the first time a raycast is attempted for a model, the raycast will fail and the model's kdtree will asynchronously get built.  This breaks the vegetation system, which expects the queries to always work.  This adds in a brute-force fallback for use while the kdtree is building.  However, other use cases like the Editor mouse cursor selection raycast still should get the current "silent failure" behavior, because otherwise the Editor will lock up for several seconds the first time the mouse moves over an extremely complex model.
2021-06-24 17:30:24 -05:00
moudgils 65f8182520 Fix mac image preview pass. ImagePreviewPass correctly uses the swapchain texture to render into. (#1566)
* Fix ImagePreviewPass on Mac + minor cleanup
2021-06-24 14:26:11 -07:00
moudgils 0e3127240f Enable 16 byte alignment for root constants and a minor cleanup (#1522)
* Enable 16 byte alignment for root constants 
* Switching to R8G8B8A8_UINT for dummy stream buffers
* Clamping min values for scissor/viewport for fullscreen pass
2021-06-23 18:54:03 -07:00
Steve Pham 70042fcdcd O3DE Copyright Updates for Linux Foundation (#1504) 2021-06-23 10:55:22 -07:00
Doug McDiarmid 1221b0f74f Minor formatting change. 2021-06-23 02:06:31 -07:00
Doug McDiarmid d98ad8eda8 Fix for FullscreenTrianglePass viewport and scissor state (author: moudgils). 2021-06-22 23:48:14 -07:00
Ken Pruiksma 570696ad76 [ATOM-14344][ATOM-13908] Merging skinned and static mesh motion shaders using an optional vertex stream (#1491)
[ATOM-14344][ATOM-13908] Merging skinned and static mesh motion shaders using an optional vertext stream. This removes the log spam "Mesh does not have all the required input streams. Missing 'POSITIONT0'." and allows Material::GetShaderCollection() to be const only as it was intended. The MeshFeatureProcessor also no longer needs to decide which motion vector shader to use, and therefore no longer has m_skinnedMeshWithMotion in the descriptor to acquire a mesh.
2021-06-22 21:25:43 -05:00
hershey5045 f6768ea880 Fix camera issue causing it to block component property changes in editor (#1466) 2021-06-22 12:56:38 -07:00
mbalfour df648db62e Merge branch 'stabilization/2106' into mbalfour/gitflow_210622
# Conflicts:
#	Code/Framework/AzQtComponents/AzQtComponents/Components/Style.cpp
#	Code/Framework/AzToolsFramework/AzToolsFramework/Viewport/ViewportMessages.h
#	Gems/AWSCore/Code/Source/Editor/UI/AWSCoreEditorMenu.cpp
2021-06-22 12:55:18 -05:00
moudgils 4f84ec90d3 Various new metal fixes (#1465)
* - Fix the second window related tabbing issue
- Merge calls to UseResoources acrooaa all the SRGs
- Move SamplerCache to the device to ensure only one cache to reduce duplication
- Fixes to compute threading numbers getting reset to 0,0,0
- Cleanup withing BufferPoolResolver
- Argument buffers are now queued to be cleaned up upon shutdown
2021-06-22 08:58:15 -07:00
Doug McDiarmid e769219bac Merge branch 'development' into Atom/dmcdiar/ATOM-5702
# Conflicts:
#	Gems/Atom/RPI/Code/Source/RPI.Public/Shader/Shader.cpp
#	Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderAsset.cpp
2021-06-21 15:26:20 -07:00
Doug McDiarmid 5137a8aec5 Added a new MSAAResolveFullScreenPass which will disable itself in non-MSAA pipelines.
Changed MSAAResolvePass to disable itself in non-MSAA pipelines.
2021-06-21 02:45:59 -07:00
Doug McDiarmid ada63089b5 Changed FullScreenTrianglePass::FrameBegin to use FramePrepareParams viewport and scissor states if they are set.
Changed ReflectionScreenSpaceBlurChildPass to set the viewport and scissor states.
2021-06-19 01:30:36 -07:00
nvsickle dc3d1dc010 Restore connections in ShaderVariant::Init 2021-06-18 22:03:39 -07:00
Doug McDiarmid 72e5ab4437 Merge branch 'development' into Atom/dmcdiar/ATOM-5702 2021-06-18 17:12:52 -07:00
Doug McDiarmid dc1d34c83f NoMSAA supervariant support
Added a ShaderSystem supervariant to provide a system-wide supervariant name.
Changed ShaderAsset to append the system-wide supervariant name when searching for supervariants.
Added the NoMSAA supervariant to several shaders.
2021-06-18 16:39:32 -07:00
nvsickle 6f244474b5 Remove double Shader init call 2021-06-18 14:50:55 -07:00
nvsickle ea3adc8405 Fix several merge conflicts and auto-formatting issues 2021-06-18 13:41:59 -07:00
nvsickle e55580af57 Merge remote-tracking branch 'upstream/stabilization/2106' into nvsickle/MergeStabilizationJun18 2021-06-18 13:25:53 -07:00
lumberyard-employee-dm 7dabe8b6e9 Updated Several Engine Gem's CMakeLists.txt to add themselves as required Gems (#1262)
* Fixed organization of the AssetProcessor SourceAssetBrowser

Assets within the Engine Root were grouped under a '/' entry.
That has been fixed to use the relative path within the engine root for
those assets
Assets outside of the Engine Root, but on the same drive were using
absolute paths before. Now there are child entries that navigate up the
directory hierarchy to those asset locations

* Added ly_enable_gems call to Atom gems targets that are required

The DefaultLevel.prefab contains several Atom components, that require
the Atom RHI, RPI, Common_Feature, ShaderBuilder and AtomLyIntegration CommonFeatures
gems to be enabled in order to successfully process in the
AssetProcessor.

* Added ly_enable_gems call to make the Camera gem required in Tools,
Builders and Clients.

This is needed as the DefaultLevel.prefab contains an Editor Camera
Component

* Adding the ly_enable_gem call to make the Maestro gem required

CrySystem currently requires Maestro to be enabled in order to
initialize

* Added ly_enable_gems call to the SceneProcessing gem to make it required

The SceneCore and SceneData libraries that are part of the core engine
Code folder requires the SceneProcessing gem to be enabled in order to
invoke the InitializeDynamicModule hooks in DllMain.cpp in order to
initialize those libraries.

* Fixed bad argument in comment for Prefab CMakeLists.txt

* Fixed Assert in Asset Builders due to the Atom RPI Builder

The Atom RPI Builder was enabling the Asset Catalog for the ScriptAsset a second time

The Atom Feature Common EditorSystemCommonComponent.cpp which also loads
in the AssetBuilder is enabling the Asset Catalog for the ScriptAsset

Added BehaviorContext reflection to the OutputDeviceTransformType enum
to fix the BehaviorContext errors about reflecting a method that returns
such an enum

* Added TypeId output to the JsonDeserializer report message about missing
ClassData

Previously the report callback would indicate that the target type was
missing Serialization class data, but didn't indicate the TypeId of the
target type

* Added support to the ly_enable_gems function to be able to support
0 gems being enabled.

Updated the Install step for CMake to propagate any ly_enable_gems
within a CMakeLists.txt for a target into the generated CMakeLists.txt
that is made for each installed IMPORTED target

* Adding newline to the end of the Camera Gem CMakeLists.txt

* Fixing target TYPE parameter for actual Gem Modules to use the GEM_MODULE tag instead of MODULE

* Reverting change to the DESTINATION directory for the installed CMakeLists.txt to use the relative path to the installed directory

* Adding the Atom_Bootstrap gem as a required gem

The Client and GameLaunchers required the Atom_Bootstrap gem in order to create the NativeWindow
Added Atom_Feature_Common client module as a runtime dependency of the AtomLyIntegration CommonsFeature client module

* Fixed register.py --all-projects-path and --all-gems-path arguments to
NOT register projects or gems that are within a template folder
Fixed reading of old pre-1.0 o3de_manifest.json files where the
"engines" key was a json array

* Changed how the relative target source directory is calculated when that source directroy resides outside of the engine root.
The final dirname component is used with a unique SHA256 has to form a <dirname>-<8 char SHA256> folder for installing files into

* Adding newline to the end of Atom_Bootstrap CMakeLists.txt

* Moving ly_enable_gems variants for Tools and Builders inside of PAL_TRAIT_BUILD_HOST_TOOLS block

* Adding a comment to AWSCore.ResourceMappingTool target to indicate that it is not a GEM_MODULE.
Furthermore it cannot be loaded with the Gem system because the library is in a different directory the executable
2021-06-17 13:58:20 -05:00
galibzon 1097cb7ce3 [ATOM-14935] MaterialHotReloadTest Fails On Second Try (#1384)
[ATOM-14544] Add Reset() function to IShaderVariantFinder

ShaderVariantAsyncLoader::Reset() now Shutdown and Init(). It clears
the cache of ShaderVariantAssets it keeps in memory.

Signed-off-by: garrieta <garrieta@amazon.com>
2021-06-16 20:56:39 -05: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
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
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
AMZN-mnaumov c0dc0cb936 Merge pull request #1337 from aws-lumberyard-dev/mnaumov/StabilizationJun15
Stabilization to Development merge - 06/15/21
2021-06-15 15:42:04 -07:00