From b0dfe26232b318e520887af65cd579ec87016636 Mon Sep 17 00:00:00 2001 From: galibzon <66021303+galibzon@users.noreply.github.com> Date: Fri, 12 Nov 2021 13:51:07 -0600 Subject: [PATCH] The Build Time Stamp of ShaderAsset And (#5373) * The Build Time Stamp of ShaderAsset And ShaderVariantAsset Should Be Based On GetTimeUTCMilliSecond() GetTimeNowMicroseconds() is useful to measure time stamp differences. GetTimeUTCMilliSecond() is for time stamps based on absolute clock/wall time. * Updated DiffuseGlobalIllumination precompiled shaders Co-authored-by: dmcdiar Signed-off-by: galibzon <66021303+galibzon@users.noreply.github.com> --- .../AzslShaderBuilderSystemComponent.cpp | 4 ++-- .../Code/Source/Editor/ShaderAssetBuilder.cpp | 10 +++++----- .../Editor/ShaderVariantAssetBuilder.cpp | 2 +- .../Source/Editor/ShaderVariantAssetBuilder.h | 2 +- .../diffuseprobegridblenddistance.azshader | Bin 77447 -> 77447 bytes ...begridblenddistance_dx12_0.azshadervariant | Bin 8258 -> 8258 bytes ...begridblenddistance_null_0.azshadervariant | Bin 486 -> 486 bytes ...gridblenddistance_vulkan_0.azshadervariant | Bin 8286 -> 8286 bytes .../diffuseprobegridblendirradiance.azshader | Bin 77491 -> 77491 bytes ...gridblendirradiance_dx12_0.azshadervariant | Bin 9034 -> 9034 bytes ...gridblendirradiance_null_0.azshadervariant | Bin 486 -> 486 bytes ...idblendirradiance_vulkan_0.azshadervariant | Bin 10002 -> 10002 bytes ...iffuseprobegridborderupdatecolumn.azshader | Bin 27583 -> 27583 bytes ...dborderupdatecolumn_dx12_0.azshadervariant | Bin 4522 -> 4522 bytes ...dborderupdatecolumn_null_0.azshadervariant | Bin 486 -> 486 bytes ...orderupdatecolumn_vulkan_0.azshadervariant | Bin 2701 -> 2701 bytes .../diffuseprobegridborderupdaterow.azshader | Bin 27580 -> 27580 bytes ...gridborderupdaterow_dx12_0.azshadervariant | Bin 4338 -> 4338 bytes ...gridborderupdaterow_null_0.azshadervariant | Bin 486 -> 486 bytes ...idborderupdaterow_vulkan_0.azshadervariant | Bin 2222 -> 2222 bytes .../diffuseprobegridclassification.azshader | Bin 74952 -> 74952 bytes ...egridclassification_dx12_0.azshadervariant | Bin 6166 -> 6166 bytes ...egridclassification_null_0.azshadervariant | Bin 486 -> 486 bytes ...ridclassification_vulkan_0.azshadervariant | Bin 4962 -> 4962 bytes .../diffuseprobegridraytracing.azshader | Bin 142100 -> 142100 bytes ...probegridraytracing_dx12_0.azshadervariant | Bin 31950 -> 32042 bytes ...probegridraytracing_null_0.azshadervariant | Bin 486 -> 486 bytes ...obegridraytracing_vulkan_0.azshadervariant | Bin 34448 -> 34600 bytes ...fuseprobegridraytracingclosesthit.azshader | Bin 142110 -> 142110 bytes ...aytracingclosesthit_dx12_0.azshadervariant | Bin 13094 -> 13094 bytes ...aytracingclosesthit_null_0.azshadervariant | Bin 486 -> 486 bytes ...tracingclosesthit_vulkan_0.azshadervariant | Bin 5404 -> 5404 bytes .../diffuseprobegridraytracingmiss.azshader | Bin 142104 -> 142104 bytes ...egridraytracingmiss_dx12_0.azshadervariant | Bin 13262 -> 13262 bytes ...egridraytracingmiss_null_0.azshadervariant | Bin 486 -> 486 bytes ...ridraytracingmiss_vulkan_0.azshadervariant | Bin 6396 -> 6396 bytes .../diffuseprobegridrelocation.azshader | Bin 77960 -> 77960 bytes ...probegridrelocation_dx12_0.azshadervariant | Bin 8046 -> 8046 bytes ...probegridrelocation_null_0.azshadervariant | Bin 486 -> 486 bytes ...obegridrelocation_vulkan_0.azshadervariant | Bin 9442 -> 9442 bytes .../diffuseprobegridrender.azshader | Bin 203892 -> 218052 bytes ...fuseprobegridrender_dx12_0.azshadervariant | Bin 30799 -> 30631 bytes ...fuseprobegridrender_null_0.azshadervariant | Bin 589 -> 589 bytes ...seprobegridrender_vulkan_0.azshadervariant | Bin 22565 -> 22565 bytes .../Shader/ShaderVariantAssetCreator.h | 2 +- .../Atom/RPI.Reflect/Shader/ShaderAsset.h | 2 +- .../RPI.Reflect/Shader/ShaderVariantAsset.h | 4 ++-- .../Shader/ShaderVariantAssetCreator.cpp | 2 +- .../Code/Source/RPI.Public/Shader/Shader.cpp | 8 ++++---- .../RPI.Reflect/Shader/ShaderVariantAsset.cpp | 2 +- 50 files changed, 19 insertions(+), 19 deletions(-) diff --git a/Gems/Atom/Asset/Shader/Code/Source/Editor/AzslShaderBuilderSystemComponent.cpp b/Gems/Atom/Asset/Shader/Code/Source/Editor/AzslShaderBuilderSystemComponent.cpp index e41c04a0be..99b7c814d1 100644 --- a/Gems/Atom/Asset/Shader/Code/Source/Editor/AzslShaderBuilderSystemComponent.cpp +++ b/Gems/Atom/Asset/Shader/Code/Source/Editor/AzslShaderBuilderSystemComponent.cpp @@ -82,7 +82,7 @@ namespace AZ // Register Shader Asset Builder AssetBuilderSDK::AssetBuilderDesc shaderAssetBuilderDescriptor; shaderAssetBuilderDescriptor.m_name = "Shader Asset Builder"; - shaderAssetBuilderDescriptor.m_version = 107; // Required .azsl extension in .shader file references + shaderAssetBuilderDescriptor.m_version = 108; // The Build Time Stamp of ShaderAsset And ShaderVariantAsset Should Be Based On GetTimeUTCMilliSecond() // .shader file changes trigger rebuilds shaderAssetBuilderDescriptor.m_patterns.push_back(AssetBuilderSDK::AssetBuilderPattern( AZStd::string::format("*.%s", RPI::ShaderSourceData::Extension), AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard)); shaderAssetBuilderDescriptor.m_busId = azrtti_typeid(); @@ -108,7 +108,7 @@ namespace AZ shaderVariantAssetBuilderDescriptor.m_name = "Shader Variant Asset Builder"; // Both "Shader Variant Asset Builder" and "Shader Asset Builder" produce ShaderVariantAsset products. If you update // ShaderVariantAsset you will need to update BOTH version numbers, not just "Shader Variant Asset Builder". - shaderVariantAssetBuilderDescriptor.m_version = 26; // [AZSL] Changing inlineConstant to rootConstant keyword work. + shaderVariantAssetBuilderDescriptor.m_version = 27; // The Build Time Stamp of ShaderAsset And ShaderVariantAsset Should Be Based On GetTimeUTCMilliSecond(). shaderVariantAssetBuilderDescriptor.m_patterns.push_back(AssetBuilderSDK::AssetBuilderPattern(AZStd::string::format("*.%s", RPI::ShaderVariantListSourceData::Extension), AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard)); shaderVariantAssetBuilderDescriptor.m_busId = azrtti_typeid(); shaderVariantAssetBuilderDescriptor.m_createJobFunction = AZStd::bind(&ShaderVariantAssetBuilder::CreateJobs, &m_shaderVariantAssetBuilder, AZStd::placeholders::_1, AZStd::placeholders::_2); diff --git a/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderAssetBuilder.cpp b/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderAssetBuilder.cpp index 89e202a4bc..e431b74282 100644 --- a/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderAssetBuilder.cpp +++ b/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderAssetBuilder.cpp @@ -162,7 +162,7 @@ namespace AZ // has the same value, because later the ShaderVariantTreeAsset job will fetch this value from the local ShaderAsset // which could cross platforms (i.e. building an android ShaderVariantTreeAsset on PC would fetch the tiemstamp from // the PC's ShaderAsset). - AZStd::sys_time_t shaderAssetBuildTimestamp = AZStd::GetTimeNowMicroSecond(); + AZ::u64 shaderAssetBuildTimestamp = AZStd::GetTimeUTCMilliSecond(); // Need to get the name of the azsl file from the .shader source asset, to be able to declare a dependency to SRG Layout Job. // and the macro options to preprocess. @@ -229,8 +229,8 @@ namespace AZ } // for all request.m_enabledPlatforms AZ_TracePrintf( - ShaderAssetBuilderName, "CreateJobs for %s took %llu microseconds", shaderAssetSourceFileFullPath.c_str(), - AZStd::GetTimeNowMicroSecond() - shaderAssetBuildTimestamp); + ShaderAssetBuilderName, "CreateJobs for %s took %llu milliseconds", shaderAssetSourceFileFullPath.c_str(), + AZStd::GetTimeUTCMilliSecond() - shaderAssetBuildTimestamp); response.m_result = AssetBuilderSDK::CreateJobsResultCode::Success; } @@ -355,8 +355,8 @@ namespace AZ return; } - // Get the time stamp string as sys_time_t, and also convert back to string to make sure it was converted correctly. - AZStd::sys_time_t shaderAssetBuildTimestamp = 0; + // Get the time stamp string as u64, and also convert back to string to make sure it was converted correctly. + AZ::u64 shaderAssetBuildTimestamp = 0; auto shaderAssetBuildTimestampIterator = request.m_jobDescription.m_jobParameters.find(ShaderAssetBuildTimestampParam); if (shaderAssetBuildTimestampIterator != request.m_jobDescription.m_jobParameters.end()) { diff --git a/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderVariantAssetBuilder.cpp b/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderVariantAssetBuilder.cpp index bb40baca7d..5eaa0d9ddb 100644 --- a/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderVariantAssetBuilder.cpp +++ b/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderVariantAssetBuilder.cpp @@ -765,7 +765,7 @@ namespace AZ return; } - const AZStd::sys_time_t shaderVariantAssetBuildTimestamp = AZStd::GetTimeNowMicroSecond(); + const AZ::u64 shaderVariantAssetBuildTimestamp = AZStd::GetTimeUTCMilliSecond(); auto supervariantList = ShaderBuilderUtility::GetSupervariantListFromShaderSourceData(shaderSourceDescriptor); diff --git a/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderVariantAssetBuilder.h b/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderVariantAssetBuilder.h index 2eaf1d9d8b..b0457656af 100644 --- a/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderVariantAssetBuilder.h +++ b/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderVariantAssetBuilder.h @@ -38,7 +38,7 @@ namespace AZ const AZStd::string& m_tempDirPath; //! Used to synchronize versions of the ShaderAsset and ShaderVariantAsset, //! especially during hot-reload. A (ShaderVariantAsset.timestamp) >= (ShaderAsset.timestamp). - const AZStd::sys_time_t m_assetBuildTimestamp; + const AZ::u64 m_assetBuildTimestamp; const RPI::ShaderSourceData& m_shaderSourceDataDescriptor; const RPI::ShaderOptionGroupLayout& m_shaderOptionGroupLayout; const MapOfStringToStageType& m_shaderEntryPoints; diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblenddistance.azshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblenddistance.azshader index 31fae5d98bb261ee35faac2489e4138379a5b952..a9b5567f6b19d075222ab9881cf3b3ff0aae7994 100644 GIT binary patch delta 197 zcmZp_%hGSXJF>B$A!A5q1tG&!~`R>+wZb~bi1Z&-jZvTS?i0X0UKX##$(JJmp7^1+Ru=81EeEc F5CH#RP;&qP delta 197 zcmZp_%hGCR;deEULvjXnnh1H;^}a@ir9Rat@<+5DZu3v==& z&pV^Cxm#z8>SXJF>B$A!A5q1tG&$DhZ@F6}v!P})Z&-jZvTS?i0X0X F1OVHsPiz1H diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblenddistance_dx12_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblenddistance_dx12_0.azshadervariant index 19e9fdfc8d23db9d1ac4b062b395258ab3eeb219..6d4b6d0fcafe1d8560e2f3087ef300047cdfb436 100644 GIT binary patch delta 36 scmX@)aL8eUnu5%=$Vy}Pv;HS`3MPMkv|*+d2Ll6Rt>EF)G7Jn103vG*;{X5v delta 36 rcmX@)aL8eUnu1KhjYUlhU%BbdWeI%yLVk@t2Ll7c+^=%kAwU`cBliut diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblenddistance_null_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblenddistance_null_0.azshadervariant index 43c4a615cf8f6719d802c538b340952a17738839..5d8800a6fe3f085a433044ce5befe9e60dd2c764 100644 GIT binary patch delta 36 scmaFH{ET_SDMp!Vk(I{oXZ=s?6ioj7Xv0h^4h9CsTEWAoWf&M304zxkHUIzs delta 36 rcmaFH{ET_SDMp!s8;hD2zH-x@%M$qZh5QxnJe7Lx3~@E!7ST diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblenddistance_vulkan_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblenddistance_vulkan_0.azshadervariant index 75f070a03eeb2ae0c9f4f2917e2ad8ba69a7ce42..930f7898c4f3489f042e62275da78b4618124577 100644 GIT binary patch delta 36 scmccTaL-|blY-2($Vy}Pv;HS`3MPMkv|*+d2Ll6Rt>EF)G7Jn104;Y8Hvj+t delta 36 rcmccTaL-|blY&gajYUlhU%BbdWeI%yLVk@t2Ll7c+^=%kAwU`cF9Qw@ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblendirradiance.azshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblendirradiance.azshader index 0025388bc13bae5830f46f3b79be2b4a3a0800ba..268020b431045dd424ae16fef2656c7fff34e431 100644 GIT binary patch delta 174 zcmdmdmu2%^mJNI?lRxedW@D@sJbW~AvpP!cIh4NxswME($tQ;E^j2&Z+_h8)S$|(kKR%Z!fWGjv=@^mZM zT+jMS4Z*&ry4g4A1T#k&pGkx9hvIpT41rHED7@iF{ySEFKkqitB04Q4yK>z>% delta 36 rcmX@*cFJvop0Z5AjYUlhU%BbdWeI%yLVk@t2Ll7c+^=$q!9W@SCz}nG diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblendirradiance_null_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblendirradiance_null_0.azshadervariant index 4a2b0e9944d9b41fe3c3c98f4c7607eebe0d3a2d..3253ddba376ea446e0dfb402ea83e1973fb71589 100644 GIT binary patch delta 36 scmaFH{ET_SDMp!Vk(I{oXZ=s?6ioj7Xv0h^4h9CsTEW9dBN-SN04*O5Z2$lO delta 36 rcmaFH{ET_SDMp!s8;hD2zH-x@%M$qZh5QxnJcJgMl;vEME=5 diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblendirradiance_vulkan_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblendirradiance_vulkan_0.azshadervariant index c053a7db199279cf7ef8929b0a12157414db2ec6..c38b94c4f1f7288e2c3fe0d1bf48d2d471c17763 100644 GIT binary patch delta 36 scmbQ_H_30qH#M1Sk(I{oXZ=s?6ioj7Xv0h^4h9CsTEW9dBN-SN05iP~tN;K2 delta 36 rcmbQ_H_30qH#M1p8;hD2zH-x@%M$qZh5QxnJcJgMl;vGW`w! diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdatecolumn.azshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdatecolumn.azshader index c507b125634fdfcdfb749d15380513cc8527c5f8..5c46d368cef5f778fecab7a7abe845a3df753804 100644 GIT binary patch delta 196 zcmdmgopJwl#tnijlGh?Djor`spV%pw{Q1#_nN}PO42-pchYxXV)?x`_Wb^Y6cTP&4 zT&Sm1U7JRB;P+NH$nUVjm_sp Ltpz9dXBz+js5DEj delta 196 zcmdmgopJwl#tnijk_9&wH7$JQraPA<@a+rvHToP33=DI>%6V+sti=+<$d=*~kX_*Tco-;ixM6WGAPp(3%Vrd26v{pRzc K)`FA!vkd@nK1;#? diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdatecolumn_dx12_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdatecolumn_dx12_0.azshadervariant index f60c7135977ac8215b5c78551c6f716448afb590..eb6938f8c9c8c853e2d0c06160096440aa8357fa 100644 GIT binary patch delta 36 rcmZ3byh?dPpPEE9K$-yn9)JzC delta 36 rcmZ3byh?dPpP)>^jYUlhU%BbdWeI%yLVk@t2Ll7c+^=#Tn}9R`AyN(F diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdatecolumn_null_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdatecolumn_null_0.azshadervariant index 3e810bcfb51b320702134c14db816f744549bb72..8c83c1e3ff64da49fc860a44915cbb4b8a233482 100644 GIT binary patch delta 36 rcmaFH{ET_SDMp!Vk(I{oXZ=s?6ioj7Xv0h^4h9CsTEWAIfHVUDE6ffV delta 36 rcmaFH{ET_SDMp!s8;hD2zH-x@%M$qZh5QxnJcxHUVh>E}jlY diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdatecolumn_vulkan_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdatecolumn_vulkan_0.azshadervariant index 5918f277b577ebd0685c1b784ad68aa7808ff1fc..2fbb9ffffee14a3a04cb4c7cd6be8cae358e5e64 100644 GIT binary patch delta 36 rcmeAb?G@cn$R%?vveMZ7tpACfg2|sBZJ24r!N9;+D|q-2kY)e?4uuUn delta 36 rcmeAb?G@cn$R$&7V^Pz>S8lp!);e#7&4E$Yf}4XqGhuds i6`l+{$~t*fz&B*WP6jq`aD3SJd7a(WeF;Eq*@6JVT0(UI delta 190 zcmdmUopH}~#tnQdk_9&wH7$JQraPA<@a+rvHToP33=DI>%KL8Etj-d|$mZf)5a8#s zxt{eC8-o3eb#tuHZYGW?hYXJzOPt-jSwS>F7%Dxvo>h7COpWs} ytQJ)>Yz~aF7Tg@{nF+H4tng&uQP#<;0=^*|b~3PmgJVJ1e5;nffro(FvIPN{x<`xv diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdaterow_dx12_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdaterow_dx12_0.azshadervariant index d38d779696b13c4fd7f5d21a534e2003d99c0abf..4bdbdddf334d634467a889a476ef3c6f474762ec 100644 GIT binary patch delta 36 scmeyQ_(^fYH36Axk(I{oXZ=s?6ioj7Xv0h^4h9CsTEWB5`4|`&06P;7vj6}9 delta 36 rcmeyQ_(^fYH36A|8;hD2zH-x@%M$qZh5QxnJddHvnk>Ju42n diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdaterow_null_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdaterow_null_0.azshadervariant index 6d7a604701b9a849b2be3939000072f11beb9371..77668a24503e7aedabd91d13903db31149c4c835 100644 GIT binary patch delta 36 scmaFH{ET_SDMp!Vk(I{oXZ=s?6ioj7Xv0h^4h9CsTEWB5`4|`&04$vjL;wH) delta 36 rcmaFH{ET_SDMp!s8;hD2zH-x@%M$qZh5QxnJddHvnk>F0~Fz diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdaterow_vulkan_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdaterow_vulkan_0.azshadervariant index dee941cfae644d19cb161c0826cae0801f7b7d54..fb3dd771caf01ab5c24094232f627f6568550a80 100644 GIT binary patch delta 36 scmZ1{xK41xBo3Ktk(I{oXZ=s?6ioj7Xv0h^4h9CsTEWB5`4|`&02>btzW@LL delta 36 rcmZ1{xK41xBo3K^8;hD2zH-x@%M$qZh5QxnJddHvnk>9VZRO diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridclassification.azshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridclassification.azshader index e2e0fa90f5cb67db90fc3022210ada280ffb5e2f..eda8d533767910a172d89f101652e0ca7879c702 100644 GIT binary patch delta 195 zcmX?clI6rnmJPftlGh?Djor`spV%pw{Q1#_nN}PO42-pchwnbxti}?=$d>2mni%3d zd1JTgW&`aomC5tFq$i7LeMA+Xrp{re85+GuOnmd^b3p;ZP}$8JyQ@_;&+p=a83Pp9 ztj;&}b6$Nzwqx(>8R{HqnfE?DKgQ(; I(w8j=0H3K(AOHXW delta 195 zcmX?clI6rnmJPftk_9&wH7$JQraPA<@a+rvHToP33=DI>%IoTHR$~cbWGl$`^smUC zys=w#vw?P)%H;W7(vwBBKB9_GQ|H)q_Lo9tf^OXAb3p;ZP}$8JyQ@_;&+p=a83Pp9 zta=5o7b>u$ejt0004f5yRc$0000kGY<{` delta 36 rcmbPcFwJ1YFL9ZI8;hD2zH-x@%M$qZh5QxnJdV^?@`1Dv1rM diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridclassification_null_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridclassification_null_0.azshadervariant index 43408b26f3c17afb2a726971c1fad38f24d2fd42..f2458e692b5673dc5a2aaf5f94b5f182c0f09097 100644 GIT binary patch delta 36 ucmV+<0NelO1Lgy;$^jhKS$Q)@%}>a=5o7b>u$ejt0004f5yRc$0000lyAKWk delta 36 rcmaFH{ET_SDMp!s8;hD2zH-x@%M$qZh5QxnJdV^?@`1ED;T= diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridclassification_vulkan_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridclassification_vulkan_0.azshadervariant index 877085446de04b3f129ebb6273698e848ee45de7..0e08e84f74b293a4499b78c9ebef97564cd11777 100644 GIT binary patch delta 36 scmaE)_DF4mo3PBa$Vy}Pv;HS`3MPMkv|*+d2Ll6Rt>EFij~Eyj04fg-+5i9m delta 36 rcmaE)_DF4mo3Kp5jYUlhU%BbdWeI%yLVk@t2Ll7c+^_Pw`al{0CS?tF diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing.azshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing.azshader index 2c403c77f88b4e7213022796f694f866ba71160a..1cea4860a113c2b0f46cc9dd25931dc36f7130ab 100644 GIT binary patch delta 74 zcmV-Q0JZ;=)(Di=2(S$Vmmy*S69xf&5yQg}vnB-HrU*C=veu-YWTvwVt1h?*3a^bH gf3XRNw?Sh8J+}y}r+$CtGNcK!=c`^2m*gq}FgBDO^8f$< delta 88 zcmV-e0H^( diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing_dx12_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing_dx12_0.azshadervariant index 4bcc47ee43a6bcc8c2b33f451d22a0b963981210..5605a47e9cb0dfd9223151cdce9e306852f730c4 100644 GIT binary patch delta 10619 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 a3p+j!k^iUH^!_vo1QE7`w6@|qBL5E)baG|@ delta 10489 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 diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing_null_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing_null_0.azshadervariant index f173416210a73847b2e552a0e2bdab355186d34b..15f3477cb5fc4baa7b937e388fc14ec277210841 100644 GIT binary patch delta 36 scmaFH{ET_SDMp!Vk(I{oXZ=s?6ioj7Xv0h^4h9CsTEWAI1sE6@04wnhA^-pY delta 36 rcmaFH{ET_SDMp!s8;hD2zH-x@%M$qZh5QwSD#V%|IFeF6s_h diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing_vulkan_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing_vulkan_0.azshadervariant index 0eb04a25b814a01e4f4fcc3fcdc1506ad4eec5d8..c2bcd4ab07c8321b12d204a54ca52efa71d5e175 100644 GIT binary patch literal 34600 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%0AmO9S^Hh#js) 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 delta 93 zcmV-j0HXh%)(D=~2(T9f8F1L5f}!e0Eu92W?dTt@F9-kt0IruAtJuV*Uu diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit_dx12_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit_dx12_0.azshadervariant index 93cfb4781977a009b6b4aa6ca9c5baacdcf9a5e4..fbd1d902517b8c614396ab7b502495eb9b881f07 100644 GIT binary patch delta 36 scmZ3Mwk&M}m$A&X$Vy}Pv;HS`3MPMkv|*+d2Ll6Rt>EFKdJGH<03+KC`Tzg` delta 36 rcmZ3Mwk&M}m$6L2jYUlhU%BbdWeI%yLVk@t2Ll7cy6KXuZvkllCT$Kl diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit_null_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit_null_0.azshadervariant index 4a16e24211faaa39226db82f9bd88979700313f2..483be0eceb86381caef4e4ee7ec0e1622febdc23 100644 GIT binary patch delta 36 scmaFH{ET_SDMp!Vk(I{oXZ=s?6ioj7Xv0h^4h9CsTEW9d^%xi!04#G3LI3~& delta 36 rcmaFH{ET_SDMp!s8;hD2zH-x@%M$qZh5Qb<-tR-vZJAF9i;O diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit_vulkan_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit_vulkan_0.azshadervariant index df52c9c8d28c576b1905f49c9f898491ecad94aa..530eef2f102873570848ef8ead9ace35c905822e 100644 GIT binary patch delta 35 rcmbQEHAicKsLZv5{8&0cijV+6{C7 diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss.azshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss.azshader index d95fd5b3b2bccd1f9153241ab9ac8bfa7dad6a3b..eddac4e2bd277eab358b589f4f556eb13486257c 100644 GIT binary patch delta 93 zcmV-j0HXhx)(Du^2(S?Z8P-{OGe^x&$hi??^Ww0XItTy&0eum}ze%$y1l^_xvFp}( z)U&c1vk$8-xCm#GqG{YrTsgDqt6vbeq;mn@rU;ux>)#HQRH?J;t6mV7=qds*&Gjp8 delta 93 zcmV-j0HXhx)(Du^2(S?Z8F1L5f}!e0Eu92W?dTt@F9-kt0IiRAaul;F1l^_x>)U=w zi30W4vk$8-xCo=LjNbjA(ZsXrt6vbeq;mn@rU<{9 delta 36 rcmX??elC5(CS#d`8;hD2zH-x@%M$qZh5Qwf*HqB0w4dL%0rz diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss_null_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss_null_0.azshadervariant index 40e18c215c93079ffdbe3931f9df13c625ef5468..527b42569a3e6556bc398f8232b5ed49dd11b29c 100644 GIT binary patch delta 36 scmaFH{ET_SDMp!Vk(I{oXZ=s?6ioj7Xv0h^4h9CsTEWBnJsB7n04%`{R{#J2 delta 36 rcmaFH{ET_SDMp!s8;hD2zH-x@%M$qZh5Qwf*HqB0w4dEW{1g diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss_vulkan_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss_vulkan_0.azshadervariant index 34761ccf98ae556858256ecf25608fd87d6c67ed..426d9559385e16ad59d7124796ed2f712b0f7a3f 100644 GIT binary patch delta 36 scmexk_{VU=0|}XHk(I{oXZ=s?6ioj7Xv0h^4h9CsTEWBnJsB7n07O|23;+NC delta 36 rcmexk_{VU=0|}Xe8;hD2zH-x@%M$qZh5Qwf*HqB0w4dL|hJw diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrelocation.azshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrelocation.azshader index c19020dc84df5e5bf3c02c1496d86967dce3966c..08ed61ab03bc60c102e2fc65e020bd69f1e85358 100644 GIT binary patch delta 193 zcmeBp$kOqUWdkRRdtd{JfJV zCwx`hETikEHo1C&^kf#DkEr64G&xk1mkK^x{>*ywwy*$UWZ88S{nR#BPvAi@YTZPj z7KT@cKFwmuzq&aw+(vM7%b84=lFbQU3)Lp4eE9}72gu*5$uWO@bf{N)U($A2dB$u( E02+)=ApigX delta 193 zcmeBp$kOqUWdkRRWWkL^O$%SS>CR;deEULvjXnnh1H;^}ay|Z=l~{rp+0p`2T?@-5 zCwx`hETikEHo1C&^kf#DkEr64G&yYNid3BRnrOIrTUdZFvh2EverlVmC-9&cwQeF% zi=&Ka{D%6V- diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrelocation_dx12_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrelocation_dx12_0.azshadervariant index a7d44b55413ad60e422335b85570eae7f8ef57ad..d1012a896f24d3fa8b0caf6aae6aaa1ff82c9b6a 100644 GIT binary patch delta 36 scmaE7_s(uZki5*b$Vy}Pv;HS`3MPMkv|*+d2Ll6Rt>ED+5)2Fs05d)gX8-^I delta 36 rcmaE7_s(uZki1O6jYUlhU%BbdWeI%yLVk@t2Ll7c+^=#y{y-W4H9ihh diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrelocation_null_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrelocation_null_0.azshadervariant index 82e00652163427427f0e363c96a18d7135e11918..cb730be1df5626572cc2940e80934ad279099492 100644 GIT binary patch delta 36 scmaFH{ET_SDMp!Vk(I{oXZ=s?6ioj7Xv0h^4h9CsTEW9tBp4VN04!z>I{*Lx delta 36 rcmaFH{ET_SDMp!s8;hD2zH-x@%M$qZh5QxnJda{DCw8E@loW diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrelocation_vulkan_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrelocation_vulkan_0.azshadervariant index 20b81aee6c30ce6f6956ad4c8c50292b00350df7..b58af4c47357850ecf7ba75411a1051a27ff713f 100644 GIT binary patch delta 36 scmaFl`N(s_F%_9>k(I{oXZ=s?6ioj7Xv0h^4h9CsTEW9tBp4VN06~Nf-T(jq delta 36 rcmaFl`N(s_F%_AD8;hD2zH-x@%M$qZh5QxnJda{DCw8Lxc{? diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender.azshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender.azshader index aec2786540c6611090a7e2ed7a270939a8fc40a6..56009d56abb497027e6d3aea639d3d232d0799b2 100644 GIT binary patch delta 7273 zcmeHLeQZ-z6zANP^47s7N`}Omor<;ehm^66d1!B~~8pEmc-}3Tjpc-)2c?}kesEZrK?shroHPuN(s(>A7l|H8;wUuB1_OeA2@t%3nT{| zf?AubeU*e$$Hp;AWtOC*{%VdcDM*G9Vr*Se`J1noEH5mnSjobdVfhGFfd^^DRLbbR z$`EbDeP1~%%VVM5A$mD4$H<511F3;dFpMUk6>93>Eug=+XEKR*6#S?ikSxMB;IVu( z=xE&RF#&aGJlg9RN1IlJXhTn$)X1a%w}<#!lG@(ReoS=-K`VtjSq=mjk5ycT3j?IX3Mh+S@2un=Fj?R2=YV)Q$-gspxR?Q)a zzQk!;IECPBe#JPoebn|*+h-9MY#(&Bf>+s(JgqvOhxQ^EOf9!lkwN={0IKJ-!&q8z zXdXmib~|JY0H#dQkzNz5o-|^_Gbdox0F%Jp-<<-hr;`-ZibM_S&yca$@>67tfsA>rHWHI7C#k5_Mh37wI^6%#j$*^HJ7@N_B*juR^-2gaN5>72B)S# zB<6K6U%rL;O6LiV{|G!ID)cF!p`*KEMW-VQ2uz%Ib%=1g8#;+Xd^SHkUAX!u6l%EI znz@Ah}Q@)z7lOEsJ9RmH6LZvoCjd0 z^`2_>nUtP^6*-LOXv=^CdCmR}>9C@R=x~2ipD_Ob#EV8|EcU_^?5o}j9|RpHkTUu4 zryZ~$@JJnxzs<~U?t}&=sP{0ENPq}z+ts(_+9M2>@;{c=7q*F3Hy7}pDJ+@tPx_3G z9Rwo|%VIk%f10qkEaO`Cc_3Z1KakENKZ8W0<4Ms$%!#L#<^+6px3s=Fg}5b`49f2@ z(I&5GGd3~o`7uqv1nbz(KR*Bh`N_H_= zv=0g)hGvJyvh90sk?F#neb6;jrjkA?jre`*wY!e{RMNO+o9E({a~YvjQXq5F$C;rwONnJN@lldnOAE0v*@*k;=!&CsfFCF9Y516N!Su0-l? zAw#$yS|M9WU;T3oUM_X)mI<={{FX}P{o7RD>i#oH$Kku|7Ru`> crA=%%eKUretY`6 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 delta 36 rcmX@ha+YO-A(KqOjYUlhU%BbdWeI%yLVk@t2Ll7cnh*RdlYuk<7Do+? diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender_vulkan_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender_vulkan_0.azshadervariant index c819e57c4c029d3645581a08520aca7ccbfd19ee..47789d9b9bd602bf760bf076fe039860dbfd562b 100644 GIT binary patch delta 84 zcmV-a0IUC{umPp80kB2^2)aQPtJ5ia=5o7b>u$ejt0004f5yQ~h0001x6d>UM delta 84 zcmZ3wfpO^u#tm+a9M{AG-v;wq)ou1;?BQY*+I*XP8V|>vRaT4jbawep_G6UXJW0Zy o2Pkn##oSn?;Krh+g|FOn=duL8eIdU_pM!ycVa*5rmB~OF058KHZvX%Q diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Edit/Shader/ShaderVariantAssetCreator.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Edit/Shader/ShaderVariantAssetCreator.h index fd069f21e0..488bfb09f8 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Edit/Shader/ShaderVariantAssetCreator.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Edit/Shader/ShaderVariantAssetCreator.h @@ -40,7 +40,7 @@ namespace AZ //! Set the timestamp value when the ProcessJob() started. //! This is needed to synchronize between the ShaderAsset and ShaderVariantAsset when hot-reloading shaders. //! The idea is that this timestamp must be greater or equal than the ShaderAsset. - void SetBuildTimestamp(AZStd::sys_time_t buildTimestamp); + void SetBuildTimestamp(AZ::u64 buildTimestamp); //! Assigns a shaderStageFunction, which contains the byte code, to the slot dictated by the shader stage. void SetShaderFunction(RHI::ShaderStage shaderStage, RHI::Ptr shaderStageFunction); diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderAsset.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderAsset.h index c5df9a4b51..5dc990d93a 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderAsset.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderAsset.h @@ -294,7 +294,7 @@ namespace AZ Name m_drawListName; //! Use to synchronize versions of the ShaderAsset and ShaderVariantTreeAsset, especially during hot-reload. - AZStd::sys_time_t m_shaderAssetBuildTimestamp = 0; + AZ::u64 m_shaderAssetBuildTimestamp = 0; /////////////////////////////////////////////////////////////////// diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderVariantAsset.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderVariantAsset.h index 66bbd7b188..5146ae370a 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderVariantAsset.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderVariantAsset.h @@ -61,7 +61,7 @@ namespace AZ //! Return the timestamp when this asset was built, and it must be >= than the timestamp of the main ShaderAsset. //! This is used to synchronize versions of the ShaderAsset and ShaderVariantAsset, especially during hot-reload. - AZStd::sys_time_t GetBuildTimestamp() const; + AZ::u64 GetBuildTimestamp() const; bool IsRootVariant() const { return m_stableId == RPI::RootShaderVariantStableId; } @@ -80,7 +80,7 @@ namespace AZ AZStd::array, RHI::ShaderStageCount> m_functionsByStage; //! Used to synchronize versions of the ShaderAsset and ShaderVariantAsset, especially during hot-reload. - AZStd::sys_time_t m_buildTimestamp = 0; + AZ::u64 m_buildTimestamp = 0; }; class ShaderVariantAssetHandler final diff --git a/Gems/Atom/RPI/Code/Source/RPI.Edit/Shader/ShaderVariantAssetCreator.cpp b/Gems/Atom/RPI/Code/Source/RPI.Edit/Shader/ShaderVariantAssetCreator.cpp index e0e83cfce2..5b32edc0bf 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Edit/Shader/ShaderVariantAssetCreator.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Edit/Shader/ShaderVariantAssetCreator.cpp @@ -92,7 +92,7 @@ namespace AZ ///////////////////////////////////////////////////////////////////// // Methods for all shader variant types - void ShaderVariantAssetCreator::SetBuildTimestamp(AZStd::sys_time_t buildTimestamp) + void ShaderVariantAssetCreator::SetBuildTimestamp(AZ::u64 buildTimestamp) { if (ValidateIsReady()) { diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/Shader.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/Shader.cpp index a2d91fefd6..7dbeac7098 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/Shader.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/Shader.cpp @@ -202,17 +202,17 @@ namespace AZ return; } AZ_Assert(m_asset->m_shaderAssetBuildTimestamp == m_reloadedRootShaderVariantAsset->GetBuildTimestamp(), - "shaderAsset timeStamp=%lld, but Root ShaderVariantAsset timeStamp=%lld", + "shaderAsset '%s' timeStamp=%lld, but Root ShaderVariantAsset timeStamp=%lld", m_asset.GetHint().c_str(), m_asset->m_shaderAssetBuildTimestamp, m_reloadedRootShaderVariantAsset->GetBuildTimestamp()); m_asset->UpdateRootShaderVariantAsset(m_supervariantIndex, m_reloadedRootShaderVariantAsset); m_reloadedRootShaderVariantAsset = {}; // Clear the temporary reference. if (ShaderReloadDebugTracker::IsEnabled()) { - auto makeTimeString = [](AZStd::sys_time_t timestamp, AZStd::sys_time_t now) + auto makeTimeString = [](AZ::u64 timestamp, AZ::u64 now) { - AZStd::sys_time_t elapsedMicroseconds = now - timestamp; - double elapsedSeconds = aznumeric_cast(elapsedMicroseconds / 1'000'000); + AZ::u64 elapsedMillis = now - timestamp; + double elapsedSeconds = aznumeric_cast(elapsedMillis / 1'000); AZStd::string timeString = AZStd::string::format("%lld (%f seconds ago)", timestamp, elapsedSeconds); return timeString; }; diff --git a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderVariantAsset.cpp b/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderVariantAsset.cpp index 442fc6a79f..ec1a65a6d5 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderVariantAsset.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderVariantAsset.cpp @@ -60,7 +60,7 @@ namespace AZ } } - AZStd::sys_time_t ShaderVariantAsset::GetBuildTimestamp() const + AZ::u64 ShaderVariantAsset::GetBuildTimestamp() const { return m_buildTimestamp; }