Merge pull request #1989 from aws-lumberyard-dev/cgalvan/gitflow_210708
Merged stabilization/2106 to development
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,6 +0,0 @@
|
||||
; EditorCommon.def : Declares the module parameters for the DLL.
|
||||
|
||||
LIBRARY
|
||||
|
||||
EXPORTS
|
||||
; Explicit exports can go here
|
||||
Binary file not shown.
@@ -1,10 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemDefinitionGroup>
|
||||
<QtMOC>
|
||||
<OutputFileName>%(RootDir)%(Directory)%(FileName).moc</OutputFileName>
|
||||
<CommandLineTemplate>$(QTDIR)\bin\moc.exe [AllOptions] [Inputs]</CommandLineTemplate>
|
||||
<ExecutionDescription>Moc'ing %(Filename)%(Extension)...</ExecutionDescription>
|
||||
</QtMOC>
|
||||
</ItemDefinitionGroup>
|
||||
</Project>
|
||||
@@ -1,46 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<PropertyPageSchema
|
||||
Include="$(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml" />
|
||||
<AvailableItemName Include="QtMOC">
|
||||
<Targets>_QtMOC</Targets>
|
||||
</AvailableItemName>
|
||||
</ItemGroup>
|
||||
<UsingTask
|
||||
TaskName="QtMOC"
|
||||
TaskFactory="XamlTaskFactory"
|
||||
AssemblyName="Microsoft.Build.Tasks.v4.0">
|
||||
<Task>$(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml</Task>
|
||||
</UsingTask>
|
||||
<Target
|
||||
Name="_QtMOC"
|
||||
BeforeTargets="ClCompile"
|
||||
AfterTargets="CustomBuild"
|
||||
Condition="'@(QtMOC)' != ''"
|
||||
Outputs="%(QtMOC.OutputFileName)"
|
||||
Inputs="%(QtMOC.Identity);$(MSBuildProjectFile)"
|
||||
DependsOnTargets="_SelectedFiles">
|
||||
<ItemGroup Condition="'@(SelectedFiles)' != ''">
|
||||
<QtMOC Remove="@(QtMOC)" Condition="'%(Identity)' != '@(SelectedFiles)'" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<QtMOC_tlog Include="%(QtMOC.OutputFileName)" Condition="'%(QtMOC.OutputFileName)' != '' and '%(QtMOC.ExcludedFromBuild)' != 'true'">
|
||||
<Source>@(QtMOC, '|')</Source>
|
||||
</QtMOC_tlog>
|
||||
</ItemGroup>
|
||||
<Message
|
||||
Importance="High"
|
||||
Text="%(QtMOC.ExecutionDescription)" />
|
||||
<WriteLinesToFile
|
||||
Condition="'@(QtMOC_tlog)' != '' and '%(QtMOC_tlog.ExcludedFromBuild)' != 'true'"
|
||||
File="$(IntDir)$(ProjectName).moc.1.tlog"
|
||||
Lines="^%(QtMOC_tlog.Source);@(QtMOC_tlog->'%(Fullpath)')"/>
|
||||
<QtMOC
|
||||
Condition="'@(QtMOC)' != '' and '%(QtMOC.ExcludedFromBuild)' != 'true'"
|
||||
CommandLineTemplate="%(QtMOC.CommandLineTemplate)"
|
||||
OutputFileName="%(QtMOC.OutputFileName)"
|
||||
AdditionalOptions="%(QtMOC.AdditionalOptions)"
|
||||
Inputs="%(QtMOC.Fullpath)" />
|
||||
</Target>
|
||||
</Project>
|
||||
@@ -1,74 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ProjectSchemaDefinitions xmlns="http://schemas.microsoft.com/build/2009/properties" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:sys="clr-namespace:System;assembly=mscorlib">
|
||||
<Rule
|
||||
Name="QtMOC"
|
||||
PageTemplate="tool"
|
||||
DisplayName="Qt MOC"
|
||||
Order="200">
|
||||
<Rule.DataSource>
|
||||
<DataSource
|
||||
Persistence="ProjectFile"
|
||||
ItemType="QtMOC" />
|
||||
</Rule.DataSource>
|
||||
<Rule.Categories>
|
||||
<Category
|
||||
Name="General">
|
||||
<Category.DisplayName>
|
||||
<sys:String>General</sys:String>
|
||||
</Category.DisplayName>
|
||||
</Category>
|
||||
<Category
|
||||
Name="Command Line"
|
||||
Subtype="CommandLine">
|
||||
<Category.DisplayName>
|
||||
<sys:String>Command Line</sys:String>
|
||||
</Category.DisplayName>
|
||||
</Category>
|
||||
</Rule.Categories>
|
||||
<StringProperty
|
||||
Name="OutputFileName"
|
||||
Category="General"
|
||||
DisplayName="Output File Name"
|
||||
Description="Specifies the name of the output file."
|
||||
Switch="-o"[value]""/>
|
||||
<StringProperty
|
||||
Name="Inputs"
|
||||
Category="Command Line"
|
||||
IsRequired="true">
|
||||
<StringProperty.DataSource>
|
||||
<DataSource
|
||||
Persistence="ProjectFile"
|
||||
ItemType="QtMOC"
|
||||
SourceType="Item" />
|
||||
</StringProperty.DataSource>
|
||||
</StringProperty>
|
||||
<StringProperty
|
||||
Name="CommandLineTemplate"
|
||||
DisplayName="Command Line"
|
||||
Visible="False"
|
||||
IncludeInCommandLine="False" />
|
||||
<StringProperty
|
||||
Name="ExecutionDescription"
|
||||
DisplayName="Execution Description"
|
||||
IncludeInCommandLine="False"
|
||||
Visible="False" />
|
||||
<StringProperty
|
||||
Subtype="AdditionalOptions"
|
||||
Name="AdditionalOptions"
|
||||
Category="Command Line">
|
||||
<StringProperty.DisplayName>
|
||||
<sys:String>Additional Options</sys:String>
|
||||
</StringProperty.DisplayName>
|
||||
<StringProperty.Description>
|
||||
<sys:String>Additional Options</sys:String>
|
||||
</StringProperty.Description>
|
||||
</StringProperty>
|
||||
</Rule>
|
||||
<ItemType
|
||||
Name="QtMOC"
|
||||
DisplayName="Qt MOC" />
|
||||
<ContentType
|
||||
Name="QtMOC"
|
||||
DisplayName="Qt MOC"
|
||||
ItemType="QtMOC" />
|
||||
</ProjectSchemaDefinitions>
|
||||
@@ -1,10 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemDefinitionGroup>
|
||||
<QtRCC>
|
||||
<OutputFileName>%(RootDir)%(Directory)rcc_%(FileName).h</OutputFileName>
|
||||
<CommandLineTemplate>$(QTDIR)\bin\rcc.exe [AllOptions] [Inputs]</CommandLineTemplate>
|
||||
<ExecutionDescription>Rcc'ing %(Filename)%(Extension)...</ExecutionDescription>
|
||||
</QtRCC>
|
||||
</ItemDefinitionGroup>
|
||||
</Project>
|
||||
@@ -1,46 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<PropertyPageSchema
|
||||
Include="$(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml" />
|
||||
<AvailableItemName Include="QtRCC">
|
||||
<Targets>_QtRCC</Targets>
|
||||
</AvailableItemName>
|
||||
</ItemGroup>
|
||||
<UsingTask
|
||||
TaskName="QtRCC"
|
||||
TaskFactory="XamlTaskFactory"
|
||||
AssemblyName="Microsoft.Build.Tasks.v4.0">
|
||||
<Task>$(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml</Task>
|
||||
</UsingTask>
|
||||
<Target
|
||||
Name="_QtRCC"
|
||||
BeforeTargets="ClCompile"
|
||||
AfterTargets="CustomBuild"
|
||||
Condition="'@(QtRCC)' != ''"
|
||||
Outputs="%(QtRCC.OutputFileName)"
|
||||
Inputs="%(QtRCC.Identity);$(MSBuildProjectFile)"
|
||||
DependsOnTargets="_SelectedFiles">
|
||||
<ItemGroup Condition="'@(SelectedFiles)' != ''">
|
||||
<QtRCC Remove="@(QtRCC)" Condition="'%(Identity)' != '@(SelectedFiles)'" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<QtRCC_tlog Include="%(QtRCC.OutputFileName)" Condition="'%(QtRCC.OutputFileName)' != '' and '%(QtRCC.ExcludedFromBuild)' != 'true'">
|
||||
<Source>@(QtRCC, '|')</Source>
|
||||
</QtRCC_tlog>
|
||||
</ItemGroup>
|
||||
<Message
|
||||
Importance="High"
|
||||
Text="%(QtRCC.ExecutionDescription)" />
|
||||
<WriteLinesToFile
|
||||
Condition="'@(QtRCC_tlog)' != '' and '%(QtRCC_tlog.ExcludedFromBuild)' != 'true'"
|
||||
File="$(IntDir)$(ProjectName).rcc.1.tlog"
|
||||
Lines="^%(QtRCC_tlog.Source);@(QtRCC_tlog->'%(Fullpath)')"/>
|
||||
<QtRCC
|
||||
Condition="'@(QtRCC)' != '' and '%(QtRCC.ExcludedFromBuild)' != 'true'"
|
||||
CommandLineTemplate="%(QtRCC.CommandLineTemplate)"
|
||||
OutputFileName="%(QtRCC.OutputFileName)"
|
||||
AdditionalOptions="%(QtRCC.AdditionalOptions)"
|
||||
Inputs="%(QtRCC.Fullpath)" />
|
||||
</Target>
|
||||
</Project>
|
||||
@@ -1,74 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ProjectSchemaDefinitions xmlns="http://schemas.microsoft.com/build/2009/properties" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:sys="clr-namespace:System;assembly=mscorlib">
|
||||
<Rule
|
||||
Name="QtRCC"
|
||||
PageTemplate="tool"
|
||||
DisplayName="Qt RCC"
|
||||
Order="200">
|
||||
<Rule.DataSource>
|
||||
<DataSource
|
||||
Persistence="ProjectFile"
|
||||
ItemType="QtRCC" />
|
||||
</Rule.DataSource>
|
||||
<Rule.Categories>
|
||||
<Category
|
||||
Name="General">
|
||||
<Category.DisplayName>
|
||||
<sys:String>General</sys:String>
|
||||
</Category.DisplayName>
|
||||
</Category>
|
||||
<Category
|
||||
Name="Command Line"
|
||||
Subtype="CommandLine">
|
||||
<Category.DisplayName>
|
||||
<sys:String>Command Line</sys:String>
|
||||
</Category.DisplayName>
|
||||
</Category>
|
||||
</Rule.Categories>
|
||||
<StringProperty
|
||||
Name="OutputFileName"
|
||||
Category="General"
|
||||
DisplayName="Output File Name"
|
||||
Description="Specifies the name of the output file."
|
||||
Switch="-o "[value]""/>
|
||||
<StringProperty
|
||||
Name="Inputs"
|
||||
Category="Command Line"
|
||||
IsRequired="true">
|
||||
<StringProperty.DataSource>
|
||||
<DataSource
|
||||
Persistence="ProjectFile"
|
||||
ItemType="QtRCC"
|
||||
SourceType="Item" />
|
||||
</StringProperty.DataSource>
|
||||
</StringProperty>
|
||||
<StringProperty
|
||||
Name="CommandLineTemplate"
|
||||
DisplayName="Command Line"
|
||||
Visible="False"
|
||||
IncludeInCommandLine="False" />
|
||||
<StringProperty
|
||||
Name="ExecutionDescription"
|
||||
DisplayName="Execution Description"
|
||||
IncludeInCommandLine="False"
|
||||
Visible="False" />
|
||||
<StringProperty
|
||||
Subtype="AdditionalOptions"
|
||||
Name="AdditionalOptions"
|
||||
Category="Command Line">
|
||||
<StringProperty.DisplayName>
|
||||
<sys:String>Additional Options</sys:String>
|
||||
</StringProperty.DisplayName>
|
||||
<StringProperty.Description>
|
||||
<sys:String>Additional Options</sys:String>
|
||||
</StringProperty.Description>
|
||||
</StringProperty>
|
||||
</Rule>
|
||||
<ItemType
|
||||
Name="QtRCC"
|
||||
DisplayName="Qt RCC" />
|
||||
<ContentType
|
||||
Name="QtRCC"
|
||||
DisplayName="Qt RCC"
|
||||
ItemType="QtRCC" />
|
||||
</ProjectSchemaDefinitions>
|
||||
@@ -1,10 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemDefinitionGroup>
|
||||
<QtUIC>
|
||||
<OutputFileName>%(RootDir)%(Directory)ui_%(FileName).h</OutputFileName>
|
||||
<CommandLineTemplate>$(QTDIR)\bin\uic.exe [AllOptions] [Inputs]</CommandLineTemplate>
|
||||
<ExecutionDescription>Uic'ing %(Filename)%(Extension)...</ExecutionDescription>
|
||||
</QtUIC>
|
||||
</ItemDefinitionGroup>
|
||||
</Project>
|
||||
@@ -1,47 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<PropertyPageSchema
|
||||
Include="$(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml" />
|
||||
<AvailableItemName Include="QtUIC">
|
||||
<Targets>_QtUIC</Targets>
|
||||
</AvailableItemName>
|
||||
</ItemGroup>
|
||||
<UsingTask
|
||||
TaskName="QtUIC"
|
||||
TaskFactory="XamlTaskFactory"
|
||||
AssemblyName="Microsoft.Build.Tasks.v4.0">
|
||||
<Task>$(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml</Task>
|
||||
</UsingTask>
|
||||
<Target
|
||||
Name="_QtUIC"
|
||||
BeforeTargets="ClCompile"
|
||||
AfterTargets="CustomBuild"
|
||||
Condition="'@(QtUIC)' != ''"
|
||||
Outputs="%(QtUIC.OutputFileName)"
|
||||
Inputs="%(QtUIC.Identity);$(MSBuildProjectFile)"
|
||||
DependsOnTargets="_SelectedFiles">
|
||||
<ItemGroup Condition="'@(SelectedFiles)' != ''">
|
||||
<QtUIC Remove="@(QtUIC)" Condition="'%(Identity)' != '@(SelectedFiles)'" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<QtUIC_tlog Include="%(QtUIC.OutputFileName)" Condition="'%(QtUIC.OutputFileName)' != '' and '%(QtUIC.ExcludedFromBuild)' != 'true'">
|
||||
<Source>@(QtUIC, '|')</Source>
|
||||
</QtUIC_tlog>
|
||||
</ItemGroup>
|
||||
<Message
|
||||
Importance="High"
|
||||
Text="%(QtUIC.ExecutionDescription)" />
|
||||
<WriteLinesToFile
|
||||
Condition="'@(QtUIC_tlog)' != '' and '%(QtUIC_tlog.ExcludedFromBuild)' != 'true'"
|
||||
File="$(IntDir)$(ProjectName).uic.1.tlog"
|
||||
Lines="^%(QtUIC_tlog.Source);@(QtUIC_tlog->'%(Fullpath)')"/>
|
||||
<QtUIC
|
||||
Condition="'@(QtUIC)' != '' and '%(QtUIC.ExcludedFromBuild)' != 'true'"
|
||||
CommandLineTemplate="%(QtUIC.CommandLineTemplate)"
|
||||
OutputFileName="%(QtUIC.OutputFileName)"
|
||||
AdditionalOptions="%(QtUIC.AdditionalOptions)"
|
||||
Inputs="%(QtUIC.Fullpath)" /> <!-- CRC TODO: Should use identity instead? Inputs="%(QtUIC.Identity)" /> -->
|
||||
|
||||
</Target>
|
||||
</Project>
|
||||
@@ -1,74 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ProjectSchemaDefinitions xmlns="http://schemas.microsoft.com/build/2009/properties" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:sys="clr-namespace:System;assembly=mscorlib">
|
||||
<Rule
|
||||
Name="QtUIC"
|
||||
PageTemplate="tool"
|
||||
DisplayName="Qt UIC"
|
||||
Order="200">
|
||||
<Rule.DataSource>
|
||||
<DataSource
|
||||
Persistence="ProjectFile"
|
||||
ItemType="QtUIC" />
|
||||
</Rule.DataSource>
|
||||
<Rule.Categories>
|
||||
<Category
|
||||
Name="General">
|
||||
<Category.DisplayName>
|
||||
<sys:String>General</sys:String>
|
||||
</Category.DisplayName>
|
||||
</Category>
|
||||
<Category
|
||||
Name="Command Line"
|
||||
Subtype="CommandLine">
|
||||
<Category.DisplayName>
|
||||
<sys:String>Command Line</sys:String>
|
||||
</Category.DisplayName>
|
||||
</Category>
|
||||
</Rule.Categories>
|
||||
<StringProperty
|
||||
Name="OutputFileName"
|
||||
Category="General"
|
||||
DisplayName="Output File Name"
|
||||
Description="Specifies the name of the output file."
|
||||
Switch="-o "[value]""/>
|
||||
<StringProperty
|
||||
Name="Inputs"
|
||||
Category="Command Line"
|
||||
IsRequired="true">
|
||||
<StringProperty.DataSource>
|
||||
<DataSource
|
||||
Persistence="ProjectFile"
|
||||
ItemType="QtUIC"
|
||||
SourceType="Item" />
|
||||
</StringProperty.DataSource>
|
||||
</StringProperty>
|
||||
<StringProperty
|
||||
Name="CommandLineTemplate"
|
||||
DisplayName="Command Line"
|
||||
Visible="False"
|
||||
IncludeInCommandLine="False" />
|
||||
<StringProperty
|
||||
Name="ExecutionDescription"
|
||||
DisplayName="Execution Description"
|
||||
IncludeInCommandLine="False"
|
||||
Visible="False" />
|
||||
<StringProperty
|
||||
Subtype="AdditionalOptions"
|
||||
Name="AdditionalOptions"
|
||||
Category="Command Line">
|
||||
<StringProperty.DisplayName>
|
||||
<sys:String>Additional Options</sys:String>
|
||||
</StringProperty.DisplayName>
|
||||
<StringProperty.Description>
|
||||
<sys:String>Additional Options</sys:String>
|
||||
</StringProperty.Description>
|
||||
</StringProperty>
|
||||
</Rule>
|
||||
<ItemType
|
||||
Name="QtUIC"
|
||||
DisplayName="Qt UIC" />
|
||||
<ContentType
|
||||
Name="QtUIC"
|
||||
DisplayName="Qt UIC"
|
||||
ItemType="QtUIC" />
|
||||
</ProjectSchemaDefinitions>
|
||||
@@ -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();
|
||||
|
||||
@@ -73,7 +73,7 @@ namespace TrackView
|
||||
bool startedCapture = false;
|
||||
AZ::Render::FrameCaptureRequestBus::BroadcastResult(
|
||||
startedCapture, &AZ::Render::FrameCaptureRequestBus::Events::CapturePassAttachmentWithCallback, m_passHierarchy,
|
||||
AZStd::string("Output"), attachmentReadbackCallback);
|
||||
AZStd::string("Output"), attachmentReadbackCallback, AZ::RPI::PassAttachmentReadbackOption::Output);
|
||||
|
||||
return startedCapture;
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -504,7 +504,7 @@ namespace Physics
|
||||
}
|
||||
}
|
||||
|
||||
const AZ::Data::Asset<Physics::MaterialLibraryAsset>& MaterialSelection::GetMaterialLibrary()
|
||||
AZ::Data::Asset<Physics::MaterialLibraryAsset> MaterialSelection::GetMaterialLibrary()
|
||||
{
|
||||
if (auto* physicsSystem = AZ::Interface<AzPhysics::SystemInterface>::Get())
|
||||
{
|
||||
@@ -516,7 +516,7 @@ namespace Physics
|
||||
return s_invalidMaterialLibrary;
|
||||
}
|
||||
|
||||
const AZ::Data::AssetId& MaterialSelection::GetMaterialLibraryId()
|
||||
AZ::Data::AssetId MaterialSelection::GetMaterialLibraryId()
|
||||
{
|
||||
return GetMaterialLibrary().GetId();
|
||||
}
|
||||
|
||||
@@ -306,8 +306,8 @@ namespace Physics
|
||||
|
||||
void SyncSelectionToMaterialLibrary();
|
||||
|
||||
static const AZ::Data::Asset<Physics::MaterialLibraryAsset>& GetMaterialLibrary();
|
||||
static const AZ::Data::AssetId& GetMaterialLibraryId();
|
||||
static AZ::Data::Asset<Physics::MaterialLibraryAsset> GetMaterialLibrary();
|
||||
static AZ::Data::AssetId GetMaterialLibraryId();
|
||||
|
||||
bool AreMaterialSlotsReadOnly() const;
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -3288,15 +3288,20 @@ namespace AzQtComponents
|
||||
}
|
||||
|
||||
// Untab tabbed dock widgets before restoring, as the restore only works on dock widgets parented directly to the main window
|
||||
const QList<QDockWidget*> dockWidgets = m_mainWindow->findChildren<QDockWidget*>();
|
||||
for (QDockWidget* dockWidget : dockWidgets)
|
||||
for (QDockWidget* dockWidget : m_mainWindow->findChildren<QDockWidget*>(
|
||||
QRegularExpression(QString("%1.*").arg(m_tabContainerIdentifierPrefix)), Qt::FindChildrenRecursively))
|
||||
{
|
||||
if (QStackedWidget* stackedWidget = qobject_cast<QStackedWidget*>(dockWidget->parentWidget()))
|
||||
DockTabWidget* tabWidget = qobject_cast<DockTabWidget*>(dockWidget->widget());
|
||||
if (!tabWidget)
|
||||
{
|
||||
if (AzQtComponents::DockTabWidget* tabWidget = qobject_cast<AzQtComponents::DockTabWidget*>(stackedWidget->parentWidget()))
|
||||
{
|
||||
tabWidget->removeTab(dockWidget);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
// Remove the tabs from the tab widget (we don't actually want to close them, which could delete them at this point)
|
||||
int numTabs = tabWidget->count();
|
||||
for (int i = 0; i < numTabs; ++i)
|
||||
{
|
||||
tabWidget->removeTab(0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1303,6 +1303,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>
|
||||
@@ -385,7 +385,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>
|
||||
@@ -459,6 +459,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>
|
||||
|
||||
+15
@@ -222,6 +222,21 @@ namespace AzToolsFramework
|
||||
|
||||
void AssetBrowserTreeView::UpdateAfterFilter(bool hasFilter, bool selectFirstValidEntry)
|
||||
{
|
||||
const QModelIndexList& selectedIndexes = selectionModel()->selectedRows();
|
||||
|
||||
// If we've cleared the filter but had something selected, ensure it stays selected and visible.
|
||||
if (!hasFilter && !selectedIndexes.isEmpty())
|
||||
{
|
||||
QModelIndex curIndex = selectedIndexes[0];
|
||||
m_expandToEntriesByDefault = true;
|
||||
m_treeStateSaver->ApplySnapshot();
|
||||
|
||||
setCurrentIndex(curIndex);
|
||||
scrollTo(curIndex);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// Flag our default expansion state so that we expand down to source entries after filtering
|
||||
m_expandToEntriesByDefault = hasFilter;
|
||||
// Then ask our state saver to apply its current snapshot again, falling back on asking us if entries should be expanded or not
|
||||
|
||||
+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()
|
||||
|
||||
@@ -80,14 +80,44 @@ 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 absCosTheta = abs(cosTheta);
|
||||
float theta_sinTheta = 1.5708 + (-0.879406 + 0.308609 * absCosTheta) * absCosTheta;
|
||||
if (cosTheta < 0.0)
|
||||
{
|
||||
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 +219,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 +325,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 +397,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 +436,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 +481,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 +494,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 +503,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
|
||||
{
|
||||
|
||||
@@ -46,14 +46,16 @@ namespace AZ
|
||||
//! Save a buffer attachment or a image attachment binded to a pass's slot to a data file.
|
||||
//! @param passHierarchy For finding the pass by using PassHierarchyFilter
|
||||
//! @param slotName Name of the pass's slot. The attachment bound to this slot will be captured.
|
||||
//! @param option Only valid for an InputOutput attachment. Use PassAttachmentReadbackOption::Input to capture the input state
|
||||
//! and use PassAttachmentReadbackOption::Output to capture the output state
|
||||
//! @param outputFilename The output file path.
|
||||
virtual bool CapturePassAttachment(const AZStd::vector<AZStd::string>& passHierarchy, const AZStd::string& slotName
|
||||
, const AZStd::string& outputFilePath) = 0;
|
||||
, const AZStd::string& outputFilePath, RPI::PassAttachmentReadbackOption option) = 0;
|
||||
|
||||
//! Similar to CapturePassAttachment. But instead of saving the read back result to a file, it will call the callback function provide
|
||||
//! in the input when callback is finished
|
||||
virtual bool CapturePassAttachmentWithCallback(const AZStd::vector<AZStd::string>& passHierarchy, const AZStd::string& slotName
|
||||
, RPI::AttachmentReadback::CallbackFunction callback) = 0;
|
||||
, RPI::AttachmentReadback::CallbackFunction callback, RPI::PassAttachmentReadbackOption option) = 0;
|
||||
|
||||
};
|
||||
using FrameCaptureRequestBus = EBus<FrameCaptureRequests>;
|
||||
|
||||
@@ -343,7 +343,7 @@ namespace AZ
|
||||
}
|
||||
|
||||
bool FrameCaptureSystemComponent::CapturePassAttachment(const AZStd::vector<AZStd::string>& passHierarchy, const AZStd::string& slot,
|
||||
const AZStd::string& outputFilePath)
|
||||
const AZStd::string& outputFilePath, RPI::PassAttachmentReadbackOption option)
|
||||
{
|
||||
InitReadback();
|
||||
|
||||
@@ -376,40 +376,22 @@ namespace AZ
|
||||
return false;
|
||||
}
|
||||
|
||||
AZ::RPI::RenderPass* renderPass = azrtti_cast<AZ::RPI::RenderPass*>(foundPasses[0]);
|
||||
if (renderPass)
|
||||
AZ::RPI::Pass* pass = foundPasses[0];
|
||||
if (pass->ReadbackAttachment(m_readback, Name(slot), option))
|
||||
{
|
||||
Name slotName = Name(slot);
|
||||
AZ::RPI::PassAttachment* attachment = nullptr;
|
||||
for (auto& binding : renderPass->GetAttachmentBindings())
|
||||
{
|
||||
if (binding.m_name == slotName)
|
||||
{
|
||||
attachment = binding.m_attachment.get();
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (attachment)
|
||||
{
|
||||
m_state = State::Pending;
|
||||
m_result = FrameCaptureResult::None;
|
||||
SystemTickBus::Handler::BusConnect();
|
||||
renderPass->ReadbackAttachment(m_readback, attachment);
|
||||
}
|
||||
else
|
||||
{
|
||||
AZ_Warning("FrameCaptureSystemComponent", false, "Failed to find attachment bound to pass [%s] slot [%s]",
|
||||
renderPass->GetName().GetCStr(), slotName.GetCStr());
|
||||
return false;
|
||||
}
|
||||
m_state = State::Pending;
|
||||
m_result = FrameCaptureResult::None;
|
||||
SystemTickBus::Handler::BusConnect();
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
AZ_Warning("FrameCaptureSystemComponent", false, "Failed to readback the attachment bound to pass [%s] slot [%s]", pass->GetName().GetCStr(), slot.c_str());
|
||||
return false;
|
||||
}
|
||||
|
||||
bool FrameCaptureSystemComponent::CapturePassAttachmentWithCallback(const AZStd::vector<AZStd::string>& passHierarchy, const AZStd::string& slotName
|
||||
, RPI::AttachmentReadback::CallbackFunction callback)
|
||||
, RPI::AttachmentReadback::CallbackFunction callback, RPI::PassAttachmentReadbackOption option)
|
||||
{
|
||||
bool result = CapturePassAttachment(passHierarchy, slotName, "");
|
||||
bool result = CapturePassAttachment(passHierarchy, slotName, "", option);
|
||||
|
||||
// Append state change to user provided call back
|
||||
AZ::RPI::AttachmentReadback::CallbackFunction callbackSetState = [&, callback](const AZ::RPI::AttachmentReadback::ReadbackResult& result)
|
||||
|
||||
@@ -36,9 +36,10 @@ namespace AZ
|
||||
bool CaptureScreenshot(const AZStd::string& filePath) override;
|
||||
bool CaptureScreenshotForWindow(const AZStd::string& filePath, AzFramework::NativeWindowHandle windowHandle) override;
|
||||
bool CaptureScreenshotWithPreview(const AZStd::string& outputFilePath) override;
|
||||
bool CapturePassAttachment(const AZStd::vector<AZStd::string>& passHierarchy, const AZStd::string& slotName, const AZStd::string& outputFilePath) override;
|
||||
bool CapturePassAttachment(const AZStd::vector<AZStd::string>& passHierarchy, const AZStd::string& slotName, const AZStd::string& outputFilePath,
|
||||
RPI::PassAttachmentReadbackOption option) override;
|
||||
bool CapturePassAttachmentWithCallback(const AZStd::vector<AZStd::string>& passHierarchy, const AZStd::string& slotName
|
||||
, RPI::AttachmentReadback::CallbackFunction callback) override;
|
||||
, RPI::AttachmentReadback::CallbackFunction callback, RPI::PassAttachmentReadbackOption option) override;
|
||||
|
||||
private:
|
||||
void CaptureAttachmentCallback(const AZ::RPI::AttachmentReadback::ReadbackResult& readbackResult);
|
||||
|
||||
@@ -64,23 +64,9 @@ namespace AZ
|
||||
// Set up read back attachment before children prepare
|
||||
if (m_readback->IsReady())
|
||||
{
|
||||
AZ::RPI::RenderPass* renderPass = azrtti_cast<AZ::RPI::RenderPass*>(m_renderTargetPass.get());
|
||||
if (renderPass)
|
||||
if (m_renderTargetPass)
|
||||
{
|
||||
RPI::PassAttachment* attachment = nullptr;
|
||||
for (auto& binding : renderPass->GetAttachmentBindings())
|
||||
{
|
||||
if (binding.m_slotType == RPI::PassSlotType::Output)
|
||||
{
|
||||
attachment = binding.m_attachment.get();
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (attachment)
|
||||
{
|
||||
renderPass->ReadbackAttachment(m_readback, attachment);
|
||||
m_attachmentReadbackComplete = true;
|
||||
}
|
||||
m_attachmentReadbackComplete = m_renderTargetPass->ReadbackAttachment(m_readback, AZ::Name("RenderTargetOutput"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -142,6 +142,8 @@ namespace AZ
|
||||
|
||||
void RayTracingPipelineState::Shutdown()
|
||||
{
|
||||
ShutdownInternal();
|
||||
DeviceObject::Shutdown();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -57,6 +57,7 @@ namespace AZ
|
||||
class PassTemplate;
|
||||
struct PassRequest;
|
||||
struct PassValidationResults;
|
||||
class AttachmentReadback;
|
||||
|
||||
using SortedPipelineViewTags = AZStd::set<PipelineViewTag, AZNameSortAscending>;
|
||||
using PassesByDrawList = AZStd::map<RHI::DrawListTag, const Pass*>;
|
||||
@@ -65,7 +66,12 @@ namespace AZ
|
||||
const uint32_t PassInputBindingCountMax = 16;
|
||||
const uint32_t PassInputOutputBindingCountMax = PassInputBindingCountMax;
|
||||
const uint32_t PassOutputBindingCountMax = PassInputBindingCountMax;
|
||||
|
||||
|
||||
enum class PassAttachmentReadbackOption : uint8_t
|
||||
{
|
||||
Input = 0,
|
||||
Output
|
||||
};
|
||||
|
||||
//! Atom's base pass class (every pass class in Atom must derive from this class).
|
||||
//!
|
||||
@@ -222,6 +228,14 @@ namespace AZ
|
||||
//! Enables/Disables PipelineStatistics queries for this pass
|
||||
virtual void SetPipelineStatisticsQueryEnabled(bool enable);
|
||||
|
||||
//! Readback an attachment attached to the specified slot name
|
||||
//! @param readback The AttachmentReadback object which is used for readback. Its callback function will be called when readback is finished.
|
||||
//! @param slotName The attachment bind to the slot with this slotName is to be readback
|
||||
//! @param option The option is used for choosing input or output state when readback an InputOutput attachment.
|
||||
//! It's ignored if the attachment isn't an InputOutput attachment.
|
||||
//! Return true if the readback request was successful. User may expect the AttachmentReadback's callback function would be called.
|
||||
bool ReadbackAttachment(AZStd::shared_ptr<AttachmentReadback> readback, const Name& slotName, PassAttachmentReadbackOption option = PassAttachmentReadbackOption::Output);
|
||||
|
||||
//! Returns whether the Timestamp queries is enabled/disabled for this pass
|
||||
bool IsTimestampQueryEnabled() const;
|
||||
|
||||
@@ -266,7 +280,6 @@ namespace AZ
|
||||
// Update output bindings on this pass that are connected to bindings on other passes
|
||||
void UpdateConnectedOutputBindings();
|
||||
|
||||
|
||||
protected:
|
||||
explicit Pass(const PassDescriptor& descriptor);
|
||||
|
||||
@@ -349,6 +362,7 @@ namespace AZ
|
||||
void FrameEnd();
|
||||
virtual void FrameEndInternal() { }
|
||||
|
||||
void UpdateReadbackAttachment(FramePrepareParams params, bool beforeAddScopes);
|
||||
|
||||
// --- Protected Members ---
|
||||
|
||||
@@ -442,7 +456,10 @@ namespace AZ
|
||||
// Sort type to be used by the default sort implementation. Passes can also provide
|
||||
// fully custom sort implementations by overriding the SortDrawList() function.
|
||||
RHI::DrawListSortType m_drawListSortType = RHI::DrawListSortType::KeyThenDepth;
|
||||
|
||||
|
||||
// For read back attachment
|
||||
AZStd::shared_ptr<AttachmentReadback> m_attachmentReadback;
|
||||
PassAttachmentReadbackOption m_readbackOption;
|
||||
|
||||
private:
|
||||
// Return the Timestamp result of this pass
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user