No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

RuntimeTests.cs 3.2KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. using UnityEngine.TestTools;
  2. using NUnit.Framework;
  3. using System.Collections;
  4. using UnityEngine;
  5. using UnityEngine.Rendering.Universal;
  6. using UnityEngine.Rendering;
  7. [TestFixture]
  8. class RuntimeTests
  9. {
  10. GameObject go;
  11. Camera camera;
  12. RenderPipelineAsset currentAssetGraphics;
  13. RenderPipelineAsset currentAssetQuality;
  14. [SetUp]
  15. public void Setup()
  16. {
  17. go = new GameObject();
  18. camera = go.AddComponent<Camera>();
  19. currentAssetGraphics = GraphicsSettings.defaultRenderPipeline;
  20. currentAssetQuality = QualitySettings.renderPipeline;
  21. }
  22. [TearDown]
  23. public void Cleanup()
  24. {
  25. GraphicsSettings.defaultRenderPipeline = currentAssetGraphics;
  26. QualitySettings.renderPipeline = currentAssetQuality;
  27. Object.DestroyImmediate(go);
  28. }
  29. // When URP pipeline is active, lightsUseLinearIntensity must match active color space.
  30. [UnityTest]
  31. public IEnumerator PipelineHasCorrectColorSpace()
  32. {
  33. AssetCheck();
  34. var rr = new UnityEngine.Rendering.RenderPipeline.StandardRequest();
  35. rr.destination = new RenderTexture(128, 128, UnityEngine.Experimental.Rendering.GraphicsFormat.R8G8B8A8_SRGB, UnityEngine.Experimental.Rendering.GraphicsFormat.D32_SFloat);
  36. rr.mipLevel = 0;
  37. rr.slice = 0;
  38. rr.face = CubemapFace.Unknown;
  39. UnityEngine.Rendering.RenderPipeline.SubmitRenderRequest(camera, rr);
  40. yield return null;
  41. Assert.AreEqual(QualitySettings.activeColorSpace == ColorSpace.Linear, GraphicsSettings.lightsUseLinearIntensity,
  42. "GraphicsSettings.lightsUseLinearIntensity must match active color space.");
  43. }
  44. // When switching to URP it sets "UniversalPipeline" as global shader tag.
  45. // When switching to Built-in it sets "" as global shader tag.
  46. #if UNITY_EDITOR // TODO This API call does not reset in player
  47. [UnityTest]
  48. public IEnumerator PipelineSetsAndRestoreGlobalShaderTagCorrectly()
  49. {
  50. AssetCheck();
  51. var rr = new UnityEngine.Rendering.RenderPipeline.StandardRequest();
  52. rr.destination = new RenderTexture(128, 128, UnityEngine.Experimental.Rendering.GraphicsFormat.R8G8B8A8_SRGB, UnityEngine.Experimental.Rendering.GraphicsFormat.D32_SFloat);
  53. rr.mipLevel = 0;
  54. rr.slice = 0;
  55. rr.face = CubemapFace.Unknown;
  56. UnityEngine.Rendering.RenderPipeline.SubmitRenderRequest(camera, rr);
  57. yield return null;
  58. Assert.AreEqual("UniversalPipeline", Shader.globalRenderPipeline, "Wrong render pipeline shader tag.");
  59. GraphicsSettings.defaultRenderPipeline = null;
  60. QualitySettings.renderPipeline = null;
  61. camera.Render();
  62. yield return null;
  63. Assert.AreEqual("", Shader.globalRenderPipeline, "Render Pipeline shader tag is not restored.");
  64. }
  65. #endif
  66. void AssetCheck()
  67. {
  68. //Assert.IsNotNull(currentAssetGraphics, "Render Pipeline Asset is Null");
  69. // Temp fix, test passes if project isnt setup for Universal RP
  70. if (RenderPipelineManager.currentPipeline == null)
  71. Assert.Pass("Render Pipeline Asset is Null, test pass by default");
  72. Assert.AreEqual(RenderPipelineManager.currentPipeline.GetType(), typeof(UniversalRenderPipeline),
  73. "Pipeline Asset is not Universal RP");
  74. }
  75. }