MaterialScreenshotTests.bv.lua 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308
  1. ----------------------------------------------------------------------------------------------------
  2. --
  3. -- Copyright (c) Contributors to the Open 3D Engine Project.
  4. -- For complete copyright and license terms please see the LICENSE at the root of this distribution.
  5. --
  6. -- SPDX-License-Identifier: Apache-2.0 OR MIT
  7. --
  8. --
  9. --
  10. ----------------------------------------------------------------------------------------------------
  11. RunScript("scripts/TestEnvironment.luac")
  12. g_shaderballModel = 'materialeditor/viewportmodels/shaderball.fbx.azmodel'
  13. g_cubeModel = 'materialeditor/viewportmodels/cube.fbx.azmodel'
  14. g_beveledCubeModel = 'materialeditor/viewportmodels/beveledcube.fbx.azmodel'
  15. g_modelWithoutLayerMask = 'objects/bunny.fbx.azmodel'
  16. g_modelWithLayerMask = 'testdata/objects/paintedplane.fbx.azmodel'
  17. g_modelHermanubis = 'materialeditor/viewportmodels/hermanubis.fbx.azmodel'
  18. g_modelTube = 'testdata/objects/tube.fbx.azmodel'
  19. g_modelGrass = 'objects/grass_tile_large.fbx.azmodel'
  20. g_reflectionProbe = 'models/reflectionprobesphere.fbx.azmodel'
  21. function GenerateMaterialScreenshot(imageComparisonThresholdLevel, materialName, options)
  22. if options == nil then options = {} end
  23. if not (type(options.model) == "string") then
  24. options.model = g_shaderballModel
  25. end
  26. if not (type(options.cameraPitch) == "number") then
  27. options.cameraPitch = 20
  28. end
  29. if not (type(options.cameraHeading) == "number") then
  30. options.cameraHeading = -30
  31. end
  32. if not (type(options.cameraDistance) == "number") then
  33. options.cameraDistance = 2.0
  34. end
  35. if not (type(options.cameraZ) == "number") then
  36. options.cameraZ = 0.0
  37. end
  38. if not (type(options.screenshotFilename) == "string") then
  39. options.screenshotFilename = materialName
  40. end
  41. if not (type(options.showGroundPlane) == "boolean") then
  42. options.showGroundPlane = false
  43. end
  44. Print("Generating material screenshot for " .. materialName)
  45. Print("MODEL: " .. options.model)
  46. materialName = string.lower(materialName)
  47. SetImguiValue('Models/##Available', options.model)
  48. SetImguiValue('Materials/##Available', g_testMaterialsFolder .. materialName .. '.azmaterial')
  49. if (options.lighting ~= nil) then
  50. SetImguiValue('Lighting Preset##SampleBase/' .. options.lighting, true)
  51. else
  52. SetImguiValue('Lighting Preset##SampleBase/Neutral Urban (Alt)', true)
  53. end
  54. SetImguiValue('Show Ground Plane', options.showGroundPlane)
  55. -- The sample resets the camera position after loading the model and we need to
  56. -- make sure that happens before moving the camera below
  57. IdleFrames(1)
  58. ArcBallCameraController_SetHeading(DegToRad(options.cameraHeading))
  59. ArcBallCameraController_SetPitch(DegToRad(-options.cameraPitch))
  60. ArcBallCameraController_SetDistance(options.cameraDistance)
  61. ArcBallCameraController_SetPan(Vector3(0.0, 0.0, options.cameraZ))
  62. -- Give some extra frames for the textures to finish streaming in.
  63. IdleFrames(10)
  64. options.screenshotFilename = string.lower(options.screenshotFilename)
  65. if type(options.uniqueSuffix) == "string" then
  66. filename = g_testCaseFolder .. '/' .. options.screenshotFilename .. '.' .. options.uniqueSuffix .. '.png'
  67. else
  68. filename = g_testCaseFolder .. '/' .. options.screenshotFilename .. '.png'
  69. end
  70. SelectImageComparisonToleranceLevel(imageComparisonThresholdLevel)
  71. CaptureScreenshot(filename)
  72. end
  73. OpenSample('RPI/Mesh')
  74. ResizeViewport(999, 999)
  75. -- This is just quick regression test for a crash that happened when turning on the ground plane with no model
  76. SetImguiValue('Show Ground Plane', true)
  77. IdleFrames(1)
  78. SetImguiValue('Show Ground Plane', false)
  79. ----------------------------------------------------------------------
  80. -- StandardPBR Materials...
  81. g_testMaterialsFolder = 'testdata/materials/standardpbrtestcases/'
  82. g_testCaseFolder = 'StandardPBR'
  83. Print('Saving screenshots to ' .. NormalizePath(g_screenshotOutputFolder .. g_testCaseFolder))
  84. GenerateMaterialScreenshot('Level C', '001_DefaultWhite')
  85. GenerateMaterialScreenshot('Level G', '002_BaseColorLerp')
  86. GenerateMaterialScreenshot('Level H', '002_BaseColorLinearLight')
  87. GenerateMaterialScreenshot('Level G', '002_BaseColorMultiply')
  88. GenerateMaterialScreenshot('Level E', '003_MetalMatte')
  89. GenerateMaterialScreenshot('Level F', '003_MetalPolished')
  90. GenerateMaterialScreenshot('Level E', '004_MetalMap')
  91. GenerateMaterialScreenshot('Level E', '005_RoughnessMap')
  92. GenerateMaterialScreenshot('Level E', '006_SpecularF0Map')
  93. GenerateMaterialScreenshot('Level D', '007_MultiscatteringCompensationOff')
  94. GenerateMaterialScreenshot('Level D', '007_MultiscatteringCompensationOn')
  95. GenerateMaterialScreenshot('Level H', '008_NormalMap')
  96. GenerateMaterialScreenshot('Level E', '008_NormalMap_Bevels')
  97. GenerateMaterialScreenshot('Level F', '009_Opacity_Blended', {lighting="Neutral Urban", model=g_beveledCubeModel})
  98. GenerateMaterialScreenshot('Level F', '009_Opacity_Blended_Alpha_Affects_Specular', {lighting="Neutral Urban", model=g_beveledCubeModel})
  99. GenerateMaterialScreenshot('Level H', '009_Opacity_Cutout_PackedAlpha_DoubleSided', {lighting="Neutral Urban", model=g_beveledCubeModel})
  100. GenerateMaterialScreenshot('Level H', '009_Opacity_Cutout_SplitAlpha_DoubleSided', {lighting="Neutral Urban", model=g_beveledCubeModel})
  101. GenerateMaterialScreenshot('Level G', '009_Opacity_Cutout_SplitAlpha_SingleSided', {lighting="Neutral Urban", model=g_beveledCubeModel})
  102. GenerateMaterialScreenshot('Level F', '009_Opacity_Opaque_DoubleSided', {lighting="Neutral Urban", model=g_modelTube, cameraDistance=4.0, cameraPitch=45.0})
  103. GenerateMaterialScreenshot('Level F', '009_Opacity_TintedTransparent', {lighting="Neutral Urban", model=g_beveledCubeModel})
  104. GenerateMaterialScreenshot('Level H', '010_AmbientOcclusion', {lighting="Palermo Sidewalk (Alt)"})
  105. GenerateMaterialScreenshot('Level G', '010_SpecularOcclusion', {lighting="Palermo Sidewalk (Alt)"})
  106. GenerateMaterialScreenshot('Level G', '010_BothOcclusion', {lighting="Palermo Sidewalk (Alt)"})
  107. GenerateMaterialScreenshot('Level G', '011_Emissive')
  108. GenerateMaterialScreenshot('Level I', '012_Parallax_POM', {model=g_cubeModel, cameraHeading=-35.0, cameraPitch=35.0})
  109. GenerateMaterialScreenshot('Level I', '012_Parallax_POM_Cutout', {model=g_cubeModel, cameraHeading=-130.0, cameraPitch=35.0, cameraDistance=3.5, lighting="Goegap (Alt)", showGroundPlane=true})
  110. GenerateMaterialScreenshot('Level I', '013_SpecularAA_Off', {lighting="Test"})
  111. GenerateMaterialScreenshot('Level J', '013_SpecularAA_On', {lighting="Test"})
  112. GenerateMaterialScreenshot('Level G', '014_ClearCoat', {lighting="Neutral Urban"})
  113. GenerateMaterialScreenshot('Level H', '014_ClearCoat_NormalMap', {lighting="Neutral Urban"})
  114. GenerateMaterialScreenshot('Level H', '014_ClearCoat_NormalMap_2ndUv', {lighting="Neutral Urban"})
  115. GenerateMaterialScreenshot('Level F', '014_ClearCoat_RoughnessMap', {lighting="Neutral Urban"})
  116. GenerateMaterialScreenshot('Level F', '015_SubsurfaceScattering', {lighting="Test", cameraHeading = 45.0, cameraPitch=30.0, cameraDistance=1.5})
  117. GenerateMaterialScreenshot('Level D', '015_SubsurfaceScattering_Transmission', {lighting="Test", cameraHeading = 45.0, cameraPitch=-30.0, cameraDistance=1.5})
  118. GenerateMaterialScreenshot('Level E', '015_SubsurfaceScattering_Transmission_Thin', {model=g_modelGrass, lighting="Goegap (Alt)", cameraHeading = -150.0, cameraPitch=5.0, cameraDistance=1.5})
  119. GenerateMaterialScreenshot('Level I', '100_UvTiling_AmbientOcclusion')
  120. GenerateMaterialScreenshot('Level I', '100_UvTiling_BaseColor')
  121. GenerateMaterialScreenshot('Level I', '100_UvTiling_Emissive')
  122. GenerateMaterialScreenshot('Level H', '100_UvTiling_Metallic')
  123. GenerateMaterialScreenshot('Level I', '100_UvTiling_Normal')
  124. GenerateMaterialScreenshot('Level G', '100_UvTiling_Normal_Dome_Rotate20', {model=g_cubeModel, lighting="Test", cameraHeading=225.0})
  125. GenerateMaterialScreenshot('Level G', '100_UvTiling_Normal_Dome_Rotate90', {model=g_cubeModel, lighting="Test", cameraHeading=225.0})
  126. GenerateMaterialScreenshot('Level G', '100_UvTiling_Normal_Dome_ScaleOnlyU', {model=g_cubeModel, lighting="Test", cameraHeading=225.0})
  127. GenerateMaterialScreenshot('Level G', '100_UvTiling_Normal_Dome_ScaleOnlyV', {model=g_cubeModel, lighting="Test", cameraHeading=225.0})
  128. GenerateMaterialScreenshot('Level G', '100_UvTiling_Normal_Dome_ScaleUniform', {model=g_cubeModel, lighting="Test", cameraHeading=225.0})
  129. GenerateMaterialScreenshot('Level G', '100_UvTiling_Normal_Dome_TransformAll', {model=g_cubeModel, lighting="Test", cameraHeading=225.0})
  130. GenerateMaterialScreenshot('Level M', '100_UvTiling_Opacity', { lighting="Neutral Urban" })
  131. GenerateMaterialScreenshot('Level L', '100_UvTiling_Parallax_A', { uniqueSuffix="Angle1", model=g_cubeModel, cameraHeading=35.0, cameraPitch=35.0 })
  132. GenerateMaterialScreenshot('Level M', '100_UvTiling_Parallax_A', { uniqueSuffix="Angle2", model=g_cubeModel, cameraHeading=125.0, cameraPitch=35.0 })
  133. GenerateMaterialScreenshot('Level L', '100_UvTiling_Parallax_B', { uniqueSuffix="Angle1", model=g_cubeModel, cameraHeading=0.0, cameraPitch=45.0 })
  134. GenerateMaterialScreenshot('Level L', '100_UvTiling_Parallax_B', { uniqueSuffix="Angle2", model=g_cubeModel, cameraHeading=90.0, cameraPitch=45.0 })
  135. GenerateMaterialScreenshot('Level H', '100_UvTiling_Roughness')
  136. GenerateMaterialScreenshot('Level F', '100_UvTiling_SpecularF0')
  137. GenerateMaterialScreenshot('Level F', '101_DetailMaps_BaseNoDetailMaps', {model=g_modelHermanubis, lighting="Blouberg Sunrise 1 (Alt)", cameraHeading=175.0, cameraPitch=5.0, cameraDistance=0.75, cameraZ=0.5})
  138. GenerateMaterialScreenshot('Level H', '102_DetailMaps_All', {model=g_modelHermanubis, lighting="Blouberg Sunrise 1 (Alt)", cameraHeading=175.0, cameraPitch=5.0, cameraDistance=0.75, cameraZ=0.5})
  139. GenerateMaterialScreenshot('Level G', '103_DetailMaps_BaseColor', {model=g_modelHermanubis, lighting="Blouberg Sunrise 1 (Alt)", cameraHeading=175.0, cameraPitch=5.0, cameraDistance=0.75, cameraZ=0.5})
  140. GenerateMaterialScreenshot('Level G', '103_DetailMaps_BaseColorWithMask', {model=g_modelHermanubis, lighting="Blouberg Sunrise 1 (Alt)", cameraHeading=175.0, cameraPitch=5.0, cameraDistance=0.75, cameraZ=0.5})
  141. GenerateMaterialScreenshot('Level H', '104_DetailMaps_Normal', {model=g_modelHermanubis, lighting="Blouberg Sunrise 1 (Alt)", cameraHeading=175.0, cameraPitch=5.0, cameraDistance=0.75, cameraZ=0.5})
  142. GenerateMaterialScreenshot('Level H', '104_DetailMaps_NormalWithMask', {model=g_modelHermanubis, lighting="Blouberg Sunrise 1 (Alt)", cameraHeading=175.0, cameraPitch=5.0, cameraDistance=0.75, cameraZ=0.5})
  143. GenerateMaterialScreenshot('Level H', '105_DetailMaps_BlendMaskUsingDetailUVs', {model=g_modelHermanubis, lighting="Blouberg Sunrise 1 (Alt)", cameraHeading=175.0, cameraPitch=5.0, cameraDistance=0.75, cameraZ=0.5})
  144. ----------------------------------------------------------------------
  145. -- Reflection Probe Material...
  146. g_testMaterialsFolder = 'materials/reflectionprobe/'
  147. g_testCaseFolder = 'ReflectionProbe'
  148. Print('Saving screenshots to ' .. NormalizePath(g_screenshotOutputFolder .. g_testCaseFolder))
  149. GenerateMaterialScreenshot('Level E', 'ReflectionProbeVisualization', {lighting="Neutral Urban", model=g_reflectionProbe})
  150. ----------------------------------------------------------------------
  151. -- StandardMultilayerPBR Materials...
  152. g_testMaterialsFolder = 'testdata/materials/standardmultilayerpbrtestcases/'
  153. g_testCaseFolder = 'StandardMultilayerPBR'
  154. Print('Saving screenshots to ' .. NormalizePath(g_screenshotOutputFolder .. g_testCaseFolder))
  155. GenerateMaterialScreenshot('Level I', '001_ManyFeatures', {model=g_cubeModel, cameraHeading=-125.0, cameraPitch=-16.0, cameraZ=0.12})
  156. GenerateMaterialScreenshot('Level I', '001_ManyFeatures_Layer2Off', {model=g_cubeModel, cameraHeading=-125.0, cameraPitch=-16.0, cameraZ=0.12})
  157. GenerateMaterialScreenshot('Level I', '001_ManyFeatures_Layer3Off', {model=g_cubeModel, cameraHeading=-125.0, cameraPitch=-16.0, cameraZ=0.12})
  158. GenerateMaterialScreenshot('Level J', '002_ParallaxPdo', {model=g_cubeModel, cameraHeading=15.0, cameraPitch=28.0, lighting="Goegap (Alt)"})
  159. GenerateMaterialScreenshot('Level G', '003_Debug_BlendMask', {model=g_cubeModel})
  160. GenerateMaterialScreenshot('Level G', '003_Debug_Displacement', {model=g_cubeModel})
  161. GenerateMaterialScreenshot('Level G', '003_Debug_BlendWeights', {model=g_cubeModel})
  162. GenerateMaterialScreenshot('Level I', '004_UseVertexColors', {model=g_modelWithLayerMask, cameraHeading=0.0, cameraPitch=45.0, cameraDistance=30.0})
  163. GenerateMaterialScreenshot('Level I', '004_UseVertexColors', {model=g_modelWithoutLayerMask, cameraHeading=145.0, cameraPitch=7.0, cameraZ=-0.1, cameraDistance=3.0, screenshotFilename="004_UseVertexColors_modelHasNoVertexColors"})
  164. GenerateMaterialScreenshot('Level I', '005_UseDisplacement', {lighting="Blouberg Sunrise 1 (Alt)", model=g_modelWithLayerMask, cameraHeading=-35.0, cameraPitch=33.0, cameraDistance=9.0, cameraZ=0.9})
  165. GenerateMaterialScreenshot('Level I', '005_UseDisplacement_Layer2Off', {lighting="Blouberg Sunrise 1 (Alt)", model=g_modelWithLayerMask, cameraHeading=-35.0, cameraPitch=33.0, cameraDistance=9.0, cameraZ=0.9})
  166. GenerateMaterialScreenshot('Level I', '005_UseDisplacement_Layer3Off', {lighting="Blouberg Sunrise 1 (Alt)", model=g_modelWithLayerMask, cameraHeading=-35.0, cameraPitch=33.0, cameraDistance=9.0, cameraZ=0.9})
  167. GenerateMaterialScreenshot('Level I', '005_UseDisplacement_With_BlendMaskVertexColors', {lighting="Blouberg Sunrise 1 (Alt)", model=g_modelWithLayerMask, cameraHeading=0.0, cameraPitch=80.0, cameraDistance=27.0})
  168. GenerateMaterialScreenshot('Level I', '005_UseDisplacement_With_BlendMaskTexture', {lighting="Blouberg Sunrise 1 (Alt)", model=g_modelWithLayerMask, cameraHeading=180.0, cameraPitch=45.0, cameraDistance=20.0, cameraZ=-0.5})
  169. GenerateMaterialScreenshot('Level I', '005_UseDisplacement_With_BlendMaskTexture_NoHeightmaps', {lighting="Blouberg Sunrise 1 (Alt)", model=g_modelWithLayerMask, cameraHeading=180.0, cameraPitch=45.0, cameraDistance=20.0, cameraZ=-0.5})
  170. GenerateMaterialScreenshot('Level I', '005_UseDisplacement_With_BlendMaskTexture_AllSameHeight', {lighting="Blouberg Sunrise 1 (Alt)", model=g_modelWithLayerMask, cameraHeading=180.0, cameraPitch=45.0, cameraDistance=20.0, cameraZ=-0.5})
  171. ----------------------------------------------------------------------
  172. -- Skin Materials...
  173. g_testMaterialsFolder = 'testdata/materials/skintestcases/'
  174. g_testCaseFolder = 'Skin'
  175. Print('Saving screenshots to ' .. NormalizePath(g_screenshotOutputFolder .. g_testCaseFolder))
  176. -- We should eventually replace this with realistic skin test cases, these are just placeholders for regression testing
  177. GenerateMaterialScreenshot('Level D', '001_hermanubis_regression_test', {model=g_modelHermanubis, cameraHeading=-26.0, cameraPitch=15.0, cameraDistance=2.0, cameraZ=0.7})
  178. GenerateMaterialScreenshot('Level G', '002_wrinkle_regression_test', {model=g_modelWithLayerMask, cameraHeading=0.0, cameraPitch=45.0, cameraDistance=30.0})
  179. ----------------------------------------------------------------------
  180. -- MinimalPBR Materials...
  181. g_testMaterialsFolder = 'materials/minimalpbr/'
  182. g_testCaseFolder = 'MinimalPBR'
  183. Print('Saving screenshots to ' .. NormalizePath(g_screenshotOutputFolder .. g_testCaseFolder))
  184. GenerateMaterialScreenshot('Level C', 'MinimalPbr_Default')
  185. GenerateMaterialScreenshot('Level F', 'MinimalPbr_BlueMetal')
  186. GenerateMaterialScreenshot('Level D', 'MinimalPbr_RedDielectric')
  187. ----------------------------------------------------------------------
  188. -- MinimalMultilayerPBR Materials...
  189. -- This test is here only temporarily for regression testing until StandardMultilayerPBR is refactored to use reused nested property groups.
  190. g_testMaterialsFolder = 'materials/types/'
  191. g_testCaseFolder = 'MinimalPBR'
  192. Print('Saving screenshots to ' .. NormalizePath(g_screenshotOutputFolder .. g_testCaseFolder))
  193. GenerateMaterialScreenshot('Level G', 'MinimalMultilayerExample')
  194. ----------------------------------------------------------------------
  195. -- AutoBrick Materials...
  196. g_testCaseFolder = 'AutoBrick'
  197. Print('Saving screenshots to ' .. NormalizePath(g_screenshotOutputFolder .. g_testCaseFolder))
  198. g_testMaterialsFolder = 'testdata/materials/autobrick/'
  199. GenerateMaterialScreenshot('Level C', 'Brick', {model=g_cubeModel})
  200. GenerateMaterialScreenshot('Level E', 'Tile', {model=g_cubeModel})
  201. ----------------------------------------------------------------------
  202. -- Low End Pipeline...
  203. SetImguiValue('Use Low End Pipeline', true)
  204. -- Toggle a couple extra times to test a specific issue where the render pipelines would become disabled.
  205. IdleFrames(2)
  206. SetImguiValue('Use Low End Pipeline', false)
  207. IdleFrames(2)
  208. SetImguiValue('Use Low End Pipeline', true)
  209. IdleFrames(2)
  210. g_testMaterialsFolder = 'testdata/materials/standardpbrtestcases/'
  211. g_testCaseFolder = 'LowEndPipeline'
  212. Print('Saving screenshots to ' .. NormalizePath(g_screenshotOutputFolder .. g_testCaseFolder))
  213. -- We're not really getting full coverage here, but just some cursory regression tests to make sure the low-end pipeline doesn't break.
  214. -- (Use a "_LowEndPipeline" filename suffix just so these screenshots in the results summary are not confused with the same material names from the "StandardPBR" folder)
  215. GenerateMaterialScreenshot('Level E', '004_MetalMap', {screenshotFilename="004_MetalMap_LowEndPipeline"})
  216. GenerateMaterialScreenshot('Level F', '009_Opacity_Blended', {lighting="Neutral Urban", model=g_beveledCubeModel, screenshotFilename="009_Opacity_Blended_LowEndPipeline"})
  217. SetImguiValue('Use Low End Pipeline', false)
  218. ----------------------------------------------------------------------
  219. -- Material Pipeline Abstraction...
  220. -- These test materials are temporary, specifically for regression testing the new material pipeline system while it is in development.
  221. -- Once the core material types like StandardPBR are ported to use material pipelines, we can switch these over to use core material
  222. -- types, and maybe remove some cases if they end up being redundant.
  223. g_testMaterialsFolder = 'materials/materialpipelinetest/'
  224. g_testCaseFolder = 'MaterialPipelineSystem'
  225. Print('Saving screenshots to ' .. NormalizePath(g_screenshotOutputFolder .. g_testCaseFolder))
  226. SetImguiValue('Use Low End Pipeline', false)
  227. SetImguiValue('Use Deferred Pipeline', false)
  228. GenerateMaterialScreenshot('Level H', 'MaterialPipelineTest_Basic', {screenshotFilename="MaterialPipelineTest_Basic_MainPipeline"})
  229. GenerateMaterialScreenshot('Level H', 'MaterialPipelineTest_Standard', {screenshotFilename="MaterialPipelineTest_Standard_MainPipeline"})
  230. GenerateMaterialScreenshot('Level H', 'MaterialPipelineTest_Standard_Transparent', {screenshotFilename="MaterialPipelineTest_Standard_Transparent_MainPipeline"})
  231. GenerateMaterialScreenshot('Level H', 'MaterialPipelineTest_Standard_TintedTransparent', {screenshotFilename="MaterialPipelineTest_Standard_TintedTransparent_MainPipeline"})
  232. GenerateMaterialScreenshot('Level H', 'MaterialPipelineTest_Standard_Cutout', {screenshotFilename="MaterialPipelineTest_Standard_Cutout_MainPipeline"})
  233. GenerateMaterialScreenshot('Level H', 'MaterialPipelineTest_Standard_PDO', {screenshotFilename="MaterialPipelineTest_Standard_PDO_MainPipeline", lighting="Test"})
  234. GenerateMaterialScreenshot('Level H', 'MaterialPipelineTest_Enhanced', {screenshotFilename="MaterialPipelineTest_Enhanced_MainPipeline", lighting="Test"})
  235. GenerateMaterialScreenshot('Level H', 'MaterialPipelineTest_Enhanced_Transparent', {screenshotFilename="MaterialPipelineTest_Enhanced_Transparent_MainPipeline", lighting="Test"})
  236. GenerateMaterialScreenshot('Level H', 'MaterialPipelineTest_Enhanced_TintedTransparent', {screenshotFilename="MaterialPipelineTest_Enhanced_TintedTransparent_MainPipeline", lighting="Test"})
  237. GenerateMaterialScreenshot('Level H', 'MaterialPipelineTest_Enhanced_Cutout', {screenshotFilename="MaterialPipelineTest_Enhanced_Cutout_MainPipeline", lighting="Test"})
  238. GenerateMaterialScreenshot('Level H', 'MaterialPipelineTest_Enhanced_PDO', {screenshotFilename="MaterialPipelineTest_Enhanced_PDO_MainPipeline", lighting="Test"})
  239. SetImguiValue('Use Low End Pipeline', true)
  240. GenerateMaterialScreenshot('Level H', 'MaterialPipelineTest_Basic', {screenshotFilename="MaterialPipelineTest_Basic_LowEndPipeline"})
  241. GenerateMaterialScreenshot('Level H', 'MaterialPipelineTest_Standard', {screenshotFilename="MaterialPipelineTest_Standard_LowEndPipeline"})
  242. GenerateMaterialScreenshot('Level H', 'MaterialPipelineTest_Standard_Transparent', {screenshotFilename="MaterialPipelineTest_Standard_Transparent_LowEndPipeline"})
  243. GenerateMaterialScreenshot('Level H', 'MaterialPipelineTest_Standard_TintedTransparent', {screenshotFilename="MaterialPipelineTest_Standard_TintedTransparent_LowEndPipeline"})
  244. GenerateMaterialScreenshot('Level H', 'MaterialPipelineTest_Standard_Cutout', {screenshotFilename="MaterialPipelineTest_Standard_Cutout_LowEndPipeline"})
  245. GenerateMaterialScreenshot('Level H', 'MaterialPipelineTest_Standard_PDO', {screenshotFilename="MaterialPipelineTest_Standard_PDO_LowEndPipeline", lighting="Test"})
  246. GenerateMaterialScreenshot('Level H', 'MaterialPipelineTest_Enhanced', {screenshotFilename="MaterialPipelineTest_Enhanced_LowEndPipeline", lighting="Test"})
  247. GenerateMaterialScreenshot('Level H', 'MaterialPipelineTest_Enhanced_Transparent', {screenshotFilename="MaterialPipelineTest_Enhanced_Transparent_LowEndPipeline", lighting="Test"})
  248. GenerateMaterialScreenshot('Level H', 'MaterialPipelineTest_Enhanced_TintedTransparent', {screenshotFilename="MaterialPipelineTest_Enhanced_TintedTransparent_LowEndPipeline", lighting="Test"})
  249. GenerateMaterialScreenshot('Level H', 'MaterialPipelineTest_Enhanced_PDO', {screenshotFilename="MaterialPipelineTest_Enhanced_PDO_LowEndPipeline", lighting="Test"})
  250. SetImguiValue('Use Low End Pipeline', false)
  251. SetImguiValue('Use Deferred Pipeline', true)
  252. GenerateMaterialScreenshot('Level H', 'MaterialPipelineTest_Basic', {screenshotFilename="MaterialPipelineTest_Basic_DeferredPipeline"})
  253. GenerateMaterialScreenshot('Level H', 'MaterialPipelineTest_Standard', {screenshotFilename="MaterialPipelineTest_Standard_DeferredPipeline"})
  254. GenerateMaterialScreenshot('Level H', 'MaterialPipelineTest_Enhanced', {screenshotFilename="MaterialPipelineTest_Enhanced_DeferredPipeline", lighting="Test"})
  255. GenerateMaterialScreenshot('Level H', 'MaterialPipelineTest_Standard_PDO', {screenshotFilename="MaterialPipelineTest_Standard_PDO_DeferredPipeline", lighting="Test"})
  256. GenerateMaterialScreenshot('Level H', 'MaterialPipelineTest_Enhanced_PDO', {screenshotFilename="MaterialPipelineTest_Enhanced_PDO_DeferredPipeline", lighting="Test"})
  257. -- There are several "transparent" materials but since none of them are supported in the deferred pipeline, just check one of them to make sure it's appropriately ignored.
  258. GenerateMaterialScreenshot('Level H', 'MaterialPipelineTest_Standard_Transparent', {screenshotFilename="MaterialPipelineTest_Standard_Transparent_DeferredPipeline"})
  259. SetImguiValue('Use Deferred Pipeline', false)