Commit Graph

155 Commits (68ffdd6714bb783ceb09d8df2fae645c4c6d4bee)

Author SHA1 Message Date
Tom Hulton-Harrop dd95d2b02e
ensure brute force ray intersection works (#1170)
* ensure brute force ray intersection works in the same space as kd-tree intersection

* add additional tests for ray casts against meshes using brute force approach

* update api and add some additional test cases

* comment tidy-up and other small updates/fixes for ray intersection code

* fix issue with values at the end of a ray
5 years ago
Benjamin Jillich 863aac2cb9
[LYN-3727] Actor Draw Bounds Draw Bounds & [LYN-3725] Actor Draw Skeleton Doesn't Draw Skeleton (#1168)
* [LYN-3727] Actor Draw Bounds Draw Bounds & [LYN-3725] Actor Draw Skeleton Doesn't Draw Skeleton

* Added skeleton, aabb and emfx debug drawing to the actor component.
* Aux geom rendering is flickering as also reported in the Discord channels. Trick with using the scene notification bus did not work as the actor instance is not bound to a given scene as far as I am aware.
5 years ago
Ken Pruiksma 9df995dd26
Temporal anti-aliasing and constrast adaptive sharpening (#1161)
First version of temporal antialiasing and contrast adaptive sharpening for GA. Works well in most cases but still has a few issues that will need additional time. This is only the passes and shaders with no exposure to the editor. TAA and CAS can be turned on by enabling their respective passes in the pipeline.

All of the code has been previously reviewed in smaller PRs into the taa_staging branch:
aws-lumberyard-dev#29
aws-lumberyard-dev#53
aws-lumberyard-dev#73
aws-lumberyard-dev#79
aws-lumberyard-dev#84

Main issues:

- Bloom doesn't play nice with TAA and seems to greatly amplify any flickering
- AuxGeom jitters with the camera, so TAA doesn't currently work well in editor
- Transparencies don't have correct motion vectors. History rectification keeps this from looking too bad, but could still be improved
- There is still more that could be done to inhibit flickering, usually from specular aliasing
- Motion vectors aren't correct on POM unless PDO is turned on, which can result in some blurring during motion.
- SSAO can contribute to flickering in its default half res configuration. Changing this to full res mitigates the problem.

Squashed merge of the following:

* [ATOM-13987] Initial checkin of Taa pass.

* TAA pass setup WIP. (does not work yet due to pass configuration issues).

* Taa WIP - Camera motion vectors fixed and hooked up. TAA does simple reprojection and rejection based on depth.

* Small update to use lerp and add some comments.

* Fix issue with attachments not being set up on bindings at initialization. Fixing issue with half-pixel offsets in TAA shader

* - Motion vector passes now use the same output with mesh motion vectors overwriting camera motion vectors.
- Taa pass now works with multiple pipelines.
- Cleaned up TAA shader a bit.

* Fixes from PR review.

* Adding check for multiple attachments of the same name with different resources in Pass::ImportAttachments().

* Adding camera jitter with configurable position count. Updated TAA to blend in tonemapped space.

* Fixes from PR review. Fixing camera motion vectors for background (infinite distance)

* Updates to taa shader from PR review

* Adding a rcp input color size.

* Fix comment on PassAttachment::Update()

* Updates for PR review.

* Fixing missing const on the FrameAttachment* in Pass's call to FindAttachment()

* Taa WIP - Adding filtering to both the current pixel and history. Adding rectification based on variance clipping. Adding some basic anti-flickering. Removing rejection based on depth.

* Updates from PR code review. Mostly better commenting and naming.

* Adding contrast adaptive sharpening based on AMD FidelityFX CAS to help with the softness added by TAA.

* Changing to using luminance for sharpening instead of just green. Added some comments.

* Moving Taa's NaN check to a better location. Disabling TAA and sharpening in prep for check in.

* Updates from PR feedback.
5 years ago
dmcdiarmid-ly d19d2aff9d
Merge pull request #1110 from aws-lumberyard-dev/Atom/dmcdiar/ATOM-15517
[ATOM-15517] Software Occlusion Culling
5 years ago
Qing Tao dcdd63966e
ATOM-15658 Better option of CreateCommonBuffer requires unique buffer name (#1133)
* ATOM-15658 Better option of CreateCommonBuffer requires unique buffer name
- Change the CreateCommonBuffer function to not require an unique  name by default.
- Remove the code for generating unique buffer names.
- Add buffer name to BufferAsset so it can be used for device object name instead of using asset file name.
- Change RPI::Buffer to use BufferName_AssetUuid as attachment id.
5 years ago
Chris Burel 5d4226df16
Get a mesh's morph targets based on the scene graph hierarchy, instead of mesh name (#1128)
When building a mesh's morph targets, the exporter has to identify the base
mesh in addition to each morph target mesh. Previously this was done by
searching the entire scene graph for nodes
* of type IBlendShapeData
* whose parent's name matches the name of the Atom model

This is problematic for a few reasons. The first is that the Atom model's
name may have been based on the optimized mesh node. When this happens,
the `OptimizedMeshSuffix` that is used in the Scene Graph node's name is
stripped off of the Atom model's name. The result is that the *unoptimized*
mesh is used as the base mesh for the blend shapes, instead of the
optimized blend shape. This of course results in disaster, since the
optimizer reorders the vertices, and the base mesh will not match the
optimized one. The second is that it is not really necessary to do the
search based on the node name at all. All of a mesh's blend shapes are
child nodes of the base IMeshData node. With this change, the base mesh
is located based on the node data pointer, and all of its child
IBlendShapeData nodes are added to the set of blend shapes to process. This
way, the Atom model's name isn't involved in the lookup.
5 years ago
Doug McDiarmid 2449a9322d Changed the occlusion culling plane model to be on the XZ plane and adjusted the corner point computations 5 years ago
Doug McDiarmid 792176d764 Cached occlusion plane corner points and AABB in the feature processor 5 years ago
Doug McDiarmid ef05412063 Merge branch 'main' into Atom/dmcdiar/ATOM-15517 5 years ago
Esteban Papp 5d7aae9bd8
SPEC-2513 Fixes to enable w4459 (#1107)
* fixing w4459

* Fixes for nounity

* putting OLD_APARAM_USER in a common place to avoid duplicated declarations
5 years ago
Tommy Walton d56688e6cd
Adding a file that was missed when merging PR 481 from 1.0->main. Also, updated the comment a bit (#912) 5 years ago
Doug McDiarmid 091d6894cb Fixed non-Windows platform include 5 years ago
Doug McDiarmid 9afd9b0992 Fixed PAL cmake files for non-Windows builds 5 years ago
Doug McDiarmid 99497672f4 Fixed cmake platform files for non-Windows platforms 5 years ago
Doug McDiarmid 113073ca31 Removed unnecessary include 5 years ago
Doug McDiarmid d737fcd3d3 Removed extra newline 5 years ago
Doug McDiarmid 69e2d6bba1 Minor comment update 5 years ago
Doug McDiarmid d63edf9b84 Merge branch 'main' into Atom/dmcdiar/ATOM-15517 5 years ago
Doug McDiarmid 8623484168 Added Masked Occlusion Culling external files 5 years ago
Qing Tao 7631cdc11e
ATOM-15659 Add changing StencilState support to DynamicDrawContext (#1009) 5 years ago
Tom Hulton-Harrop 4a5b7edbfe
Updates to kd-tree ray intersection - ATOM-15673 (#1026)
* updates to kd-tree ray intersection

* update tests for kd-tree

* add one more test for kd-tree intersection

* updates to ModelKdTree following review feedback

* improve api doc comment for RayIntersection in ModelKdTree

* updates following review feedback

* update .clang-format to stack parameters if they do not all fit on one line
5 years ago
Doug McDiarmid 35d7ee5e53 Merge branch 'main' into Atom/dmcdiar/ATOM-15517 5 years ago
Doug McDiarmid 982c30eefd Added a visibility result flag to RPI::Cullable, set to true if the object passed all culling tests. 5 years ago
Doug McDiarmid a9a42a5405 Added AZ_TRAIT_MASKED_OCCLUSION_CULLING_SUPPORTED 5 years ago
Doug McDiarmid 59ab6edaef Added occlusion culling plane visualization 5 years ago
Doug McDiarmid ddbed2f222 Sorting occlusion planes. 5 years ago
Chris Santora e690c0e626
Merge pull request #1046 from aws-lumberyard-dev/Atom/santorac/MaterialLayoutCleanup-ATOM-14002
Updated Material Property Layouts Per Design

- Renamed "Details" group to "Overview".
- Renamed "UV Names" group to "UV Sets".
- Renamed "General" group to "General Settings".
- Renamed "Parallax" group to "Displacement".
- Renamed "Texture Map" properties to just "Texture". In cases where a specific type of texture is mentioned like "roughness texture map" I called this "roughness map" (which is more common according to google).
- Renamed "Heightmap" to "Height map" (which is more common according to google).
- Reordered material property groups according to design review.
  - Base Color
  - Metallic
  - Roughness
  - Specular Reflectance F0
  - Normal
  - Occlusion
  - Emissive
  - Subsurface
  - Clear Coat
  - Displacement
  - Opacity
  - UVs
  - Irradiance
  - General Settings

ATOM-14002 [Material Editor] Revisit user facing organization and layout of material types
5 years ago
dmcdiarmid-ly b20f3bc72f
Merge pull request #946 from aws-lumberyard-dev/Atom/dmcdiar/ATOM-15555
[ATOM-15555] Data-Driven RayTracingPass
5 years ago
Doug McDiarmid 1b235e0b16 Merge branch 'main' into Atom/dmcdiar/ATOM-15517 5 years ago
Chris Santora de4e6957e8 Made a bunch of display name and description updates to core material types.
- Renamed "Details" group to "Overview".
- Renamed "UV Names" group to "UV Sets".
- Renamed "General" group to "General Settings".
- Renamed "Parallax" group to "Displacement".
- Renamed "Texture Map" properties to just "Texture". In cases where a specific type of texture is mentioned like "roughness texture map" I called this "roughness map" (which is more common according to google).
- Renamed "Heightmap" to "Height map" (which is more common according to google).

ATOM-14002 [Material Editor] Revisit user facing organization and layout of material types
5 years ago
Doug McDiarmid c84882869b Changed to a fixed-size occlusion buffer 5 years ago
galibzon 25dc42e298
[ATOM-15600] Fix cpu over usage when loading shader variant assets. (#1014)
This is a temporary fix, in the future ShaderVariantAsyncLoader will use
OnCatalogAssetRemoved()/ OnCatalogAssetAdded().

Signed-off-by: garrieta <garrieta@amazon.com>
5 years ago
Doug McDiarmid c0c9e5e90d Merge branch 'main' into Atom/dmcdiar/ATOM-15555 5 years ago
Chris Santora ed56635c3e Merge remote-tracking branch 'upstream/main' into Atom/santorac/MaterialTypeCleanup 5 years ago
Qing Tao 85222130d4
LYN-4007 Editor crashes when entering the Game Mode with two Box Shape entities with Game View enabled (#974)
The crash was caused by using gpu query across command lists.
5 years ago
Doug McDiarmid 1d3322f881 Merge branch 'main' into Atom/dmcdiar/ATOM-15517 5 years ago
Doug McDiarmid 8223f241b5 Merge branch 'main' into Atom/dmcdiar/ATOM-15555
# Conflicts:
#	Gems/Atom/Feature/Common/Code/Source/Mesh/MeshFeatureProcessor.cpp
#	Gems/Atom/Feature/Common/Code/Source/RayTracing/RayTracingFeatureProcessor.cpp
5 years ago
Chris Santora 755d1b7abc Merge remote-tracking branch 'upstream/main' into Atom/santorac/MaterialTypeCleanup 5 years ago
Chris Santora 7e023c3676 ATOM-15133 "Clean Up EnhancedPBR"
Updated material type files for StandardPBR, EnhancedPBR, and Skin to align with each other as much as possible.
There were minor cases like some property settings were different, properties in different order, comments, and formatting.
There were major cases as well, like EnhancedPBR using clunky built in functors where lua functors would be better, property visibility state wasn't right, properties were missing, etc.

I also added a new HasShaderWithTag function for lua functors. This is used in StandardPBR_ShaderEnable.lua to allow this script to be used for both StandardPBR and EnhancedPBR (EnhancedPBR doesn't have the low end pipeline shaders).
5 years ago
Doug McDiarmid 17e9c17f31 Added Occlusion Culling Planes and RPI Culling support for Masked Occlusion Culling 5 years ago
Nicholas Van Sickle d1863c6c5b
Restore Editor viewport icon rendering (#879)
This introduces an EditorViewportIconDisplayInterface that will eventually be used to outright remove CIconManager, it provides a simple interface for loading 2D image assets and rendering them on-screen. It also introduces AtomBridge::PerViewportDynamicDraw for getting a dynamic draw instance on a per-viewport basis
5 years ago
Mike Balfour 6c17c7bfb3
Add new API to convert absolute source paths to relative paths. (#930)
There are already APIs for getting a relative product path from an absolute source path, or getting a relative source path for an *existing* source file, but there were no APIs for getting a relative source path for a *new* source file.  Prefabs will need this ability to be able to correctly generate a relative source path inside the prefab file before the file has been saved.
The logic for relative source paths is a little bit tricky because the paths are relative to the watch folders, and the watch folders can be nested, with different priorities to explain which should take precedence.  The input paths can also include specifiers like "." and "..", which need to be reconciled before creating the final correct relative path.  The included unit tests test all of the tricky edge cases that I was able to identify.
5 years ago
galibzon 0678dec64e
[ATOM-15618] Shader Build Pipeline: Add UnitTest To Validate Shader C… (#918)
* [ATOM-15618] Shader Build Pipeline: Add UnitTest To Validate Shader Compiler
Argument Processing Introduced With The New Supervariant System

- Added new test suite in
  Gems/Atom/Asset/Shader/Code/Tests/SupervariantCmdArgumentTests.cpp

- Refactored and improved the previously existing classes:
  GlobalBuildOptions, PreprocessorOptions and ShaderCompilerArguments
  to work well with the new ShaderSourceData::SupervariantInfo.

- Moved command line argument processing function out of
ShaderCompilerArguments and into its own utility namespace in
Atom/RHI.Edit/Utils.h

Signed-off-by: garrieta <garrieta@amazon.com>
5 years ago
jiaweig 50085d0487
Merge pull request #823 from aws-lumberyard-dev/Atom/jiaweig/ATOM-15125_UV_Tangent
ATOM-15125 Support Reorder of Tangent Streams
5 years ago
Doug McDiarmid 9f8948556f Merge branch 'main' into Atom/dmcdiar/ATOM-15555 5 years ago
jiaweig f64bd999e0 Move UvStreamTangentBitmask to new files. 5 years ago
Doug McDiarmid c29c1825cb Added RayTracingPass and RayTracingPassData 5 years ago
antonmic 6388277cd1 Fixed ImGui Pass as well as how exposure pass enables itself 5 years ago
jiaweig 13893e77f3 merge main 5 years ago
Chris Santora bffc72794b ATOM-15597 Accessing Material Instance Panel Crashes Editor
There were two issues fixed here. First, I broke the material inspector with my changes at 53188a12da which added support for hiding entire property groups. I'm not sure how this happened because I definitely tested the MaterialComponent's material inspector. Perhaps there was a bad merge or something otherwise got clobbered after testing and before committing. Anyway, this issue was I accidentally delete the code that prepared the list of material properties for functor processing.

The second issue was the MaterialFunctor class needs to return null when metadata can't be found; it was proceeding to dereference an end iterator.

Testing:
Successfully opened the material inspector through the MaterialComponent. Was able to change property flags in the inspector and see other properties change visibility as expected.
5 years ago