Merge branch 'stabilization/2106' of https://github.com/o3de/o3de into carlitosan/thecleansing
This commit is contained in:
@@ -103,6 +103,19 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS)
|
||||
AZ::AssetBundlerBatch
|
||||
)
|
||||
|
||||
ly_add_pytest(
|
||||
NAME AssetPipelineTests.AssetBundler_SandBox
|
||||
TEST_SUITE sandbox
|
||||
PATH ${CMAKE_CURRENT_LIST_DIR}/asset_bundler_batch_tests.py
|
||||
PYTEST_MARKS "SUITE_sandbox" # run only sandbox tests in this file
|
||||
EXCLUDE_TEST_RUN_TARGET_FROM_IDE
|
||||
TEST_SERIAL
|
||||
TIMEOUT 1500
|
||||
RUNTIME_DEPENDENCIES
|
||||
AZ::AssetProcessor
|
||||
AZ::AssetBundlerBatch
|
||||
)
|
||||
|
||||
ly_add_pytest(
|
||||
NAME AssetPipelineTests.AssetBuilder
|
||||
PATH ${CMAKE_CURRENT_LIST_DIR}/asset_builder_tests.py
|
||||
|
||||
+1
@@ -730,6 +730,7 @@ class TestsAssetBundlerBatch_WindowsAndMac(object):
|
||||
|
||||
@pytest.mark.BAT
|
||||
@pytest.mark.assetpipeline
|
||||
@pytest.mark.SUITE_sandbox
|
||||
@pytest.mark.test_case_id("C16877174")
|
||||
@pytest.mark.test_case_id("C16877175")
|
||||
@pytest.mark.test_case_id("C16877178")
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:cf6d56fe4c367d39bd78500dd34332fcad57ad41241768b52781dbdb60ddd972
|
||||
size 347568
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:61efd8df621780af995fc1250918df5e00364ff00f849bef67702cd4b0a152e1
|
||||
size 65537
|
||||
oid sha256:41239f8345fa91fe546442208461ad3cd17c7a7a7047af45018b97363bfea204
|
||||
size 109783
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:e4901093fa6190bf37291b0fb6de23fba1be8ebbd742775a8565a4106722fbb6
|
||||
size 31942
|
||||
oid sha256:ebfc95bd4c0cbcc53d0ef9d314d26e09a347a22dabbf210597f405d9ed8646bf
|
||||
size 7729
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:e4ae97c4f44910121a61686862c8342ce598db4cdf9d46b29e96d3cb9e43bd06
|
||||
size 22158
|
||||
oid sha256:99cb7da9282cfcfa64598455827f27ca6791d45ca0d2c3c2dc090d82468dac03
|
||||
size 4447
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:061e2d0ce8dc852dd298c80f2aed5fee8ea4b87511c00662aa2d00922c0ba3c2
|
||||
size 30162
|
||||
oid sha256:101568e946f1d4cea86d666187bbf71116bbf62e6eaf6d80bc3c5e2e184bdb15
|
||||
size 7938
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:0fb4b4b77620d99dae7473b7bd8affe14630419835bd5719167ed200e657fa4f
|
||||
size 17504
|
||||
oid sha256:cf930ffd4efb0b7b627e05aac6e0f56252ea206623e8b5d097d803aa315cdfb8
|
||||
size 1812
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:8aa9b1194f3244025578225a6a87cbc2dd12c70955ff615c8af640ea7f1334f1
|
||||
size 19619
|
||||
oid sha256:ba5fea53b349e254b4625035a308d5731cb06f6d0adc278874d14db2627962cb
|
||||
size 3424
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:0c25ffb1af8160b3202977de8c32aaa235e22c643ffd8004e4546c96868ef3b9
|
||||
size 18317
|
||||
oid sha256:cf087f357cd439d14651073ac079542c60f0648a30dced2a8d19912124b3f8b6
|
||||
size 2310
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:2db961b8f922a552d8ad374fdb56029efd4049a6cde10399b3d961242c82ce53
|
||||
size 22571
|
||||
oid sha256:421ad4db14c28ed18666158f9ec30747c5b8c757405c1efb32442978911b0c06
|
||||
size 4437
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:f39d897a57d4da0a70ede7c91339660b28e9d8c57b3e7d749807b13baa4b85f3
|
||||
size 28559
|
||||
oid sha256:0d0044ebf7e0a5dd23ed64a1289c705d8f6c3c41a62d65e5a1371058855b8cec
|
||||
size 6546
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:263b75d58328499eef1f8fa2e64c30706f546badcc0c4464a043b231da93cd0d
|
||||
size 34969
|
||||
oid sha256:3b8717c5f2109dfce1bf7b017278059d4915b524a6eb7e83cfb1926e54ed6869
|
||||
size 7383
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:33522ad8a8e826b22dd9ad214f56e63e24bf55c00bd8c845925d848b855dfb48
|
||||
size 19619
|
||||
oid sha256:ba5fea53b349e254b4625035a308d5731cb06f6d0adc278874d14db2627962cb
|
||||
size 3424
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:f405c9f3d908d038aea26049e533b0d10955adfac370c7b3b80209997ea706d0
|
||||
size 24407
|
||||
oid sha256:a32908a839a6cb0ca2a76d6aa60376ba8a14b4428f06c13149ec277514eb5676
|
||||
size 4533
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:d110f6e151799a2327bcdf5ef94d6fc82b114783a8cc973a8915896679ba4a80
|
||||
size 28559
|
||||
oid sha256:0d0044ebf7e0a5dd23ed64a1289c705d8f6c3c41a62d65e5a1371058855b8cec
|
||||
size 6546
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:db8f00568fad4e49b05249aaa7a48c9fbf85c8b7a78489c83dc9b8161778bcef
|
||||
size 22571
|
||||
oid sha256:421ad4db14c28ed18666158f9ec30747c5b8c757405c1efb32442978911b0c06
|
||||
size 4437
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:e4901093fa6190bf37291b0fb6de23fba1be8ebbd742775a8565a4106722fbb6
|
||||
size 31942
|
||||
oid sha256:ebfc95bd4c0cbcc53d0ef9d314d26e09a347a22dabbf210597f405d9ed8646bf
|
||||
size 7729
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:e4ae97c4f44910121a61686862c8342ce598db4cdf9d46b29e96d3cb9e43bd06
|
||||
size 22158
|
||||
oid sha256:99cb7da9282cfcfa64598455827f27ca6791d45ca0d2c3c2dc090d82468dac03
|
||||
size 4447
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:061e2d0ce8dc852dd298c80f2aed5fee8ea4b87511c00662aa2d00922c0ba3c2
|
||||
size 30162
|
||||
oid sha256:101568e946f1d4cea86d666187bbf71116bbf62e6eaf6d80bc3c5e2e184bdb15
|
||||
size 7938
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:0fb4b4b77620d99dae7473b7bd8affe14630419835bd5719167ed200e657fa4f
|
||||
size 17504
|
||||
oid sha256:cf930ffd4efb0b7b627e05aac6e0f56252ea206623e8b5d097d803aa315cdfb8
|
||||
size 1812
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:8aa9b1194f3244025578225a6a87cbc2dd12c70955ff615c8af640ea7f1334f1
|
||||
size 19619
|
||||
oid sha256:ba5fea53b349e254b4625035a308d5731cb06f6d0adc278874d14db2627962cb
|
||||
size 3424
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:0c25ffb1af8160b3202977de8c32aaa235e22c643ffd8004e4546c96868ef3b9
|
||||
size 18317
|
||||
oid sha256:cf087f357cd439d14651073ac079542c60f0648a30dced2a8d19912124b3f8b6
|
||||
size 2310
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:2db961b8f922a552d8ad374fdb56029efd4049a6cde10399b3d961242c82ce53
|
||||
size 22571
|
||||
oid sha256:421ad4db14c28ed18666158f9ec30747c5b8c757405c1efb32442978911b0c06
|
||||
size 4437
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:f39d897a57d4da0a70ede7c91339660b28e9d8c57b3e7d749807b13baa4b85f3
|
||||
size 28559
|
||||
oid sha256:0d0044ebf7e0a5dd23ed64a1289c705d8f6c3c41a62d65e5a1371058855b8cec
|
||||
size 6546
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:263b75d58328499eef1f8fa2e64c30706f546badcc0c4464a043b231da93cd0d
|
||||
size 34969
|
||||
oid sha256:3b8717c5f2109dfce1bf7b017278059d4915b524a6eb7e83cfb1926e54ed6869
|
||||
size 7383
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:33522ad8a8e826b22dd9ad214f56e63e24bf55c00bd8c845925d848b855dfb48
|
||||
size 19619
|
||||
oid sha256:ba5fea53b349e254b4625035a308d5731cb06f6d0adc278874d14db2627962cb
|
||||
size 3424
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:f405c9f3d908d038aea26049e533b0d10955adfac370c7b3b80209997ea706d0
|
||||
size 24407
|
||||
oid sha256:a32908a839a6cb0ca2a76d6aa60376ba8a14b4428f06c13149ec277514eb5676
|
||||
size 4533
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:d110f6e151799a2327bcdf5ef94d6fc82b114783a8cc973a8915896679ba4a80
|
||||
size 28559
|
||||
oid sha256:0d0044ebf7e0a5dd23ed64a1289c705d8f6c3c41a62d65e5a1371058855b8cec
|
||||
size 6546
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:db8f00568fad4e49b05249aaa7a48c9fbf85c8b7a78489c83dc9b8161778bcef
|
||||
size 22571
|
||||
oid sha256:421ad4db14c28ed18666158f9ec30747c5b8c757405c1efb32442978911b0c06
|
||||
size 4437
|
||||
|
||||
+1
-37
@@ -1,41 +1,5 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"extent" : "full-screen",
|
||||
"filename" : "iPhoneLaunchImage1242x2688.png",
|
||||
"idiom" : "iphone",
|
||||
"minimum-system-version" : "12.0",
|
||||
"orientation" : "portrait",
|
||||
"scale" : "3x",
|
||||
"subtype" : "2688h"
|
||||
},
|
||||
{
|
||||
"extent" : "full-screen",
|
||||
"filename" : "iPhoneLaunchImage2688x1242.png",
|
||||
"idiom" : "iphone",
|
||||
"minimum-system-version" : "12.0",
|
||||
"orientation" : "landscape",
|
||||
"scale" : "3x",
|
||||
"subtype" : "2688h"
|
||||
},
|
||||
{
|
||||
"extent" : "full-screen",
|
||||
"filename" : "iPhoneLaunchImage828x1792.png",
|
||||
"idiom" : "iphone",
|
||||
"minimum-system-version" : "12.0",
|
||||
"orientation" : "portrait",
|
||||
"scale" : "2x",
|
||||
"subtype" : "1792h"
|
||||
},
|
||||
{
|
||||
"extent" : "full-screen",
|
||||
"filename" : "iPhoneLaunchImage1792x828.png",
|
||||
"idiom" : "iphone",
|
||||
"minimum-system-version" : "12.0",
|
||||
"orientation" : "landscape",
|
||||
"scale" : "2x",
|
||||
"subtype" : "1792h"
|
||||
},
|
||||
{
|
||||
"extent" : "full-screen",
|
||||
"idiom" : "iphone",
|
||||
@@ -202,4 +166,4 @@
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:31afa7ed44c5d9844c8d6ce08beccac482c3f43590869a3d190d06e2df377ccc
|
||||
size 137472
|
||||
oid sha256:a4018d9df45b4a04d4cf24a40fe01aa7e30e44a9fdd8ad9a41b0d87791786c12
|
||||
size 30442
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:0aac8ef9899442820bec0df8bf6434a46cc787d57c5d6d38a04727b8dc310048
|
||||
size 338281
|
||||
oid sha256:2eea06cb8ad05acefe9664551af5645d52d9763b82473b1fd4a2b2b6f62e96d3
|
||||
size 53550
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:c07495891f15b138ba09f142777b0f43217bf8be05cbb74ba938319f3425980c
|
||||
size 321125
|
||||
oid sha256:90991aca91ab7222fdb85c03947cff38f549a6492551e7447e0c8f55022aae48
|
||||
size 52467
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:d6bf6acb92421a453a36fc143ab6cefda14d631ea5e6dbf95c6e252a445fcbac
|
||||
size 144797
|
||||
oid sha256:6c8439a64d18dbff17dd67f6405bf49f99695e9b22fc2cc541dc72c6e3167307
|
||||
size 30564
|
||||
|
||||
-3
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:fc79117e25cc7533ccf6724453e3f44a01b4eaaecded6fa826abe897456f36ee
|
||||
size 405896
|
||||
-3
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:6c7191be3bdae09dc621012a26b0c1b9c15de1d567cf65ff1079e00f8636a32a
|
||||
size 220720
|
||||
-3
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:dfbd362f9cb5f285c23807a032af98150cf5409c514445122683736a3c65008c
|
||||
size 364976
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:e9ad650fda925b1c076a67d1ef70315fe4f14db888c9fd36ee4eba1d18c1e7d1
|
||||
size 166749
|
||||
oid sha256:f752615184160d7a78f28d9eef354c86e544f11eb1dde9f651d7acd315b3f2e6
|
||||
size 35934
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:16f6e9d7bd15fc528d934c252213de8792812e708b1810191c5f1767f7165852
|
||||
size 142331
|
||||
oid sha256:1a43f1d893e85aa99d335a657ec0f6c13a741db976c033451ab9a2328b8a5970
|
||||
size 35559
|
||||
|
||||
-3
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:b0252b068b232f521ac6eca4a708fad6eaf257d0a66aa03f4f865f6a0b219cfc
|
||||
size 236433
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:7c8433178baebafe984ca23d9325d3c71b5a177fc3b3b869afbb01a583542fbe
|
||||
size 462842
|
||||
+2
-2
@@ -33,7 +33,7 @@
|
||||
{
|
||||
"size" : "128x128",
|
||||
"idiom" : "mac",
|
||||
"filename" : "icon_128 _2x.png",
|
||||
"filename" : "icon_128_2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
@@ -45,7 +45,7 @@
|
||||
{
|
||||
"size" : "256x256",
|
||||
"idiom" : "mac",
|
||||
"filename" : "icon_256 _2x.png",
|
||||
"filename" : "icon_256_2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
|
||||
-3
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:e38257b6917cdf5d73e90e6009f10c8736d62b20c4e785085305075c7e6320e2
|
||||
size 32037
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:9f41a37d2347a617e93bd97adaf6d4c161c471ca3ef7e04b98c65ddda52396dc
|
||||
size 27833
|
||||
oid sha256:f3c651ca45a83d0f68bdaa466826a29b2ca6f674e225d90e68b7dbadc2ba582d
|
||||
size 6620
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:b07984494059bf827bc485cbea06d12e0283811face1a18799495f9ba7ae8af1
|
||||
size 20779
|
||||
oid sha256:f7d5b15add5104d91a03df7d86898f4bc415d095d11c23555b24440497371948
|
||||
size 1061
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:e645142d284de40aafb7a4a858f3df92b6a5ba9b03fa5f1a2d3cb25211597926
|
||||
size 21857
|
||||
oid sha256:148fdae6493d7b7e1bb6cc6aae1861e0469838f54dcb3c15cc157a548c707fec
|
||||
size 1910
|
||||
|
||||
-3
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:07631f41b8dea80713d2463f81a713a9a93798975b6fb50afbeeb13d26c57fa2
|
||||
size 48899
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:e38257b6917cdf5d73e90e6009f10c8736d62b20c4e785085305075c7e6320e2
|
||||
size 32037
|
||||
oid sha256:094620c172320b062f9a1f8cc758ef4bbee11bc0a6049f46ad6b42f9bf613c92
|
||||
size 9679
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:e645142d284de40aafb7a4a858f3df92b6a5ba9b03fa5f1a2d3cb25211597926
|
||||
size 21857
|
||||
oid sha256:148fdae6493d7b7e1bb6cc6aae1861e0469838f54dcb3c15cc157a548c707fec
|
||||
size 1910
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:ad83faf98b49f4e37112baedeae726f4f8d71bcdd1961d9cdad31f043f8ca666
|
||||
size 24003
|
||||
oid sha256:749bcd29d73e5ef2d1ef8b2d878626d0bca09c6b0d5f1c9dc6cefe7b9082c8cc
|
||||
size 3758
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:68529a6c11d5ffa7ecd9d5bbb11ceea28e6852bd45946b525af09602c9a1e1bf
|
||||
size 48899
|
||||
oid sha256:934502e242ff7a2e34e21eed1424b5e0953e701761d158520b3297944132328e
|
||||
size 18716
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:8a70003840b418848b2ce6c18ed7cbbfcd6fcf76598a6601dca8b98d9b6c1a2f
|
||||
size 114706
|
||||
oid sha256:5719043940db268dccd2e20bd9d6aa13131890d43edf002a173714ae33890422
|
||||
size 29510
|
||||
|
||||
@@ -1,16 +1,12 @@
|
||||
{
|
||||
"GemFormatVersion": 4,
|
||||
"Uuid": "afc25e1593194d6283d9ff744ab6d5a1",
|
||||
"Name": "AutomatedTesting",
|
||||
"DisplayName": "AutomatedTesting",
|
||||
"Version": "0.1.0",
|
||||
"Summary": "A short description of my Gem.",
|
||||
"Tags": ["Game"],
|
||||
"IconPath": "preview.png",
|
||||
"IsGameGem": true,
|
||||
"Modules": [
|
||||
{
|
||||
"Type": "GameModule"
|
||||
}
|
||||
]
|
||||
"gem_name": "AutomatedTesting",
|
||||
"display_name": "AutomatedTesting",
|
||||
"license": "Apache-2.0 Or MIT",
|
||||
"origin": "Amazon Web Services, Inc.",
|
||||
"type": "Code",
|
||||
"summary": "Project Gem for customizing the AutomatedTesting project functionality.",
|
||||
"canonical_tags": ["Gem"],
|
||||
"user_tags": [],
|
||||
"icon_path": "preview.png",
|
||||
"requirements": ""
|
||||
}
|
||||
|
||||
@@ -219,6 +219,7 @@ public:
|
||||
void SetFullScreenState(bool fullScreenState) override;
|
||||
bool CanToggleFullScreenState() const override;
|
||||
void ToggleFullScreenState() override;
|
||||
float GetDpiScaleFactor() const override { return 1.0f; };
|
||||
|
||||
void ConnectViewportInteractionRequestBus();
|
||||
void DisconnectViewportInteractionRequestBus();
|
||||
|
||||
@@ -21,7 +21,6 @@ set(FILES
|
||||
res/TreeView.bmp
|
||||
res/VisualLog_PlayerButtons.bmp
|
||||
res/ab_toolbar.bmp
|
||||
res/about_dark.bmp
|
||||
res/anim.bmp
|
||||
res/animatio.bmp
|
||||
res/animations_tree_soundevent.bmp
|
||||
@@ -137,7 +136,6 @@ set(FILES
|
||||
res/litebulb.bmp
|
||||
res/lock_sel.bmp
|
||||
res/locksele.bmp
|
||||
res/logo.bmp
|
||||
res/mainfram.bmp
|
||||
res/mann_tagdef_toolbar.bmp
|
||||
res/mann_tagdef_tree.bmp
|
||||
@@ -184,8 +182,6 @@ set(FILES
|
||||
res/rename.ico
|
||||
res/replace.ico
|
||||
res/ribbon_system_button.png
|
||||
res/sandbox_dark.bmp
|
||||
res/sb_welcome_dark.bmp
|
||||
res/selectobj.bmp
|
||||
res/seq_1_colour_keys.bmp
|
||||
res/seq_2_colour_keys.bmp
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:887d184cf49cf78c62a1fe53eac3cb8e7b071bb67e09b801a4893445ac4c800f
|
||||
size 542456
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:8b65af2765042354ae4110dc7bcbde905e4a55a4995f66b626d15ec6c0fa18c1
|
||||
size 96056
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:79412e83b32bb6712d9701f78465878a2057a590698a4dc8d8c7aa11de2623ef
|
||||
size 4227
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:887d184cf49cf78c62a1fe53eac3cb8e7b071bb67e09b801a4893445ac4c800f
|
||||
size 542456
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:704faeb96d930d3e6992a1449908aa6d7860b648e2feb38da8bf37cd7268a694
|
||||
size 184856
|
||||
+1
-1
@@ -1155,7 +1155,7 @@ namespace Benchmark
|
||||
class StorageDriveWindowsFixture : public benchmark::Fixture
|
||||
{
|
||||
public:
|
||||
constexpr static char* TestFileName = "StreamerBenchmark.bin";
|
||||
constexpr static const char* TestFileName = "StreamerBenchmark.bin";
|
||||
constexpr static size_t FileSize = 64_mib;
|
||||
|
||||
void SetupStreamer(bool enableFileSharing)
|
||||
|
||||
@@ -116,6 +116,11 @@ namespace AzFramework
|
||||
SetFullScreenState(!GetFullScreenState());
|
||||
}
|
||||
|
||||
float NativeWindow::GetDpiScaleFactor() const
|
||||
{
|
||||
return m_pimpl->GetDpiScaleFactor();
|
||||
}
|
||||
|
||||
/*static*/ bool NativeWindow::GetFullScreenStateOfDefaultWindow()
|
||||
{
|
||||
NativeWindowHandle defaultWindowHandle = nullptr;
|
||||
@@ -228,4 +233,10 @@ namespace AzFramework
|
||||
return false;
|
||||
}
|
||||
|
||||
float NativeWindow::Implementation::GetDpiScaleFactor() const
|
||||
{
|
||||
// For platforms that aren't DPI-aware, we simply return a 1.0 ratio for no scaling
|
||||
return 1.0f;
|
||||
}
|
||||
|
||||
} // namespace AzFramework
|
||||
|
||||
@@ -128,6 +128,7 @@ namespace AzFramework
|
||||
void SetFullScreenState(bool fullScreenState) override;
|
||||
bool CanToggleFullScreenState() const override;
|
||||
void ToggleFullScreenState() override;
|
||||
float GetDpiScaleFactor() const override;
|
||||
|
||||
//! Get the full screen state of the default window.
|
||||
//! \return True if the default window is currently in full screen, false otherwise.
|
||||
@@ -169,6 +170,7 @@ namespace AzFramework
|
||||
virtual bool GetFullScreenState() const;
|
||||
virtual void SetFullScreenState(bool fullScreenState);
|
||||
virtual bool CanToggleFullScreenState() const;
|
||||
virtual float GetDpiScaleFactor() const;
|
||||
|
||||
protected:
|
||||
uint32_t m_width = 0;
|
||||
|
||||
@@ -68,6 +68,11 @@ namespace AzFramework
|
||||
|
||||
//! Toggle the full screen state of the window.
|
||||
virtual void ToggleFullScreenState() = 0;
|
||||
|
||||
//! Returns a scalar multiplier representing how many dots-per-inch this window has, compared
|
||||
//! to a "standard" value of 96, the default for Windows in a DPI unaware setting. This can
|
||||
//! be used to scale user interface elements to ensure legibility on high density displays.
|
||||
virtual float GetDpiScaleFactor() const = 0;
|
||||
};
|
||||
using WindowRequestBus = AZ::EBus<WindowRequests>;
|
||||
|
||||
@@ -87,6 +92,9 @@ namespace AzFramework
|
||||
//! This is called once when the window is Activated and also called if the user resizes the window.
|
||||
virtual void OnWindowResized(uint32_t width, uint32_t height) { AZ_UNUSED(width); AZ_UNUSED(height); };
|
||||
|
||||
//! This is called if the window's underyling DPI scaling factor changes.
|
||||
virtual void OnDpiScaleFactorChanged(float dpiScaleFactor) { AZ_UNUSED(dpiScaleFactor); }
|
||||
|
||||
//! This is called when the window is deactivated from code or if the user closes the window.
|
||||
virtual void OnWindowClosed() {};
|
||||
};
|
||||
|
||||
+32
-1
@@ -8,6 +8,7 @@
|
||||
#include <AzFramework/Input/Buses/Notifications/RawInputNotificationBus_Windows.h>
|
||||
#include <AzFramework/Windowing/NativeWindow.h>
|
||||
|
||||
#include <AzCore/Module/DynamicModuleHandle.h>
|
||||
#include <AzCore/PlatformIncl.h>
|
||||
|
||||
namespace AzFramework
|
||||
@@ -17,7 +18,7 @@ namespace AzFramework
|
||||
{
|
||||
public:
|
||||
AZ_CLASS_ALLOCATOR(NativeWindowImpl_Win32, AZ::SystemAllocator, 0);
|
||||
NativeWindowImpl_Win32() = default;
|
||||
NativeWindowImpl_Win32();
|
||||
~NativeWindowImpl_Win32() override;
|
||||
|
||||
// NativeWindow::Implementation overrides...
|
||||
@@ -33,6 +34,7 @@ namespace AzFramework
|
||||
bool GetFullScreenState() const override;
|
||||
void SetFullScreenState(bool fullScreenState) override;
|
||||
bool CanToggleFullScreenState() const override { return true; }
|
||||
float GetDpiScaleFactor() const override;
|
||||
|
||||
private:
|
||||
static DWORD ConvertToWin32WindowStyleMask(const WindowStyleMasks& styleMasks);
|
||||
@@ -49,6 +51,9 @@ namespace AzFramework
|
||||
RECT m_windowRectToRestoreOnFullScreenExit; //!< The position and size of the window to restore when exiting full screen.
|
||||
UINT m_windowStyleToRestoreOnFullScreenExit; //!< The style(s) of the window to restore when exiting full screen.
|
||||
bool m_isInBorderlessWindowFullScreenState = false; //!< Was a borderless window used to enter full screen state?
|
||||
|
||||
using GetDpiForWindowType = UINT(HWND hwnd);
|
||||
GetDpiForWindowType* m_getDpiFunction = nullptr;
|
||||
};
|
||||
|
||||
const char* NativeWindowImpl_Win32::s_defaultClassName = "O3DEWin32Class";
|
||||
@@ -58,6 +63,15 @@ namespace AzFramework
|
||||
return aznew NativeWindowImpl_Win32();
|
||||
}
|
||||
|
||||
NativeWindowImpl_Win32::NativeWindowImpl_Win32()
|
||||
{
|
||||
// Attempt to load GetDpiForWindow from user32 at runtime, available on Windows 10+ versions >= 1607
|
||||
if (auto user32module = AZ::DynamicModuleHandle::Create("user32"); user32module->Load(false))
|
||||
{
|
||||
m_getDpiFunction = user32module->GetFunction<GetDpiForWindowType*>("GetDpiForWindow");
|
||||
}
|
||||
}
|
||||
|
||||
NativeWindowImpl_Win32::~NativeWindowImpl_Win32()
|
||||
{
|
||||
DestroyWindow(m_win32Handle);
|
||||
@@ -237,6 +251,12 @@ namespace AzFramework
|
||||
// Send all other WM_SYSKEYDOWN messages to the default WndProc.
|
||||
break;
|
||||
}
|
||||
case WM_DPICHANGED:
|
||||
{
|
||||
const float newScaleFactor = nativeWindowImpl->GetDpiScaleFactor();
|
||||
WindowNotificationBus::Event(nativeWindowImpl->GetWindowHandle(), &WindowNotificationBus::Events::OnDpiScaleFactorChanged, newScaleFactor);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
return DefWindowProc(hWnd, message, wParam, lParam);
|
||||
break;
|
||||
@@ -330,6 +350,17 @@ namespace AzFramework
|
||||
}
|
||||
}
|
||||
|
||||
float NativeWindowImpl_Win32::GetDpiScaleFactor() const
|
||||
{
|
||||
constexpr UINT defaultDotsPerInch = 96;
|
||||
UINT dotsPerInch = defaultDotsPerInch;
|
||||
if (m_getDpiFunction)
|
||||
{
|
||||
dotsPerInch = m_getDpiFunction(m_win32Handle);
|
||||
}
|
||||
return aznumeric_cast<float>(dotsPerInch) / aznumeric_cast<float>(defaultDotsPerInch);
|
||||
}
|
||||
|
||||
void NativeWindowImpl_Win32::EnterBorderlessWindowFullScreen()
|
||||
{
|
||||
if (m_isInBorderlessWindowFullScreenState)
|
||||
|
||||
@@ -1289,6 +1289,10 @@ namespace AzQtComponents
|
||||
}
|
||||
break;
|
||||
|
||||
case QStyle::SP_MessageBoxInformation:
|
||||
return QIcon(QString::fromUtf8(":/stylesheet/img/UI20/Info.svg"));
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -123,6 +123,7 @@ QPlainTextEdit:focus
|
||||
@import "LineEdit.qss";
|
||||
@import "Menu.qss";
|
||||
@import "MenuBar.qss";
|
||||
@import "MessageBox.qss";
|
||||
@import "ProgressBar.qss";
|
||||
@import "PushButton.qss";
|
||||
@import "QDockWidget.qss";
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
|
||||
/*
|
||||
* Copyright (c) Contributors to the Open 3D Engine Project
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
*
|
||||
*/
|
||||
|
||||
/* correct the padding around the two main labels to give space at the borders */
|
||||
QMessageBox QLabel#qt_msgbox_label
|
||||
{
|
||||
padding-top: 20px;
|
||||
padding-right: 20px;
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
|
||||
QMessageBox QLabel#qt_msgboxex_icon_label
|
||||
{
|
||||
padding-left: 20px;
|
||||
padding-top: 20px;
|
||||
}
|
||||
@@ -354,17 +354,17 @@
|
||||
<file>img/UI20/toolbar/Grid.svg</file>
|
||||
<file>img/UI20/toolbar/Lighting.svg</file>
|
||||
<file>img/UI20/toolbar/Load.svg</file>
|
||||
<file>img/UI20/toolbar/Local.svg</file>
|
||||
<file>img/UI20/toolbar/Local.svg</file>
|
||||
<file>img/UI20/toolbar/Locked.svg</file>
|
||||
<file>img/UI20/toolbar/Locked_Status.svg</file>
|
||||
<file>img/UI20/toolbar/LUA.svg</file>
|
||||
<file>img/UI20/toolbar/LUA.svg</file>
|
||||
<file>img/UI20/toolbar/Material.svg</file>
|
||||
<file>img/UI20/toolbar/Measure.svg</file>
|
||||
<file>img/UI20/toolbar/Move.svg</file>
|
||||
<file>img/UI20/toolbar/Object_follow_terrain.svg</file>
|
||||
<file>img/UI20/toolbar/Object_height.svg</file>
|
||||
<file>img/UI20/toolbar/Object_list.svg</file>
|
||||
<file>img/UI20/toolbar/Parent.svg</file>
|
||||
<file>img/UI20/toolbar/Parent.svg</file>
|
||||
<file>img/UI20/toolbar/particle.svg</file>
|
||||
<file>img/UI20/toolbar/Play.svg</file>
|
||||
<file>img/UI20/toolbar/Redo.svg</file>
|
||||
@@ -383,7 +383,7 @@
|
||||
<file>img/UI20/toolbar/undo.svg</file>
|
||||
<file>img/UI20/toolbar/Unlocked.svg</file>
|
||||
<file>img/UI20/toolbar/Vertex_snapping.svg</file>
|
||||
<file>img/UI20/toolbar/World.svg</file>
|
||||
<file>img/UI20/toolbar/World.svg</file>
|
||||
<file>img/UI20/toolbar/X_axis.svg</file>
|
||||
<file>img/UI20/toolbar/Y_axis.svg</file>
|
||||
<file>img/UI20/toolbar/Z_axis.svg</file>
|
||||
@@ -457,6 +457,7 @@
|
||||
<file>Widgets/ComboBoxConfig.ini</file>
|
||||
<file>Widgets/Menu.qss</file>
|
||||
<file>Widgets/MenuBar.qss</file>
|
||||
<file>Widgets/MessageBox.qss</file>
|
||||
<file>Widgets/ProgressBarConfig.ini</file>
|
||||
<file>Widgets/ProgressBar.qss</file>
|
||||
<file>Widgets/PushButton.qss</file>
|
||||
|
||||
+6
@@ -151,6 +151,12 @@ namespace LegacyFramework
|
||||
specializations.Append("tools");
|
||||
}
|
||||
|
||||
void Application::CreateReflectionManager()
|
||||
{
|
||||
AZ::ComponentApplication::CreateReflectionManager();
|
||||
GetSerializeContext()->CreateEditContext();
|
||||
}
|
||||
|
||||
int Application::Run(const ApplicationDesc& desc)
|
||||
{
|
||||
if (!AZ::AllocatorInstance<AZ::OSAllocator>::IsReady())
|
||||
|
||||
+2
@@ -56,6 +56,8 @@ namespace LegacyFramework
|
||||
virtual int Run(const ApplicationDesc& desc);
|
||||
Application();
|
||||
|
||||
void CreateReflectionManager() override;
|
||||
|
||||
protected:
|
||||
|
||||
// ------------------------------------------------------------------
|
||||
|
||||
@@ -122,6 +122,8 @@ foreach(project_name project_path IN ZIP_LISTS LY_PROJECTS_TARGET_NAME LY_PROJEC
|
||||
FOLDER ${project_name}
|
||||
)
|
||||
|
||||
# After ensuring that we correctly support DPI scaling, this should be switched to "PerMonitor"
|
||||
set_property(TARGET ${project_name}.GameLauncher APPEND PROPERTY VS_DPI_AWARE "OFF")
|
||||
if(LY_DEFAULT_PROJECT_PATH)
|
||||
set_property(TARGET ${project_name}.GameLauncher APPEND PROPERTY VS_DEBUGGER_COMMAND_ARGUMENTS "--project-path=\"${LY_DEFAULT_PROJECT_PATH}\"")
|
||||
endif()
|
||||
|
||||
@@ -648,10 +648,10 @@ namespace O3DE::ProjectManager
|
||||
gemInfo.m_name = Py_To_String(data["gem_name"]);
|
||||
|
||||
// optional
|
||||
gemInfo.m_displayName = Py_To_String_Optional(data, "DisplayName", gemInfo.m_name);
|
||||
gemInfo.m_summary = Py_To_String_Optional(data, "Summary", "");
|
||||
gemInfo.m_version = Py_To_String_Optional(data, "Version", "");
|
||||
gemInfo.m_requirement = Py_To_String_Optional(data, "Requirements", "");
|
||||
gemInfo.m_displayName = Py_To_String_Optional(data, "display_name", gemInfo.m_name);
|
||||
gemInfo.m_summary = Py_To_String_Optional(data, "summary", "");
|
||||
gemInfo.m_version = "";
|
||||
gemInfo.m_requirement = Py_To_String_Optional(data, "requirements", "");
|
||||
gemInfo.m_creator = Py_To_String_Optional(data, "origin", "");
|
||||
|
||||
if (gemInfo.m_creator.contains("Open 3D Engine"))
|
||||
@@ -659,13 +659,27 @@ namespace O3DE::ProjectManager
|
||||
gemInfo.m_gemOrigin = GemInfo::GemOrigin::Open3DEEngine;
|
||||
}
|
||||
|
||||
if (data.contains("Tags"))
|
||||
if (data.contains("user_tags"))
|
||||
{
|
||||
for (auto tag : data["Tags"])
|
||||
for (auto tag : data["user_tags"])
|
||||
{
|
||||
gemInfo.m_features.push_back(Py_To_String(tag));
|
||||
}
|
||||
}
|
||||
|
||||
QString gemType = Py_To_String_Optional(data, "type", "");
|
||||
if (gemType == "Asset")
|
||||
{
|
||||
gemInfo.m_types |= GemInfo::Type::Asset;
|
||||
}
|
||||
if (gemType == "Code")
|
||||
{
|
||||
gemInfo.m_types |= GemInfo::Type::Code;
|
||||
}
|
||||
if (gemType == "Tool")
|
||||
{
|
||||
gemInfo.m_types |= GemInfo::Type::Tool;
|
||||
}
|
||||
}
|
||||
catch ([[maybe_unused]] const std::exception& e)
|
||||
{
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"gem_name": "AWSClientAuth",
|
||||
"GemFormatVersion": 3,
|
||||
"Uuid": "c74f2756f5874c0d8d29646dfc9cb0ad",
|
||||
"Name": "AWSClientAuth",
|
||||
"DisplayName": "AWS Client Auth",
|
||||
"Version": "0.1.0",
|
||||
"LinkType": "Dynamic",
|
||||
"Summary": "AWS Client Auth provides client authentication and AWS authorization solution",
|
||||
"Tags": ["AWS", "Amazon Cognito", "Authentication", "Authorization"],
|
||||
"IconPath": "preview.png"
|
||||
"display_name": "AWS Client Authorization",
|
||||
"license": "Apache-2.0 Or MIT",
|
||||
"origin": "Amazon Web Services, Inc.",
|
||||
"type": "Code",
|
||||
"summary": "AWS Client Auth provides client authentication and AWS authorization solution.",
|
||||
"canonical_tags": ["Gem"],
|
||||
"user_tags": ["AWS", "Network", "SDK"],
|
||||
"icon_path": "preview.png",
|
||||
"requirements": ""
|
||||
}
|
||||
|
||||
+9
-15
@@ -1,18 +1,12 @@
|
||||
{
|
||||
"gem_name": "AWSCore",
|
||||
"GemFormatVersion": 4,
|
||||
"Uuid": "c3710872891c4401b0cbdabfca066cb5",
|
||||
"Name": "AWSCore",
|
||||
"DisplayName": "AWS Core",
|
||||
"Version": "0.1.0",
|
||||
"LinkType": "Dynamic",
|
||||
"Summary": "This Gem is automatically enabled when selecting any of the AWS Feature Gems. It provides basic shared functionalities such as AWS SDK initialization and client configuration.",
|
||||
"Tags": [
|
||||
"AWS",
|
||||
"API",
|
||||
"AWSCore",
|
||||
"Cloud",
|
||||
"Connected"
|
||||
],
|
||||
"IconPath": "preview.png"
|
||||
"display_name": "AWS Core",
|
||||
"license": "Apache-2.0 Or MIT",
|
||||
"origin": "Amazon Web Services, Inc.",
|
||||
"type": "Code",
|
||||
"summary": "The AWS Core Gem provides basic shared AWS functionality such as AWS SDK initialization and client configuration, and is automatically added when selecting any AWS feature Gem.",
|
||||
"canonical_tags": ["Gem"],
|
||||
"user_tags": ["AWS", "Network", "SDK"],
|
||||
"icon_path": "preview.png",
|
||||
"requirements": ""
|
||||
}
|
||||
|
||||
@@ -1,16 +1,12 @@
|
||||
{
|
||||
"gem_name": "AWSMetrics",
|
||||
"GemFormatVersion": 4,
|
||||
"Uuid": "cc6fc7a18fc047039a369a26100fcbbe",
|
||||
"Name": "AWSMetrics",
|
||||
"DisplayName": "AWS Metrics",
|
||||
"Version": "0.1.0",
|
||||
"LinkType": "Dynamic",
|
||||
"Summary": "AWS Metrics provides metrics submission and analytics solution.",
|
||||
"Tags": [
|
||||
"AWS",
|
||||
"AWSMetrics",
|
||||
"Cloud"
|
||||
],
|
||||
"IconPath": "preview.png"
|
||||
"display_name": "AWS Metrics",
|
||||
"license": "Apache-2.0 Or MIT",
|
||||
"origin": "Amazon Web Services, Inc.",
|
||||
"type": "Code",
|
||||
"summary": "The AWS Metrics Gem provides a solution for AWS metrics submission and analytics.",
|
||||
"canonical_tags": ["Gem"],
|
||||
"user_tags": ["AWS", "Network", "SDK"],
|
||||
"icon_path": "preview.png",
|
||||
"requirements": ""
|
||||
}
|
||||
|
||||
@@ -1,16 +1,12 @@
|
||||
{
|
||||
"gem_name": "Achievements",
|
||||
"GemFormatVersion": 4,
|
||||
"Uuid": "6f8d953dd4fc4bb6ad34c9118a7b789f",
|
||||
"Name": "Achievements",
|
||||
"DisplayName": "Achievements",
|
||||
"Version": "0.1.0",
|
||||
"Summary": "Platform agnostic interface for retrieving achievement details and unlocking achievements.",
|
||||
"Tags": ["Achievement", "Achievements", "Trophy", "Trophies"],
|
||||
"IconPath": "preview.png",
|
||||
"Modules": [
|
||||
{
|
||||
"Type": "GameModule"
|
||||
}
|
||||
]
|
||||
"display_name": "Achievements",
|
||||
"license": "Apache-2.0 Or MIT",
|
||||
"origin": "Open 3D Engine - o3de.org",
|
||||
"type": "Code",
|
||||
"summary": "The Achievements Gem provides a target platform agnostic interface for retrieving achievement details and unlocking achievements.",
|
||||
"canonical_tags": ["Gem"],
|
||||
"user_tags": ["Gameplay", "Achievements"],
|
||||
"icon_path": "preview.png",
|
||||
"requirements": ""
|
||||
}
|
||||
|
||||
@@ -1,25 +1,12 @@
|
||||
{
|
||||
"gem_name": "AssetMemoryAnalyzer",
|
||||
"GemFormatVersion": 4,
|
||||
"Uuid": "35414634480a4d4c8412c60fe62f4c81",
|
||||
"Name": "AssetMemoryAnalyzer",
|
||||
"DisplayName": "AssetMemoryAnalyzer",
|
||||
"Version": "0.1.0",
|
||||
"Summary": "Provides debug visualization of the AssetMemoryDriller to show how individual assets are consuming memory.",
|
||||
"Tags": ["debug"],
|
||||
"IconPath": "preview.png",
|
||||
"Modules": [
|
||||
{
|
||||
"Type": "GameModule"
|
||||
}
|
||||
],
|
||||
"Dependencies": [
|
||||
{
|
||||
"Uuid": "bab8807a1bc646b3909f3cc200ffeedf",
|
||||
"VersionConstraints": [
|
||||
"~>0.1"
|
||||
],
|
||||
"_comment": "ImGui GEM"
|
||||
}
|
||||
]
|
||||
"display_name": "Asset Memory Analyzer",
|
||||
"license": "Apache-2.0 Or MIT",
|
||||
"origin": "Open 3D Engine - o3de.org",
|
||||
"type": "Code",
|
||||
"summary": "The Asset Memory Analyzer Gem provides tools to profile asset memory usage in Open 3D Engine through ImGUI (Immediate Mode Graphical User Interface).",
|
||||
"canonical_tags": ["Gem"],
|
||||
"user_tags": ["Debug", "Utillity", "Tools"],
|
||||
"icon_path": "preview.png",
|
||||
"requirements": ""
|
||||
}
|
||||
|
||||
@@ -1,16 +1,12 @@
|
||||
{
|
||||
"gem_name": "AssetValidation",
|
||||
"GemFormatVersion": 4,
|
||||
"Uuid": "5a5c3c10b91d4b4ea8baef474c5b5d49",
|
||||
"Name": "AssetValidation",
|
||||
"DisplayName": "AssetValidation",
|
||||
"Version": "0.1.0",
|
||||
"Summary": "Tools for managing your assets and their dependencies during development",
|
||||
"Tags": ["Untagged"],
|
||||
"IconPath": "preview.png",
|
||||
"Modules": [
|
||||
{
|
||||
"Type": "GameModule"
|
||||
}
|
||||
]
|
||||
"display_name": "Asset Validation",
|
||||
"license": "Apache-2.0 Or MIT",
|
||||
"origin": "Open 3D Engine - o3de.org",
|
||||
"type": "Code",
|
||||
"summary": "The Asset Validation Gem provides seed-related commands to ensure assets have valid seeds for asset bundling.",
|
||||
"canonical_tags": ["Gem"],
|
||||
"user_tags": ["Assets", "Utility", "Scripting"],
|
||||
"icon_path": "preview.png",
|
||||
"requirements": ""
|
||||
}
|
||||
|
||||
@@ -1,10 +1,14 @@
|
||||
{
|
||||
"gem_name": "ImageProcessingAtom",
|
||||
"display_name": "Atom Image Processing",
|
||||
"license": "Apache-2.0 Or MIT",
|
||||
"origin": "Open 3D Engine - o3de.org",
|
||||
"type": "Code",
|
||||
"summary": "",
|
||||
"canonical_tags": [
|
||||
"Gem"
|
||||
],
|
||||
"user_tags": [
|
||||
]
|
||||
],
|
||||
"requirements": ""
|
||||
}
|
||||
|
||||
@@ -1,10 +1,14 @@
|
||||
{
|
||||
"gem_name": "AtomShader",
|
||||
"display_name": "Atom Shader Builder",
|
||||
"license": "Apache-2.0 Or MIT",
|
||||
"origin": "Open 3D Engine - o3de.org",
|
||||
"type": "Code",
|
||||
"summary": "",
|
||||
"canonical_tags": [
|
||||
"Gem"
|
||||
],
|
||||
"user_tags": [
|
||||
]
|
||||
],
|
||||
"requirements": ""
|
||||
}
|
||||
|
||||
@@ -1,10 +1,14 @@
|
||||
{
|
||||
"gem_name": "Atom_Bootstrap",
|
||||
"display_name": "Atom Bootstrap",
|
||||
"license": "Apache-2.0 Or MIT",
|
||||
"origin": "Open 3D Engine - o3de.org",
|
||||
"type": "Code",
|
||||
"summary": "",
|
||||
"canonical_tags": [
|
||||
"Gem"
|
||||
],
|
||||
"user_tags": [
|
||||
]
|
||||
],
|
||||
"requirements": ""
|
||||
}
|
||||
|
||||
@@ -1,10 +1,14 @@
|
||||
{
|
||||
"gem_name": "Atom_Component_DebugCamera",
|
||||
"display_name": "Atom Debug Camera Component",
|
||||
"license": "Apache-2.0 Or MIT",
|
||||
"origin": "Open 3D Engine - o3de.org",
|
||||
"type": "Code",
|
||||
"summary": "",
|
||||
"canonical_tags": [
|
||||
"Gem"
|
||||
],
|
||||
"user_tags": [
|
||||
]
|
||||
],
|
||||
"requirements": ""
|
||||
}
|
||||
|
||||
@@ -80,14 +80,48 @@ float3x3 BuildViewAlignedOrthonormalBasis(in float3 normal, in float3 dirToView)
|
||||
// xy plane in positive z space.
|
||||
float IntegrateEdge(float3 v1, float3 v2)
|
||||
{
|
||||
// This alternate version may work better for platforms where acos() precision is low.
|
||||
/*
|
||||
float x = dot(v1, v2);
|
||||
float y = abs(x);
|
||||
|
||||
float a = 5.42031 + (3.12829 + 0.0902326 * y) * y;
|
||||
float b = 3.45068 + (4.18814 + y) * y;
|
||||
float theta_sinTheta = a / b;
|
||||
|
||||
if (x < 0.0)
|
||||
{
|
||||
theta_sinTheta = PI * rsqrt(saturate(1.0 - x * x)) - theta_sinTheta;
|
||||
}
|
||||
|
||||
float3 u = cross(v1, v2);
|
||||
return theta_sinTheta * u.z;
|
||||
*/
|
||||
|
||||
float cosTheta = dot(v1, v2);
|
||||
cosTheta = clamp(cosTheta, -0.9999, 0.9999);
|
||||
float theta = acos(cosTheta);
|
||||
|
||||
// calculate 1.0 / sin(theta)
|
||||
float invSinTheta = rsqrt(1.0 - cosTheta * cosTheta);
|
||||
float invSinTheta = rsqrt(saturate(1.0 - cosTheta * cosTheta));
|
||||
|
||||
float theta = acos(cosTheta);
|
||||
return cross(v1, v2).z * theta * invSinTheta;
|
||||
return cross(v1, v2).z * ((theta > 0.001) ? theta * invSinTheta : 1.0);
|
||||
}
|
||||
|
||||
// Cheaper version of above which is good enough for diffuse
|
||||
float IntegrateEdgeDiffuse(float3 v1, float3 v2)
|
||||
{
|
||||
float cosTheta = dot(v1, v2);
|
||||
float theta_sinTheta = 0.0;
|
||||
if (cosTheta > 0.0)
|
||||
{
|
||||
float absCosTheta = abs(cosTheta);
|
||||
theta_sinTheta = 1.5708 + (-0.879406 + 0.308609 * absCosTheta) * absCosTheta;
|
||||
}
|
||||
else
|
||||
{
|
||||
theta_sinTheta = PI * rsqrt(1.0 - cosTheta * cosTheta) - theta_sinTheta;
|
||||
}
|
||||
return theta_sinTheta * cross(v1, v2).z;
|
||||
}
|
||||
|
||||
// Returns the unnormalized z plane intersection point between pointAboveHorizon and pointBelowHorizon.
|
||||
@@ -189,42 +223,90 @@ void ClipQuadToHorizon(inout float3 p[5], out int vertexCount)
|
||||
}
|
||||
}
|
||||
|
||||
// Takes 4 points (p) from a quad plus a 5th dummy point, rotates them into the space of the normal, then transforms
|
||||
// the points by the LTC matrix provided. The points are then clipped to the normal's hemisphere. The number of points
|
||||
// after the clip is returned in vertexCount. It's possible for the resulting clipped quad to be a triangle (when 3
|
||||
// points are below the horizon), or a pentagon (when one point is below the horizon), or be a regular 4 point quad.
|
||||
void LtcClipAndNormalizeQuad(in float3 normal, in float3 dirToView, float3x3 ltcMat, inout float3 p[5], out int vertexCount)
|
||||
// Applies the LTC matrix to the clipped points of a quad.
|
||||
void ApplyLtcMatrixToQuad(in float3x3 ltcMat, inout float3 p[5], in int vertexCount)
|
||||
{
|
||||
// Rotate ltc matrix
|
||||
ltcMat = mul(ltcMat, BuildViewAlignedOrthonormalBasis(normal, dirToView));
|
||||
|
||||
// Transform points into ltc space
|
||||
p[0] = mul(ltcMat, p[0].xyz);
|
||||
p[1] = mul(ltcMat, p[1].xyz);
|
||||
p[2] = mul(ltcMat, p[2].xyz);
|
||||
p[3] = mul(ltcMat, p[3].xyz);
|
||||
p[0] = mul(ltcMat, p[0]);
|
||||
p[1] = mul(ltcMat, p[1]);
|
||||
p[2] = mul(ltcMat, p[2]);
|
||||
|
||||
ClipQuadToHorizon(p, vertexCount);
|
||||
|
||||
// visibility check
|
||||
if (vertexCount == 0)
|
||||
if (vertexCount > 3)
|
||||
{
|
||||
return;
|
||||
p[3] = mul(ltcMat, p[3]);
|
||||
}
|
||||
if (vertexCount > 4)
|
||||
{
|
||||
p[4] = mul(ltcMat, p[4]);
|
||||
}
|
||||
}
|
||||
|
||||
// project onto sphere
|
||||
// Projects the clipped points of a quad onto the sphere.
|
||||
void NormalizeQuadPoints(inout float3 p[5], in int vertexCount)
|
||||
{
|
||||
// project quad points onto a sphere.
|
||||
p[0] = normalize(p[0]);
|
||||
p[1] = normalize(p[1]);
|
||||
p[2] = normalize(p[2]);
|
||||
p[3] = normalize(p[3]);
|
||||
p[4] = normalize(p[4]);
|
||||
|
||||
if (vertexCount > 3)
|
||||
{
|
||||
p[3] = normalize(p[3]);
|
||||
}
|
||||
if (vertexCount > 4)
|
||||
{
|
||||
p[4] = normalize(p[4]);
|
||||
}
|
||||
}
|
||||
|
||||
float IntegrateQuad(in float3 v[5], in float vertexCount, in bool doubleSided)
|
||||
// Transforms the 4 points of a quad into the hemisphere of the normal
|
||||
void TransformQuadToOrthonormalBasis(in float3 normal, in float3 dirToView, inout float3 p[4])
|
||||
{
|
||||
float3x3 orthoNormalBasis = BuildViewAlignedOrthonormalBasis(normal, dirToView);
|
||||
|
||||
// Transform points into orthonormal space
|
||||
p[0] = mul(orthoNormalBasis, p[0]);
|
||||
p[1] = mul(orthoNormalBasis, p[1]);
|
||||
p[2] = mul(orthoNormalBasis, p[2]);
|
||||
p[3] = mul(orthoNormalBasis, p[3]);
|
||||
}
|
||||
|
||||
// Integrates the edges of a quad for lambertian diffuse contribution.
|
||||
float IntegrateQuadDiffuse(in float3 v[5], in float vertexCount, in bool doubleSided)
|
||||
{
|
||||
// Integrate
|
||||
float sum = 0.0;
|
||||
|
||||
NormalizeQuadPoints(v, vertexCount);
|
||||
|
||||
// There must be at least 3 points so don't check for the first 2 edges.
|
||||
sum += IntegrateEdgeDiffuse(v[0], v[1]);
|
||||
sum += IntegrateEdgeDiffuse(v[1], v[2]);
|
||||
|
||||
if (vertexCount > 3)
|
||||
{
|
||||
sum += IntegrateEdgeDiffuse(v[2], v[3]);
|
||||
if (vertexCount == 5)
|
||||
{
|
||||
sum += IntegrateEdgeDiffuse(v[3], v[4]);
|
||||
}
|
||||
}
|
||||
|
||||
// Close the polygon
|
||||
sum += IntegrateEdgeDiffuse(v[vertexCount - 1], v[0]);
|
||||
|
||||
// Note: negated due to winding order
|
||||
sum = doubleSided ? abs(sum) : max(0.0, -sum);
|
||||
|
||||
return sum;
|
||||
}
|
||||
|
||||
// Integrates the edges of a quad for specular contribution.
|
||||
float IntegrateQuadSpecular(in float3 v[5], in float vertexCount, in bool doubleSided)
|
||||
{
|
||||
float sum = 0.0;
|
||||
|
||||
NormalizeQuadPoints(v, vertexCount);
|
||||
|
||||
// There must be at least 3 points so don't check for the first 2 edges.
|
||||
sum += IntegrateEdge(v[0], v[1]);
|
||||
sum += IntegrateEdge(v[1], v[2]);
|
||||
@@ -247,26 +329,62 @@ float IntegrateQuad(in float3 v[5], in float vertexCount, in bool doubleSided)
|
||||
return sum;
|
||||
}
|
||||
|
||||
float LtcQuadEvaluate(in float3 normal, in float3 dirToView, in float3x3 ltcMat, in float3 p[4], in bool doubleSided)
|
||||
// Evaluate linear transform cosine lighting for a 4 point quad.
|
||||
// normal - The surface normal
|
||||
// dirToView - Normalized direction from the surface to the view
|
||||
// ltcMat - The LTC matrix for specular, or identity for diffuse.
|
||||
// p[4] - The 4 light positions relative to the surface position.
|
||||
// doubleSided - If the quad emits light from both sides
|
||||
// diffuse - The output diffuse response for the quad light
|
||||
// specular - The output specular response for the quad light
|
||||
void LtcQuadEvaluate(
|
||||
in float3 normal,
|
||||
in float3 dirToView,
|
||||
in float3x3 ltcMat,
|
||||
in float3 p[4],
|
||||
in bool doubleSided,
|
||||
out float diffuse,
|
||||
out float specular)
|
||||
{
|
||||
// Transform the points of the light into the space of the normal's hemisphere.
|
||||
TransformQuadToOrthonormalBasis(normal, dirToView, p);
|
||||
|
||||
// Initialize quad with dummy point at end in case one corner is clipped (resulting in 5 sided polygon)
|
||||
float3 v[5] = {p[0], p[1], p[2], p[3], float3(0.0, 0.0, 0.0)};
|
||||
|
||||
int vertexCount = 0;
|
||||
LtcClipAndNormalizeQuad(normal, dirToView, ltcMat, v, vertexCount);
|
||||
// Clip the light polygon to the normal hemisphere. This is done before the LTC matrix is applied to prevent
|
||||
// parts of the light below the horizon from impacting the surface. The number of points remaining after
|
||||
// the clip is returned in vertexCount. It's possible for the vertexCount of the resulting clipped quad to be
|
||||
// 0 - all points clipped (no work to do, so return)
|
||||
// 3 - 3 points clipped, leaving only a triangular corner of the quad
|
||||
// 4 - 2 or 0 points clipped, leaving a quad
|
||||
// 5 - 1 point clipped leaving a pentagon.
|
||||
|
||||
if (vertexCount > 0)
|
||||
int vertexCount = 0;
|
||||
ClipQuadToHorizon(v, vertexCount);
|
||||
|
||||
if (vertexCount == 0)
|
||||
{
|
||||
return IntegrateQuad(v, vertexCount, doubleSided);
|
||||
// Entire light is below the horizon.
|
||||
return;
|
||||
}
|
||||
return 0.0;
|
||||
|
||||
// IntegrateQuadDiffuse is a cheap approximation compared to specular.
|
||||
diffuse = IntegrateQuadDiffuse(v, vertexCount, doubleSided);
|
||||
|
||||
ApplyLtcMatrixToQuad(ltcMat, v, vertexCount);
|
||||
|
||||
// IntegrateQuadSpecular uses more accurate integration to handle smooth surfaces correctly.
|
||||
specular = IntegrateQuadSpecular(v, vertexCount, doubleSided);
|
||||
}
|
||||
|
||||
// Checks an edge against the horizon and integrates it.
|
||||
// p0 - first point
|
||||
// p1 - second point
|
||||
// prevClipPoint - the clip point saved from the last time an edge went from above to below the horizon
|
||||
// sum - the sum total of all integrations to contribute to.
|
||||
// p0 - First point
|
||||
// p1 - Second point
|
||||
// prevClipPoint - The clip point saved from the last time an edge went from above to below the horizon
|
||||
// ltcMat - The ltc lookup matrix for specular
|
||||
// diffuse - The current sum total of diffuse contribution to apply additional contribution to
|
||||
// specular - The current sum total of specular contribution to apply additional contribution to
|
||||
//
|
||||
// Explanation:
|
||||
// When evaluating edges of a polygon there are four possible states to deal with
|
||||
@@ -283,28 +401,34 @@ float LtcQuadEvaluate(in float3 normal, in float3 dirToView, in float3x3 ltcMat,
|
||||
// 4. Both points are below the horizon
|
||||
// - Do nothing.
|
||||
|
||||
void EvaluatePolyEdge(in float3 p0, in float3 p1, inout float3 prevClipPoint, inout float sum)
|
||||
void EvaluatePolyEdge(in float3 p0, in float3 p1, inout float3 prevClipPoint, in float3x3 ltcMat, inout float diffuse, inout float specular)
|
||||
{
|
||||
if (p0.z > 0.0)
|
||||
{
|
||||
if (p1.z > 0.0)
|
||||
{
|
||||
// Both above horizon
|
||||
sum += IntegrateEdge(normalize(p0), normalize(p1));
|
||||
diffuse += IntegrateEdgeDiffuse(normalize(p0), normalize(p1));
|
||||
specular += IntegrateEdge(normalize(mul(ltcMat, p0)), normalize(mul(ltcMat, p1)));
|
||||
}
|
||||
else
|
||||
{
|
||||
// Going from above to below horizon
|
||||
prevClipPoint = normalize(ClipEdge(p0, p1));
|
||||
sum += IntegrateEdge(normalize(p0), prevClipPoint);
|
||||
prevClipPoint = ClipEdge(p0, p1);
|
||||
diffuse += IntegrateEdgeDiffuse(normalize(p0), normalize(prevClipPoint));
|
||||
specular += IntegrateEdge(normalize(mul(ltcMat, p0)), normalize(mul(ltcMat, prevClipPoint)));
|
||||
}
|
||||
}
|
||||
else if (p1.z > 0.0)
|
||||
{
|
||||
// Going from below to above horizon
|
||||
float3 clipPoint = normalize(ClipEdge(p1, p0));
|
||||
sum += IntegrateEdge(prevClipPoint, clipPoint);
|
||||
sum += IntegrateEdge(clipPoint, normalize(p1));
|
||||
float3 clipPoint = ClipEdge(p1, p0);
|
||||
diffuse += IntegrateEdgeDiffuse(normalize(prevClipPoint), normalize(clipPoint));
|
||||
diffuse += IntegrateEdgeDiffuse(normalize(clipPoint), normalize(p1));
|
||||
|
||||
clipPoint = mul(ltcMat, clipPoint);
|
||||
specular += IntegrateEdge(normalize(mul(ltcMat, prevClipPoint)), normalize(clipPoint));
|
||||
specular += IntegrateEdge(normalize(clipPoint), normalize(mul(ltcMat, p1)));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -316,26 +440,38 @@ void EvaluatePolyEdge(in float3 p0, in float3 p1, inout float3 prevClipPoint, in
|
||||
// positions - The buffer where the polygon positions are
|
||||
// startIdx - The index of the first polygon position
|
||||
// endIdx - The index of the point directly after the last polygon position
|
||||
//
|
||||
// diffuse - The output diffuse response for the polygon light
|
||||
// specular - The output specular response for the polygon light
|
||||
// The most complicated aspect of this function is clipping the polygon against the horizon of the surface point. See
|
||||
// EvaluatePolyEdge() above for details on the general concept. However, this function must deal with the case of the
|
||||
// first point being below the horizon. In that case, it needs to search in reverse from the end for the first point
|
||||
// above the horizon, and save the intersection point between the above and below points so it can be used in
|
||||
// EvaluatePolyEdge() later. During this search it also adjusts the end point index as necessary to avoid processing
|
||||
// those points that are below the horizon.
|
||||
float LtcPolygonEvaluate(in float3 pos, in float3 normal, in float3 dirToView, in float3x3 ltcMat, in StructuredBuffer<float4> positions, in uint startIdx, in uint endIdx)
|
||||
void LtcPolygonEvaluate(
|
||||
in float3 pos,
|
||||
in float3 normal,
|
||||
in float3 dirToView,
|
||||
in float3x3 ltcMat,
|
||||
in StructuredBuffer<float4> positions,
|
||||
in uint startIdx,
|
||||
in uint endIdx,
|
||||
out float diffuse,
|
||||
out float specular
|
||||
)
|
||||
{
|
||||
if (endIdx - startIdx < 3)
|
||||
{
|
||||
return 0.0; // Must have at least 3 points to form a polygon.
|
||||
return; // Must have at least 3 points to form a polygon.
|
||||
}
|
||||
|
||||
// Rotate ltc matrix
|
||||
ltcMat = mul(ltcMat, BuildViewAlignedOrthonormalBasis(normal, dirToView));
|
||||
float3x3 orthonormalMat = BuildViewAlignedOrthonormalBasis(normal, dirToView);
|
||||
|
||||
// Prepare initial values
|
||||
float sum = 0.0; // sum of edge integation
|
||||
float3 p0 = mul(ltcMat, positions[startIdx].xyz - pos); // First point in polygon
|
||||
float3 p0 = mul(orthonormalMat, positions[startIdx].xyz - pos); // First point in polygon
|
||||
diffuse = 0.0;
|
||||
specular = 0.0;
|
||||
|
||||
float3 prevClipPoint = float3(0.0, 0.0, 0.0); // Used to hold previous clip point when polygon dips below horizon.
|
||||
float3 closePoint = p0;
|
||||
@@ -349,10 +485,10 @@ float LtcPolygonEvaluate(in float3 pos, in float3 normal, in float3 dirToView, i
|
||||
// searching backwards, updating the endIdx along the way to avoid reprocessing those points later
|
||||
for ( ; endIdx > startIdx + 1; --endIdx)
|
||||
{
|
||||
float3 prevPoint = mul(ltcMat, positions[endIdx - 1].xyz - pos);
|
||||
if (prevPoint.z > 0)
|
||||
float3 prevPoint = mul(orthonormalMat, positions[endIdx - 1].xyz - pos);
|
||||
if (prevPoint.z > 0.0)
|
||||
{
|
||||
prevClipPoint = normalize(ClipEdge(prevPoint, p0));
|
||||
prevClipPoint = ClipEdge(prevPoint, p0);
|
||||
closePoint = prevClipPoint;
|
||||
break;
|
||||
}
|
||||
@@ -362,7 +498,7 @@ float LtcPolygonEvaluate(in float3 pos, in float3 normal, in float3 dirToView, i
|
||||
// Check if all points below horizon
|
||||
if (endIdx == startIdx + 1)
|
||||
{
|
||||
return 0.0;
|
||||
return;
|
||||
}
|
||||
|
||||
p0 = firstPoint; // Restore the original p0
|
||||
@@ -371,13 +507,14 @@ float LtcPolygonEvaluate(in float3 pos, in float3 normal, in float3 dirToView, i
|
||||
// Evaluate all the points
|
||||
for (uint curIdx = startIdx + 1; curIdx < endIdx; ++curIdx)
|
||||
{
|
||||
float3 p1 = mul(ltcMat, positions[curIdx].xyz - pos); // Current point in polygon
|
||||
EvaluatePolyEdge(p0, p1, prevClipPoint, sum);
|
||||
float3 p1 = mul(orthonormalMat, positions[curIdx].xyz - pos); // Current point in polygon
|
||||
EvaluatePolyEdge(p0, p1, prevClipPoint, ltcMat, diffuse, specular);
|
||||
p0 = p1;
|
||||
}
|
||||
|
||||
EvaluatePolyEdge(p0, closePoint, prevClipPoint, sum);
|
||||
EvaluatePolyEdge(p0, closePoint, prevClipPoint, ltcMat, diffuse, specular);
|
||||
|
||||
// Note: negated due to winding order
|
||||
return -sum;
|
||||
diffuse = -diffuse;
|
||||
specular = -specular;
|
||||
}
|
||||
|
||||
+8
-9
@@ -50,26 +50,25 @@ void ApplyPoylgonLight(ViewSrg::PolygonLight light, Surface surface, inout Light
|
||||
float radiusAttenuation = 1.0 - (falloff * falloff);
|
||||
radiusAttenuation = radiusAttenuation * radiusAttenuation;
|
||||
|
||||
// Diffuse
|
||||
static const float3x3 identityMatrix = float3x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0);
|
||||
float diffuse = LtcPolygonEvaluate(surface.position, surface.normal, lightingData.dirToCamera, identityMatrix, ViewSrg::m_polygonLightPoints, startIndex, endIndex);
|
||||
diffuse = doubleSided ? abs(diffuse) : max(0.0, diffuse);
|
||||
|
||||
// Specular
|
||||
float2 ltcCoords = LtcCoords(dot(surface.normal, lightingData.dirToCamera), surface.roughnessLinear);
|
||||
float3x3 ltcMat = LtcMatrix(SceneSrg::m_ltcMatrix, ltcCoords);
|
||||
float3 specular = LtcPolygonEvaluate(surface.position, surface.normal, lightingData.dirToCamera, ltcMat, ViewSrg::m_polygonLightPoints, startIndex, endIndex);
|
||||
|
||||
float diffuse = 0.0;
|
||||
float specular = 0.0;
|
||||
|
||||
LtcPolygonEvaluate(surface.position, surface.normal, lightingData.dirToCamera, ltcMat, ViewSrg::m_polygonLightPoints, startIndex, endIndex, diffuse, specular);
|
||||
diffuse = doubleSided ? abs(diffuse) : max(0.0, diffuse);
|
||||
specular = doubleSided ? abs(specular) : max(0.0, specular);
|
||||
|
||||
// Apply BRDF scale terms (BRDF magnitude and Schlick Fresnel)
|
||||
float2 schlick = SceneSrg::m_ltcAmplification.Sample(PassSrg::LinearSampler, ltcCoords).xy;
|
||||
specular *= schlick.x + (1.0 - surface.specularF0) * schlick.y;
|
||||
float3 specularRGB = specular * (schlick.x + (1.0 - surface.specularF0) * schlick.y);
|
||||
|
||||
// Scale by inverse surface area of hemisphere (1/2pi), attenuation, and light intensity
|
||||
float3 intensity = 0.5 * INV_PI * radiusAttenuation * abs(light.m_rgbIntensityNits);
|
||||
|
||||
lightingData.diffuseLighting += surface.albedo * diffuse * intensity;
|
||||
lightingData.specularLighting += surface.specularF0 * specular * intensity;
|
||||
lightingData.specularLighting += surface.specularF0 * specularRGB * intensity;
|
||||
}
|
||||
|
||||
void ApplyPolygonLights(Surface surface, inout LightingData lightingData)
|
||||
|
||||
@@ -111,24 +111,22 @@ void ApplyQuadLight(ViewSrg::QuadLight light, Surface surface, inout LightingDat
|
||||
{
|
||||
float3 p[4] = {p0, p1, p2, p3};
|
||||
|
||||
// Diffuse
|
||||
float3x3 identityMatrix = float3x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0);
|
||||
float diffuse = LtcQuadEvaluate(surface.normal, lightingData.dirToCamera, identityMatrix, p, doubleSided);
|
||||
|
||||
// Specular
|
||||
float2 ltcCoords = LtcCoords(dot(surface.normal, lightingData.dirToCamera), surface.roughnessLinear);
|
||||
float3x3 ltcMat = LtcMatrix(SceneSrg::m_ltcMatrix, ltcCoords);
|
||||
float3 specular = LtcQuadEvaluate(surface.normal, lightingData.dirToCamera, ltcMat, p, doubleSided);
|
||||
|
||||
float diffuse = 0.0;
|
||||
float specular = 0.0;
|
||||
LtcQuadEvaluate(surface.normal, lightingData.dirToCamera, ltcMat, p, doubleSided, diffuse, specular);
|
||||
|
||||
// Apply BRDF scale terms (BRDF magnitude and Schlick Fresnel)
|
||||
float2 schlick = SceneSrg::m_ltcAmplification.Sample(PassSrg::LinearSampler, ltcCoords).xy;
|
||||
specular *= schlick.x + (1.0 - surface.specularF0) * schlick.y;
|
||||
float3 specularRGB = specular * (schlick.x + (1.0 - surface.specularF0) * schlick.y);
|
||||
|
||||
// Scale by inverse surface area of hemisphere (1/2pi), attenuation, and light intensity
|
||||
float3 intensity = 0.5 * INV_PI * radiusAttenuation * light.m_rgbIntensityNits;
|
||||
|
||||
lightingData.diffuseLighting += surface.albedo * diffuse * intensity;
|
||||
lightingData.specularLighting += surface.specularF0 * specular * intensity;
|
||||
lightingData.specularLighting += surface.specularF0 * specularRGB * intensity;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -1,10 +1,14 @@
|
||||
{
|
||||
"gem_name": "Atom_Feature_Common",
|
||||
"display_name": "Atom Feature Common",
|
||||
"license": "Apache-2.0 Or MIT",
|
||||
"origin": "Open 3D Engine - o3de.org",
|
||||
"type": "Code",
|
||||
"summary": "",
|
||||
"canonical_tags": [
|
||||
"Gem"
|
||||
],
|
||||
"user_tags": [
|
||||
]
|
||||
],
|
||||
"requirements": ""
|
||||
}
|
||||
|
||||
@@ -1,10 +1,14 @@
|
||||
{
|
||||
"gem_name": "Atom_RHI_DX12",
|
||||
"display_name": "Atom RHI DX12",
|
||||
"license": "Apache-2.0 Or MIT",
|
||||
"origin": "Open 3D Engine - o3de.org",
|
||||
"type": "Code",
|
||||
"summary": "",
|
||||
"canonical_tags": [
|
||||
"Gem"
|
||||
],
|
||||
"user_tags": [
|
||||
]
|
||||
],
|
||||
"requirements": ""
|
||||
}
|
||||
|
||||
@@ -1,10 +1,14 @@
|
||||
{
|
||||
"gem_name": "Atom_RHI_Metal",
|
||||
"display_name": "Atom RHI Metal",
|
||||
"license": "Apache-2.0 Or MIT",
|
||||
"origin": "Open 3D Engine - o3de.org",
|
||||
"type": "Code",
|
||||
"summary": "",
|
||||
"canonical_tags": [
|
||||
"Gem"
|
||||
],
|
||||
"user_tags": [
|
||||
]
|
||||
],
|
||||
"requirements": ""
|
||||
}
|
||||
|
||||
@@ -1,10 +1,14 @@
|
||||
{
|
||||
"gem_name": "Atom_RHI_Null",
|
||||
"display_name": "Atom RHI Null",
|
||||
"license": "Apache-2.0 Or MIT",
|
||||
"origin": "Open 3D Engine - o3de.org",
|
||||
"type": "Code",
|
||||
"summary": "",
|
||||
"canonical_tags": [
|
||||
"Gem"
|
||||
],
|
||||
"user_tags": [
|
||||
]
|
||||
],
|
||||
"requirements": ""
|
||||
}
|
||||
|
||||
@@ -1,10 +1,14 @@
|
||||
{
|
||||
"gem_name": "Atom_RHI_Vulkan",
|
||||
"display_name": "Atom RHI Vulkan",
|
||||
"license": "Apache-2.0 Or MIT",
|
||||
"origin": "Open 3D Engine - o3de.org",
|
||||
"type": "Code",
|
||||
"summary": "",
|
||||
"canonical_tags": [
|
||||
"Gem"
|
||||
],
|
||||
"user_tags": [
|
||||
]
|
||||
],
|
||||
"requirements": ""
|
||||
}
|
||||
|
||||
@@ -1,10 +1,14 @@
|
||||
{
|
||||
"gem_name": "Atom_RHI",
|
||||
"display_name": "Atom RHI",
|
||||
"license": "Apache-2.0 Or MIT",
|
||||
"origin": "Open 3D Engine - o3de.org",
|
||||
"type": "Code",
|
||||
"summary": "",
|
||||
"canonical_tags": [
|
||||
"Gem"
|
||||
],
|
||||
"user_tags": [
|
||||
]
|
||||
],
|
||||
"requirements": ""
|
||||
}
|
||||
|
||||
@@ -25,6 +25,8 @@ ly_add_target(
|
||||
../Assets/atom_rpi_asset_files.cmake
|
||||
${pal_source_dir}/platform_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake
|
||||
${MASKED_OCCLUSION_CULLING_FILES}
|
||||
PLATFORM_INCLUDE_FILES
|
||||
${CMAKE_CURRENT_LIST_DIR}/Source/Platform/Common/${PAL_TRAIT_COMPILER_ID}/atom_rpi_public_${PAL_TRAIT_COMPILER_ID_LOWERCASE}.cmake
|
||||
INCLUDE_DIRECTORIES
|
||||
PRIVATE
|
||||
Source
|
||||
|
||||
@@ -65,9 +65,15 @@ namespace AZ
|
||||
ConstViewPtr GetDefaultView() const;
|
||||
|
||||
//! Gets the current size of the viewport.
|
||||
//! This value is cached and updated on-demand, so may be efficiently queried.
|
||||
AzFramework::WindowSize GetViewportSize() const;
|
||||
|
||||
// SceneNotificationBus interface
|
||||
//! Gets the screen DPI scaling factor.
|
||||
//! This value is cached and updated on-demand, so may be efficiently queried.
|
||||
//! \see AzFramework::WindowRequests::GetDpiScaleFactor
|
||||
float GetDpiScalingFactor() const;
|
||||
|
||||
// SceneNotificationBus interface overrides...
|
||||
//! Ensures our default view remains set when our scene's render pipelines are modified.
|
||||
void OnRenderPipelineAdded(RenderPipelinePtr pipeline) override;
|
||||
//! Ensures our default view remains set when our scene's render pipelines are modified.
|
||||
@@ -75,15 +81,22 @@ namespace AZ
|
||||
//! OnBeginPrepareRender is forwarded to our RenderTick notification to allow subscribers to do rendering.
|
||||
void OnBeginPrepareRender() override;
|
||||
|
||||
//WindowNotificationBus interface
|
||||
//! Used to fire a notification when our window resizes
|
||||
// WindowNotificationBus interface overrides...
|
||||
//! Used to fire a notification when our window resizes.
|
||||
void OnWindowResized(uint32_t width, uint32_t height) override;
|
||||
//! Used to fire a notification when our window DPI changes.
|
||||
void OnDpiScaleFactorChanged(float dpiScaleFactor) override;
|
||||
|
||||
using SizeChangedEvent = AZ::Event<AzFramework::WindowSize>;
|
||||
//! Notifies consumers when the viewport size has changed.
|
||||
//! Alternatively, connect to ViewportContextNotificationsBus and listen to ViewportContextNotifications::OnViewportSizeChanged.
|
||||
void ConnectSizeChangedHandler(SizeChangedEvent::Handler& handler);
|
||||
|
||||
using ScalarChangedEvent = AZ::Event<float>;
|
||||
//! Notifies consumers when the viewport DPI scaling ratio has changed.
|
||||
//! Alternatively, connect to ViewportContextNotificationsBus and listen to ViewportContextNotifications::OnViewportDpiScalingChanged.
|
||||
void ConnectDpiScalingFactorChangedHandler(ScalarChangedEvent::Handler& handler);
|
||||
|
||||
using MatrixChangedEvent = AZ::Event<const AZ::Matrix4x4&>;
|
||||
//! Notifies consumers when the view matrix has changed.
|
||||
void ConnectViewMatrixChangedHandler(MatrixChangedEvent::Handler& handler);
|
||||
@@ -106,7 +119,7 @@ namespace AZ
|
||||
//! Notifies consumers when this ViewportContext is about to be destroyed.
|
||||
void ConnectAboutToBeDestroyedHandler(ViewportIdEvent::Handler& handler);
|
||||
|
||||
// ViewportRequestBus interface
|
||||
// ViewportRequestBus interface overrides...
|
||||
//! Gets the current camera's view matrix.
|
||||
const AZ::Matrix4x4& GetCameraViewMatrix() const override;
|
||||
//! Sets the current camera's view matrix.
|
||||
@@ -130,8 +143,10 @@ namespace AZ
|
||||
WindowContextSharedPtr m_windowContext;
|
||||
ViewPtr m_defaultView;
|
||||
AzFramework::WindowSize m_viewportSize;
|
||||
float m_viewportDpiScaleFactor = 1.0f;
|
||||
|
||||
SizeChangedEvent m_sizeChangedEvent;
|
||||
ScalarChangedEvent m_dpiScalingFactorChangedEvent;
|
||||
MatrixChangedEvent m_viewMatrixChangedEvent;
|
||||
MatrixChangedEvent::Handler m_onViewMatrixChangedHandler;
|
||||
MatrixChangedEvent m_projectionMatrixChangedEvent;
|
||||
|
||||
@@ -105,8 +105,10 @@ namespace AZ
|
||||
class ViewportContextNotifications
|
||||
{
|
||||
public:
|
||||
//! Called when the underlying native window size changes for a given viewport context name.
|
||||
//! Called when the underlying native window size changes for a given viewport context.
|
||||
virtual void OnViewportSizeChanged(AzFramework::WindowSize size){AZ_UNUSED(size);}
|
||||
//! Called when the window DPI scaling changes for a given viewport context.
|
||||
virtual void OnViewportDpiScalingChanged(float dpiScale){AZ_UNUSED(dpiScale);}
|
||||
//! Called when the active view for a given viewport context name changes.
|
||||
virtual void OnViewportDefaultViewChanged(AZ::RPI::ViewPtr view){AZ_UNUSED(view);}
|
||||
//! Called when the viewport is to be rendered.
|
||||
|
||||
@@ -51,6 +51,7 @@ namespace AZ
|
||||
{
|
||||
AZStd::weak_ptr<ViewportContext> context;
|
||||
ViewportContext::SizeChangedEvent::Handler sizeChangedHandler;
|
||||
ViewportContext::ScalarChangedEvent::Handler dpiScalingChangedHandler;
|
||||
};
|
||||
|
||||
// ViewportContextManager is a singleton owned solely by RPISystem, which is tagged as a friend
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
#
|
||||
# Copyright (c) Contributors to the Open 3D Engine Project. For complete copyright and license terms please see the LICENSE at the root of this distribution.
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
#
|
||||
#
|
||||
|
||||
ly_add_source_properties(
|
||||
SOURCES External/MaskedOcclusionCulling/MaskedOcclusionCullingAVX2.cpp
|
||||
PROPERTY COMPILE_OPTIONS
|
||||
VALUES -mavx2 -mfma -msse4.1
|
||||
)
|
||||
|
||||
ly_add_source_properties(
|
||||
SOURCES External/MaskedOcclusionCulling/MaskedOcclusionCulling.cpp
|
||||
PROPERTY COMPILE_OPTIONS
|
||||
VALUES -mno-avx
|
||||
)
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user