浏览代码

Add LW SRP into material graph

/main
Tim Cooper 7 年前
当前提交
1793f62f
共有 315 个文件被更改,包括 12984 次插入62 次删除
  1. 68
      MaterialGraphProject/Assets/UnityShaderEditor/Editor/Drawing/MaterialGraphPreviewGenerator.cs
  2. 2
      MaterialGraphProject/Assets/UnityShaderEditor/Editor/Drawing/Presenters/NodePreviewPresenter.cs
  3. 2
      MaterialGraphProject/Assets/UnityShaderEditor/Editor/Testing/IntegrationTests/ShaderGenerationTest.cs
  4. 10
      MaterialGraphProject/Assets/SRP.meta
  5. 10
      MaterialGraphProject/Assets/SRP/SampleScenes.meta
  6. 9
      MaterialGraphProject/Assets/SRP/SampleScenes/Common.meta
  7. 9
      MaterialGraphProject/Assets/SRP/SampleScenes/Common/Scripts.meta
  8. 156
      MaterialGraphProject/Assets/SRP/SampleScenes/Common/Scripts/MiniProfiler.cs
  9. 12
      MaterialGraphProject/Assets/SRP/SampleScenes/Common/Scripts/MiniProfiler.cs.meta
  10. 10
      MaterialGraphProject/Assets/SRP/SampleScenes/Common/Textures.meta
  11. 206
      MaterialGraphProject/Assets/SRP/SampleScenes/Common/Textures/Batman.png
  12. 98
      MaterialGraphProject/Assets/SRP/SampleScenes/Common/Textures/Batman.png.meta
  13. 422
      MaterialGraphProject/Assets/SRP/SampleScenes/Common/Textures/CoolingFilterLUT.exr
  14. 108
      MaterialGraphProject/Assets/SRP/SampleScenes/Common/Textures/CoolingFilterLUT.exr.meta
  15. 1001
      MaterialGraphProject/Assets/SRP/SampleScenes/Common/Textures/bonifacio_street.exr
  16. 59
      MaterialGraphProject/Assets/SRP/SampleScenes/Common/Textures/bonifacio_street.exr.meta
  17. 280
      MaterialGraphProject/Assets/SRP/SampleScenes/Common/Textures/cookieTest.png
  18. 111
      MaterialGraphProject/Assets/SRP/SampleScenes/Common/Textures/cookieTest.png.meta
  19. 327
      MaterialGraphProject/Assets/SRP/SampleScenes/Common/Textures/cubeTest.png
  20. 101
      MaterialGraphProject/Assets/SRP/SampleScenes/Common/Textures/cubeTest.png.meta
  21. 10
      MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline.meta
  22. 9
      MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/LightweightBasicScene.meta
  23. 1001
      MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/LightweightBasicScene.unity
  24. 8
      MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/LightweightBasicScene.unity.meta
  25. 8
      MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/LightweightBasicScene/LightingData.asset
  26. 9
      MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/LightweightBasicScene/LightingData.asset.meta
  27. 1001
      MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/LightweightBasicScene/Lightmap-0_comp_light.exr
  28. 72
      MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/LightweightBasicScene/Lightmap-0_comp_light.exr.meta
  29. 198
      MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/LightweightBasicScene/ReflectionProbe-0.exr
  30. 73
      MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/LightweightBasicScene/ReflectionProbe-0.exr.meta
  31. 9
      MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Materials.meta
  32. 9
      MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Materials/LDRenderPipeMaterials.meta
  33. 90
      MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Materials/LDRenderPipeMaterials/LDSpecularSphere0.mat
  34. 9
      MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Materials/LDRenderPipeMaterials/LDSpecularSphere0.mat.meta
  35. 83
      MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Materials/LDRenderPipeMaterials/MobileColors.mat
  36. 8
      MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Materials/LDRenderPipeMaterials/MobileColors.mat.meta
  37. 83
      MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Materials/LDRenderPipeMaterials/MobileColorsTile.mat
  38. 8
      MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Materials/LDRenderPipeMaterials/MobileColorsTile.mat.meta
  39. 85
      MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Materials/LDRenderPipeMaterials/MobileGlass.mat
  40. 8
      MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Materials/LDRenderPipeMaterials/MobileGlass.mat.meta
  41. 91
      MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Materials/LDRenderPipeMaterials/MobilePlane.mat
  42. 8
      MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Materials/LDRenderPipeMaterials/MobilePlane.mat.meta
  43. 9
      MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Materials/LegacyMobileMaterials.meta
  44. 77
      MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Materials/LegacyMobileMaterials/LegacyMobileAlpha.mat
  45. 9
      MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Materials/LegacyMobileMaterials/LegacyMobileAlpha.mat.meta
  46. 81
      MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Materials/LegacyMobileMaterials/LegacyMobileColors.mat
  47. 8
      MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Materials/LegacyMobileMaterials/LegacyMobileColors.mat.meta
  48. 81
      MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Materials/LegacyMobileMaterials/LegacyMobileGlass.mat
  49. 8
      MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Materials/LegacyMobileMaterials/LegacyMobileGlass.mat.meta
  50. 84
      MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Materials/LegacyMobileMaterials/LegacyMobilePlane.mat
  51. 8
      MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Materials/LegacyMobileMaterials/LegacyMobilePlane.mat.meta
  52. 81
      MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Materials/LegacyMobileMaterials/LegacyMobileSphere.mat
  53. 9
      MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Materials/LegacyMobileMaterials/LegacyMobileSphere.mat.meta
  54. 9
      MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Textures.meta
  55. 1001
      MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Textures/154.JPG
  56. 121
      MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Textures/154.JPG.meta
  57. 1001
      MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Textures/154_norm.JPG
  58. 108
      MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Textures/154_norm.JPG.meta
  59. 1001
      MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Textures/168.JPG
  60. 108
      MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Textures/168.JPG.meta
  61. 1001
      MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Textures/168_norm.JPG
  62. 108
      MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Textures/168_norm.JPG.meta
  63. 10
      MaterialGraphProject/Assets/SRP/ScriptableRenderPipeline.meta
  64. 9
      MaterialGraphProject/Assets/SRP/ScriptableRenderPipeline/Core.meta
  65. 9
      MaterialGraphProject/Assets/SRP/ScriptableRenderPipeline/Core/Camera.meta
  66. 98
      MaterialGraphProject/Assets/SRP/ScriptableRenderPipeline/Core/Camera/CameraSwitcher.cs
  67. 12
      MaterialGraphProject/Assets/SRP/ScriptableRenderPipeline/Core/Camera/CameraSwitcher.cs.meta
  68. 69
      MaterialGraphProject/Assets/SRP/ScriptableRenderPipeline/Core/Camera/FreeCamera.cs
  69. 12
      MaterialGraphProject/Assets/SRP/ScriptableRenderPipeline/Core/Camera/FreeCamera.cs.meta
  70. 72
      MaterialGraphProject/Assets/SRP/ScriptableRenderPipeline/Core/CommandBufferPool.cs
  71. 12
      MaterialGraphProject/Assets/SRP/ScriptableRenderPipeline/Core/CommandBufferPool.cs.meta
  72. 9
      MaterialGraphProject/Assets/SRP/ScriptableRenderPipeline/Core/Debugging.meta
  73. 383
      MaterialGraphProject/Assets/SRP/ScriptableRenderPipeline/Core/Debugging/DebugActionManager.cs
  74. 12
      MaterialGraphProject/Assets/SRP/ScriptableRenderPipeline/Core/Debugging/DebugActionManager.cs.meta
  75. 372
      MaterialGraphProject/Assets/SRP/ScriptableRenderPipeline/Core/Debugging/DebugItemHandler.cs
  76. 12
      MaterialGraphProject/Assets/SRP/ScriptableRenderPipeline/Core/Debugging/DebugItemHandler.cs.meta
  77. 460
      MaterialGraphProject/Assets/SRP/ScriptableRenderPipeline/Core/Debugging/DebugItemUI.cs
  78. 12
      MaterialGraphProject/Assets/SRP/ScriptableRenderPipeline/Core/Debugging/DebugItemUI.cs.meta
  79. 155
      MaterialGraphProject/Assets/SRP/ScriptableRenderPipeline/Core/Debugging/DebugMenuManager.cs
  80. 12
      MaterialGraphProject/Assets/SRP/ScriptableRenderPipeline/Core/Debugging/DebugMenuManager.cs.meta
  81. 143
      MaterialGraphProject/Assets/SRP/ScriptableRenderPipeline/Core/Debugging/DebugMenuState.cs
  82. 12
      MaterialGraphProject/Assets/SRP/ScriptableRenderPipeline/Core/Debugging/DebugMenuState.cs.meta
  83. 298
      MaterialGraphProject/Assets/SRP/ScriptableRenderPipeline/Core/Debugging/DebugMenuUI.cs
  84. 12
      MaterialGraphProject/Assets/SRP/ScriptableRenderPipeline/Core/Debugging/DebugMenuUI.cs.meta
  85. 57
      MaterialGraphProject/Assets/SRP/ScriptableRenderPipeline/Core/Debugging/DebugMenuUpdater.cs

68
MaterialGraphProject/Assets/UnityShaderEditor/Editor/Drawing/MaterialGraphPreviewGenerator.cs


namespace UnityEditor.MaterialGraph.Drawing
{
/*internal class PreviewScene : IDisposable
{
public PreviewScene(string sceneName)
{
camera.cameraType = CameraType.Preview;
camera.enabled = false;
camera.clearFlags = CameraClearFlags.Depth;
camera.fieldOfView = 15;
camera.farClipPlane = 10.0f;
camera.nearClipPlane = 2.0f;
camera.backgroundColor = new Color(49.0f / 255.0f, 49.0f / 255.0f, 49.0f / 255.0f, 1.0f);
// Explicitly use forward rendering for all previews
// (deferred fails when generating some static previews at editor launch; and we never want
// vertex lit previews if that is chosen in the player settings)
camera.renderingPath = RenderingPath.Forward;
camera.useOcclusionCulling = false;
camera.scene = m_Scene;
}
public void AddGameObject(GameObject go)
{
if (m_GameObjects.Contains(go))
return;
m_GameObjects.Add(go);
}
public void Dispose() {
}
}*/
/*internal class SavedRenderTargetState
{
RenderTexture renderTexture;
Rect viewport;
Rect scissor;
internal SavedRenderTargetState()
{
GL.PushMatrix();
if (ShaderUtil.hardwareSupportsRectRenderTexture)
renderTexture = RenderTexture.active;
viewport = ShaderUtil.rawViewportRect;
scissor = ShaderUtil.rawScissorRect;
}
internal void Restore()
{
if (ShaderUtil.hardwareSupportsRectRenderTexture)
EditorGUIUtility.SetRenderTextureNoViewport(renderTexture);
ShaderUtil.rawViewportRect = viewport;
ShaderUtil.rawScissorRect = scissor;
GL.PopMatrix();
}
}*/
private bool m_AllowSRP;
private readonly Scene m_Scene;
static Mesh s_Quad;
private Camera m_Camera;

return lightGO;
}
public MaterialGraphPreviewGenerator()
public MaterialGraphPreviewGenerator(bool allowSRP)
m_AllowSRP = allowSRP;
m_Scene = EditorSceneManager.NewPreviewScene();
var camGO = EditorUtility.CreateGameObjectWithHideFlags("Preview Scene Camera", HideFlags.HideAndDontSave, typeof(Camera));
SceneManager.MoveGameObjectToScene(camGO, m_Scene);

Quaternion.identity,
mat,
0);
var oldAllowPipes = Unsupported.useScriptableRenderPipeline;
Unsupported.useScriptableRenderPipeline = m_AllowSRP;
Unsupported.useScriptableRenderPipeline = oldAllowPipes;
Unsupported.RestoreOverrideRenderSettings();

2
MaterialGraphProject/Assets/UnityShaderEditor/Editor/Drawing/Presenters/NodePreviewPresenter.cs


{
if (m_PreviewGenerator == null)
{
m_PreviewGenerator = new MaterialGraphPreviewGenerator();
m_PreviewGenerator = new MaterialGraphPreviewGenerator(m_Node is AbstractMasterNode);
}
return m_PreviewGenerator;
}

2
MaterialGraphProject/Assets/UnityShaderEditor/Editor/Testing/IntegrationTests/ShaderGenerationTest.cs


Assert.IsNotNull(m_PreviewMaterial, "preview material could not be created");
const int res = 256;
using (var generator = new MaterialGraphPreviewGenerator())
using (var generator = new MaterialGraphPreviewGenerator(true))
{
var rendered =
generator.DoRenderPreview(m_PreviewMaterial, PreviewMode.Preview3D, new Rect(0, 0, res, res), 10) as

10
MaterialGraphProject/Assets/SRP.meta


fileFormatVersion: 2
guid: c29d1b9487ffd4a729adcbe0f197a3f4
folderAsset: yes
timeCreated: 1505274236
licenseType: Pro
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

10
MaterialGraphProject/Assets/SRP/SampleScenes.meta


fileFormatVersion: 2
guid: dd543950106004c8c800131bee04c535
folderAsset: yes
timeCreated: 1505274236
licenseType: Pro
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

9
MaterialGraphProject/Assets/SRP/SampleScenes/Common.meta


fileFormatVersion: 2
guid: e42cfeaf226ad624786ad5b39095906c
folderAsset: yes
timeCreated: 1493044341
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

9
MaterialGraphProject/Assets/SRP/SampleScenes/Common/Scripts.meta


fileFormatVersion: 2
guid: 711a9f1e8aa51844980a04a15d8c8f58
folderAsset: yes
timeCreated: 1493044341
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

156
MaterialGraphProject/Assets/SRP/SampleScenes/Common/Scripts/MiniProfiler.cs


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Profiling;
public class MiniProfiler : MonoBehaviour {
public bool m_Enable = true;
private int frameCount = 0;
private const int kAverageFrameCount = 64;
private float m_AccDeltaTime;
private float m_AvgDeltaTime;
// private bool m_UseNewBatcher = false;
internal class RecorderEntry
{
public string name;
public float time;
public int count;
public float avgTime;
public float avgCount;
public float accTime;
public int accCount;
public Recorder recorder;
};
RecorderEntry[] recordersList =
{
new RecorderEntry() { name="RenderLoop.Draw" },
// new RecorderEntry() { name="BatchRenderer.Flush" },
new RecorderEntry() { name="Shadows.Draw" },
// new RecorderEntry() { name="BatchRenderer.ApplyShaderPass" },
// new RecorderEntry() { name="Batch.DrawStatic" },
// new RecorderEntry() { name="DrawBuffersBatchMode" },
/*
new RecorderEntry() { name="NewBatch.Instances" },
new RecorderEntry() { name="NewBatch.Elements" },
new RecorderEntry() { name="NewBatch.DrawRanges" },
new RecorderEntry() { name="NewBatch.S-Instances" },
new RecorderEntry() { name="NewBatch.S-Elements" },
new RecorderEntry() { name="NewBatch.S-DrawRanges" },
*/
/*
new RecorderEntry() { name="gBatchGBufferObj" },
new RecorderEntry() { name="gBatchGBufferBatch" },
new RecorderEntry() { name="gBatchShadowObj" },
new RecorderEntry() { name="gBatchShadowBatch" },
*/
/*
new RecorderEntry() { name="Map_PerDraw_Buffer" },
new RecorderEntry() { name="Unmap_PerDraw_Buffer" },
new RecorderEntry() { name="DrawBuffersBatchMode" },
new RecorderEntry() { name="DrawBatchIndexed" },
new RecorderEntry() { name="BatchRenderer.ApplyShaderPass" },
new RecorderEntry() { name="PerformFlushProperties" },
*/
/*
new RecorderEntry() { name="GUI.Repaint" },
new RecorderEntry() { name="PrepareValues" },
new RecorderEntry() { name="ApplyGpuProgram" },
new RecorderEntry() { name="WriteParameters" },
new RecorderEntry() { name="FlushBuffers" },
new RecorderEntry() { name="BindBuffers" },
new RecorderEntry() { name="Gfx.ProcessCommand" },
*/
};
void Awake()
{
for (int i=0;i<recordersList.Length;i++)
{
var sampler = Sampler.Get(recordersList[i].name);
if ( sampler != null )
{
recordersList[i].recorder = sampler.GetRecorder();
}
}
}
void Update()
{
if (m_Enable)
{
// get timing & update average accumulators
for (int i = 0; i < recordersList.Length; i++)
{
recordersList[i].time = recordersList[i].recorder.elapsedNanoseconds / 1000000.0f;
recordersList[i].count = recordersList[i].recorder.sampleBlockCount;
recordersList[i].accTime += recordersList[i].time;
recordersList[i].accCount += recordersList[i].count;
}
m_AccDeltaTime += Time.deltaTime;
frameCount++;
// time to time, update average values & reset accumulators
if (frameCount >= kAverageFrameCount)
{
for (int i = 0; i < recordersList.Length; i++)
{
recordersList[i].avgTime = recordersList[i].accTime * (1.0f / kAverageFrameCount);
recordersList[i].avgCount = recordersList[i].accCount * (1.0f / kAverageFrameCount);
recordersList[i].accTime = 0.0f;
recordersList[i].accCount = 0;
}
m_AvgDeltaTime = m_AccDeltaTime / kAverageFrameCount;
m_AccDeltaTime = 0.0f;
frameCount = 0;
}
}
}
void OnGUI()
{
if (m_Enable)
{
/*
GUI.changed = false;
if ( !Application.isEditor )
{
m_UseNewBatcher = GUI.Toggle(new Rect(10, 30, 200, 20), m_UseNewBatcher, "Use new render batch");
if (GUI.changed)
{
UnityEngine.Experimental.Rendering.ScriptableRenderContext.UseNewBatchRenderer(m_UseNewBatcher);
}
}
*/
GUI.color = new Color(1, 1, 1, .75f);
float w = 500, h = 24 + (recordersList.Length+1) * 16 + 8;
GUILayout.BeginArea(new Rect(10, 50, w, h), "Mini Profiler", GUI.skin.window);
string sLabel = System.String.Format("<b>{0:F2} FPS ({1:F2}ms)</b>\n", 1.0f / m_AvgDeltaTime, Time.deltaTime * 1000.0f);
for (int i = 0; i < recordersList.Length; i++)
{
sLabel += string.Format("{0:F2}ms (*{1:F2})\t({2:F2}ms *{3:F2})\t<b>{4}</b>\n", recordersList[i].avgTime, recordersList[i].avgCount, recordersList[i].time, recordersList[i].count, recordersList[i].name);
}
GUILayout.Label(sLabel);
GUILayout.EndArea();
}
}
}

12
MaterialGraphProject/Assets/SRP/SampleScenes/Common/Scripts/MiniProfiler.cs.meta


fileFormatVersion: 2
guid: 6dc6eb1c59f1c9745b732f87dafd16f2
timeCreated: 1493044341
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

10
MaterialGraphProject/Assets/SRP/SampleScenes/Common/Textures.meta


fileFormatVersion: 2
guid: 3fc81a1fb228afa4295f78b6954f7003
folderAsset: yes
timeCreated: 1503308708
licenseType: Pro
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

206
MaterialGraphProject/Assets/SRP/SampleScenes/Common/Textures/Batman.png

之前 之后
宽度: 512  |  高度: 512  |  大小: 49 KiB

98
MaterialGraphProject/Assets/SRP/SampleScenes/Common/Textures/Batman.png.meta


fileFormatVersion: 2
guid: a5f5ba3665c610f469d392e02dadb3bd
timeCreated: 1491904075
licenseType: Pro
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 4
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 2
aniso: -1
mipBias: -1
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaUsage: 0
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: Standalone
maxTextureSize: 2048
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: iPhone
maxTextureSize: 2048
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: tvOS
maxTextureSize: 2048
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:

422
MaterialGraphProject/Assets/SRP/SampleScenes/Common/Textures/CoolingFilterLUT.exr
文件差异内容过多而无法显示
查看文件

108
MaterialGraphProject/Assets/SRP/SampleScenes/Common/Textures/CoolingFilterLUT.exr.meta


fileFormatVersion: 2
guid: 36ff124e89908864e932c5a3c7c6d366
timeCreated: 1483716363
licenseType: Pro
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 4
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 0
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
filterMode: 1
aniso: 0
mipBias: -1
wrapMode: -1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: Standalone
maxTextureSize: 2048
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: iPhone
maxTextureSize: 2048
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: tvOS
maxTextureSize: 2048
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: Windows Store Apps
maxTextureSize: 2048
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: WebGL
maxTextureSize: 2048
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:

1001
MaterialGraphProject/Assets/SRP/SampleScenes/Common/Textures/bonifacio_street.exr
文件差异内容过多而无法显示
查看文件

59
MaterialGraphProject/Assets/SRP/SampleScenes/Common/Textures/bonifacio_street.exr.meta


fileFormatVersion: 2
guid: a6bda31e5e5c82a40b8e91ad0be087e8
timeCreated: 1468282113
licenseType: Pro
TextureImporter:
fileIDToRecycleName:
8900000: generatedCubemap
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 1
linearTexture: 0
correctGamma: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 1
cubemapConvolutionSteps: 7
cubemapConvolutionExponent: 1.5
seamlessCubemap: 0
textureFormat: -1
maxTextureSize: 128
textureSettings:
filterMode: 2
aniso: -1
mipBias: -1
wrapMode: 1
nPOTScale: 1
lightmap: 0
rGBM: 0
compressionQuality: 50
allowsAlphaSplitting: 0
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 3
buildTargetSettings: []
spriteSheet:
sprites: []
outline: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:

280
MaterialGraphProject/Assets/SRP/SampleScenes/Common/Textures/cookieTest.png

之前 之后
宽度: 512  |  高度: 512  |  大小: 54 KiB

111
MaterialGraphProject/Assets/SRP/SampleScenes/Common/Textures/cookieTest.png.meta


fileFormatVersion: 2
guid: 55fd692de65e703408cbda23b0eae8d0
timeCreated: 1492083821
licenseType: Pro
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 4
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -1
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: iPhone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: tvOS
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:

327
MaterialGraphProject/Assets/SRP/SampleScenes/Common/Textures/cubeTest.png

之前 之后
宽度: 512  |  高度: 512  |  大小: 50 KiB

101
MaterialGraphProject/Assets/SRP/SampleScenes/Common/Textures/cubeTest.png.meta


fileFormatVersion: 2
guid: 7daac0a2e2877f94fb9990a7e09d9691
timeCreated: 1473095717
licenseType: Pro
TextureImporter:
fileIDToRecycleName:
8900000: generatedCubemap
serializedVersion: 4
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 1
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 2
seamlessCubemap: 1
textureFormat: 1
maxTextureSize: 2048
textureSettings:
filterMode: -1
aniso: 0
mipBias: -1
wrapMode: 1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaUsage: 2
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 0
textureShape: 2
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: Standalone
maxTextureSize: 128
textureFormat: 4
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 1
- buildTarget: iPhone
maxTextureSize: 2048
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: tvOS
maxTextureSize: 2048
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: Windows Store Apps
maxTextureSize: 2048
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:

10
MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline.meta


fileFormatVersion: 2
guid: 857dd5135dfb1ff4aabacbca9143a7c7
folderAsset: yes
timeCreated: 1503313293
licenseType: Pro
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

9
MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/LightweightBasicScene.meta


fileFormatVersion: 2
guid: 36930a06efb38b44c86d80533989a6de
folderAsset: yes
timeCreated: 1483973859
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

1001
MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/LightweightBasicScene.unity
文件差异内容过多而无法显示
查看文件

8
MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/LightweightBasicScene.unity.meta


fileFormatVersion: 2
guid: 57e3c6f39b3e40b408a2baf5b0da667c
timeCreated: 1478094608
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

8
MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/LightweightBasicScene/LightingData.asset


1;�1 2017.1.0b1�������Ƣ��^Ee��c���_��7���������� �� ��".�+���� ��".�+H��������1�1����� @���
Q�j� 4C���� �Je���� ���z�����1�1�����@����j�P��������������������������0���� �� ������ ��!��!"��%#��)$��-%��1&��5����'�1�1�����(@���)��j� * ��@+ ��B, ��D- ��F����.�1�1�����/@���0Rj�1`h2��o3��x4���5���6���7���8���9���:���;���<���=���>���?���@���A���B��C��D������E�1�1�����F@���G��j� H ��@I ��BJ ��DK ��!����L1�1�����M���N�j�O`��P��oQ��xR���S���T���U���V���W���X���Y���Z���[���\���]���^���_���`��
�a��F����b�1�1�����c@���dZj�le��of��vg��}h���i���j���k���l���m���n���o���p���q���r���s���t���u���v���w���x���y���z��{�� |��}��~����%���,������1�1������@����Bj������;�V�����1�1������������j��;�q�����1�1������������j��;�}�����1�1����������5�j��LightProbesPPtr<EditorExtension>m_FileIDm_PathIDLightProbeDatam_DataProbeSetTetrahedralizationm_Tetrahedralizationm_TetrahedraTetrahedronindices[0]indices[1]indices[2]indices[3]neighbors[0]neighbors[1]neighbors[2]neighbors[3]Matrix3x4fmatrixe00e01e02e03e10e11e12e13e20e21e22e23m_HullRaysxyzm_ProbeSetsProbeSetIndexHash128m_Hashbytes[0]bytes[1]bytes[2]bytes[3]bytes[4]bytes[5]bytes[6]bytes[7]bytes[8]bytes[9]bytes[10]bytes[11]bytes[12]bytes[13]bytes[14]bytes[15]m_Offsetm_Sizem_Positionsm_NonTetrahedralizedProbeSetIndexMapm_BakedCoefficientsSphericalHarmonicsL2sh[ 0]sh[ 1]sh[ 2]sh[ 3]sh[ 4]sh[ 5]sh[ 6]sh[ 7]sh[ 8]sh[ 9]sh[10]sh[11]sh[12]sh[13]sh[14]sh[15]sh[16]sh[17]sh[18]sh[19]sh[20]sh[21]sh[22]sh[23]sh[24]sh[25]sh[26]m_BakedLightOcclusionLightProbeOcclusionm_ProbeOcclusionLightIndexm_Occlusionm_OcclusionMaskChannel`�����/�:�AI�I F� �7������������ ��(.�1���� ��(.�1H��������1�1����� @���
Q�j� ��:���� �1�1����� @���Fj�$��S ��(.�1��^ ��(.�1��l ��(.�1y� ��(.�1�����l��������� ���!���"���#��$�� %��&��'�� (��')��.*��5+��<,��C-��J.��Q/��X0��_1��f2��m3��t4��{5���6���7���8�������9�1�1�����:@���;�j�P<�� =��(>.�1?���@ ���A ���B ���C ���D ���E ���F ���G ���H ���I ��J��K��&L ���M ���N ���O ���P ��1Q ���R ���S ���T ���U ��C����V�1�1�����W@���X`j�Y.�vZ.��[������\��������]�1�1�����^@���_�j�@`y�� a��(b.�1c���d ���e ���f ���g ���h ��
ij��(k��1l��:m��Cn��Lo��Up��^q��gr��ps��yt���u���v���w���x���y���z�{���(|���1}���:~���C���L����U����^����g����p����y�����������������������������������������1�1������@�����j�4����������� ������#�0���(���1���:���C���L���U���^���g���p���y�������������������������@���(���1���:���C���L���U���^���g���p���y���������������������������T������1�1������@����j����(���1���:���C���L���U���^���g���p���y���������������������������`������1�1������@����pj����������(���1���:���C���L���U���^���g���p���y��������������������������������������1�1������@�����j� ����������������������1�1������@����`j��.�v�.�����!������1�1������@����`j��.�v�.�����*������1�1������@����?j� ���Q���j�������������1�1������@������j� ���(.�1��������1�1�����@���`j�.�v.����������1�1����� @���
��j� ��� LightingDataAssetPPtr<EditorExtension>m_FileIDm_PathIDm_LightmapsLightmapDatam_Lightmapm_DirLightmapm_ShadowMaskPPtr<LightProbes>m_LightProbesm_LightmapsModeSphericalHarmonicsL2m_BakedAmbientProbeInLinearsh[ 0]sh[ 1]sh[ 2]sh[ 3]sh[ 4]sh[ 5]sh[ 6]sh[ 7]sh[ 8]sh[ 9]sh[10]sh[11]sh[12]sh[13]sh[14]sh[15]sh[16]sh[17]sh[18]sh[19]sh[20]sh[21]sh[22]sh[23]sh[24]sh[25]sh[26]m_LightmappedRendererDataRendererDataPPtr<Mesh>uvMeshterrainDynamicUVSTxyzwterrainChunkDynamicUVSTlightmapIndexlightmapIndexDynamiclightmapSTlightmapSTDynamicm_LightmappedRendererDataIDsSceneObjectIdentifiertargetObjecttargetPrefabEnlightenSceneMappingm_EnlightenSceneMappingm_RenderersEnlightenRendererInformationrendererdynamicLightmapSTInSystemsystemIdHash128instanceHashbytes[0]bytes[1]bytes[2]bytes[3]bytes[4]bytes[5]bytes[6]bytes[7]bytes[8]bytes[9]bytes[10]bytes[11]bytes[12]bytes[13]bytes[14]bytes[15]geometryHashm_SystemsEnlightenSystemInformationrendererIndexrendererSizeatlasIndexatlasOffsetXatlasOffsetYinputSystemHashradiositySystemHashm_Probesetsm_SystemAtlasesEnlightenSystemAtlasInformationatlasSizeatlasHashfirstSystemIdm_TerrainChunksEnlightenTerrainChunksInformationnumChunksInXnumChunksInYm_EnlightenSceneMappingRendererIDsm_Lightsm_LightBakingOutputsLightBakingOutputprobeOcclusionLightIndexocclusionMaskChannellightmappingMaskm_BakedReflectionProbeCubemapsm_BakedReflectionProbesm_EnlightenDatam_EnlightenDataVersion@��H��H8
<'��S��I�3�UO�-1�ʭ�G��A��R�@ LightingData LightingData��*@��v�;>l����<���d���R�;NAV<$��q��<�Fh>$�*=��i<��5P��K�1<�L�<�����%=�ߖ>�/�=��<d��� 9L��x�<��<�B5�tC=�?�?�?�?��G>G>J>�?�?�?�?�?�?����+=��+=@I?�?�?�?�?�?�?��H>H>�?�?�?�?�?�?��G>G>I>J?�?�?�?�?�?�?��G>G>��>�?�?�?�?�?�?����+=��+=>@I?�?�?�?�?�?�?��H>H>I>�?�?�?�?�?�?�?���O>�O>!�?�(I>�?�?�?�?�?�?����+=��+=�=@I?�?�?�?�?�?�?��[+`=[+`=h=nlk?�?�?�?�?�?�?��G>G>��>J>�?�?�?�?�?�?����+=��+=4=@I?�?�?�?�?�?�?��H>H>I>J>�?�?�?�?�?�?��H>H>�>�?�?�?�?�?�?��H>H>J>�?�?�?�?�?�?��H>H>I>�>�?�?�?�?�?�?��G>G>?�?�?�?�?�?�?��H>H>�?�?�?�?�?�?�?��G>G>J?�?�?�?�?�?�?��[+`=[+`=�=nlk?�?�?�?�?�?�?��D1!>D1!>�\'���P?�?�?�?�?�?�?��[+`=[+`=nlk?�?�?O��C��RdG�z���d��5=\(_F�.dEKP�wCh�44fR �e�ZY OL�v�*��� �����)� a)F{~mp�J5�V�V�X��J�BnQ\�eV?$�b���q�S�x�������������������������͇;UnityFS5.x.x2017.1.0a3;
�Pk

9
MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/LightweightBasicScene/LightingData.asset.meta


fileFormatVersion: 2
guid: 740b181ab47c46a47ae28377711d7097
timeCreated: 1488962999
licenseType: Pro
NativeFormatImporter:
mainObjectFileID: 25800000
userData:
assetBundleName:
assetBundleVariant:

1001
MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/LightweightBasicScene/Lightmap-0_comp_light.exr
文件差异内容过多而无法显示
查看文件

72
MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/LightweightBasicScene/Lightmap-0_comp_light.exr.meta


fileFormatVersion: 2
guid: c3725aec356fa894fa33910a5551f44f
timeCreated: 1488962997
licenseType: Pro
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 4
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 3
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaUsage: 0
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 6
textureShape: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:

198
MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/LightweightBasicScene/ReflectionProbe-0.exr


v/1channelschlist7BGRcompressioncompressiondataWindowbox2i�displayWindowbox2i�lineOrderlineOrderpixelAspectRatiofloat�?screenWindowCenterv2fscreenWindowWidthfloat�?Y~.�aĄ-�T����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������}������������������������������������������������������������������������������������������������������_�����o�����o����^Ɠ������_��n����'��>�ɛꩭ����`���}߮ꪒ�Y1�B!�+�tEQ�q�q��$�I(��,��,��,� 0� 4� �M4�{4�8 �ӎ4����8�8����;��;ӿ ;������`��N���ӿ�;���i;��̎�����0;�ӿ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������N����(���l��0�������;�#�;�C�;�3�;��;��8���;ӻ;Ӽ;ü;��;��8�Ӏ8�4��� ;��4Ӎ�N4�8Î0Ӎ��4�N��N4�L�@4�M8Ӎ0�L8� 0�M4� 0� 0� 0Ӎ0��0��,��0��,��(��(��(�I$�I$�H � �q�q�q�q� rq�aN�����K�e�%�԰h�����5.H�@` �� $`�-$Q��(��"�邬�2�e��!�<2
�jd!0��e�����j�i��m=�V�^�7T9� -PF>��pp�ځ� ����VB�O��� /�(��(('܂��z����!q �C!q�C �S�>������$��#�=+�S=+�ҽ---+��+�SS=55Sm"����y
�)�D� ?��4���K�ˈKˈK������ś2h�#�X<I�b��,f��%`�Z)2`���rCm���퍷li�cw�p�����dk���N'N�'�*V�]Z%up�4��iAAAA???>�=:���T<�A �H$ �AP�
v.vy� ��"IH��IIH��J���KKKKJ��J�l�}��D�OJ���dR*��� ?�`,�`��K���0.���� fAQ�EB�Ib�F�bL� ��,�dQ�,�... %B� �e�������l��9�q^�: j��di��Q
����(T�Y�*�ud
�4��i�����~�}��~~u�g\q�'����� �AP� �93' y����(�ܒ�������^��i^����~>��Ӎ� X��j^E"��>O��� /��,!+, ,����,q`����f\dH(���,a��1`�72p����d�0��2�AYP�TĆl]�6.��.{�� ^��X�=#mXX�cBv�4�kJЫ�B��
�+�����K���zq������NM���,Q ��yEEEEEEC��=;����#�zG������zJG$��x덭F�===C�����Ȟ�O��� 0@** ʆK,. ʅ��X0X �K*2ɐ�� b�P:`�d�00a�%�(�Bɂ`��ra2��W`��e�$I�[i�%6�\� 9� Z�X�-L�Rԭ+h��m;J�P��ZEd
�+ W��O������=??8㓓���SSso5HD����*)�*��ܞ�ɞ������GH�ѽ%%A��V���rzzzg��mL�CS!r� ?��4�
��|��|���
��p����KE�d*3 �-2:aS�y#LJf��72<NLx����$��n{�m��9îa�*֖��z�ն���<Ӛj����B��Ыz� ?��4��q�����q�לqǛ��p��MMG�qZz��'��z��rjjg��zjzzjj��U2*�H�TĒ��=+�SSS�S=3ӹC���\����4��i���I� �2��X(*%B�\T0X �Í`�F(�P�����d&d�$��&��&�f �� 0I�� a3�x��s����kYZ��SZ�k֪h��������m+mcB%jU�Y
� ?��4���\����M��ۍ8���G��������"OOL��L�ZjZjW�rW&�����XD�/"�<��ZZZZZW&zW��zg���rzvԼ��.!�����L��ʈYa��$�� �qP���RYs9���Q�A��PB(���G\��2clɎ�b��`u��q�7!�i��Fֽh��ѵ��m=�֞��V��{c�=��6���� ?��4��q��8��:㓓N755�ǜ=p�z=4�=3��------3��=-5-55B�54���-#��#�ҽ-+�93�SSSS�3ӽKԽK�4��i����QC%[&J�"���EY�EJ����@*.�# �F@�P�(�:����I��fI�L�0ZL� 0Y�ReXf
�e�X��[ZF��H֧Z�h *h��m�mcdM,lD����X��ִB��d�� ?�_Ͻ�ήm�^�x��y�x���p�c�p�v:����ԏJ��IJ䴏KKJ�����L��J�JJ:JJJG$������rjZjjjjg��`4��i���!`�0��2fP-fP,ĕ�.P(*�P�Ì��3 ���;��F� ��h��7�&�cd���{�$#$��E�<ek֌�zѕ��+kF�{cm�m�7lq��:ݳ�-Y��O����B���8��N6q�疟\ۍ6>���=��qÏ��5�G�i�RRRRR�%
�W998�*��=�R=#�=%#�R���9--5555;�`4��i��� �Yl��`Z`�2L�d�(H��P@**P�p�� � �F@aFY0�a`�b2����X2Y9P�@b�bD�&�#.Mv&�%��$O{@�j��Z�h4i[M6��n����ց�m6�ֶ�X�m�jO��� /�\ny��&$}sN997755>��^;p��9\e�/��cQ��m�k�qsssn6�n96��
����=#��RRR�RR=-5+��=53�>O��� /�9E�‹I�YZPBMraa5� ���QI@������&\( �.`%0� ԫ����R��سE‚� ׮^�mw����R�u���m ��2ݱ���7lm��{��sBe���i������y�D��\ۍN�����\}Ʀ��y�8qq�ۆ�0����c.��\0����Ӎ�����<���P*F�oD�ttoIIIIIJ������$�N�O��� /�%0Y�b�J.(LdQ�Y(2a��1FA[!s� ��|�+.�s�p �
��`�e%�%�԰h�%�%�̑rHd��"k��H���$#ֹ�m�m�6�v�l���� ��N��h��5�V*�����K�c��G4���.m��M�m#���u��p����.pÆc��f1�<b2�皚���y����y�hފ�������))))^�����������L� ��*�=&�@��¡aW �&e�B�I���F 2�� K�. 8�3-, �K2��̴�;.F�PJ�P��
�6H6JH>IK��Zi틷la��]h�c C�\�:Ӗ�.�O��� /詚R�  �.8��Z~zu��p�h\r8���\8�yq��a�x�a���]�����>�Oy����T���������� y�ם���q� ?��4��L.a�X�
0(H��L�IS���`�@?0*X�`� C�.0��W**�p�bE��[.,FX4X
,$��2@T`� (��a �}����m��֕ZF��Z��-�j�l+ U��O���
�%]�^���&x����mj\㍮8��g�`iq��e�1��.0��Æ.�x���.��ǣ����ӍM����4/ED�N<H��������<��;O��� /��Í�Mq��b��� `�q��C��NQ�A�YPxY�A�bEBR���Z, J.X�\�HYłB���\��NI䂂V��R�� XS6�Aj�kB��Z�{AƫC�kC�V�z� ?��4����\�uOJ�r6�=+\��3�6����\qi�x�e���<qㄆ0�w ��������MMMMMN�B㤇����&��q��rnnnO��� 0����Dd�!�;b�
�@�E�`Q�5`�0U��X��J(PT�-(*P�����r�e��*�OX�O ���Ȯ��;Ȝ�m�%�H���i���*
H���LG��O��󓓎78��7776����N���P����OOOOP��OOP���X�D�2'��=L��dO"�q���R)�@�V�@�
��H$ ���4��i
�L̼�l��lR(�.`'0ذٕ$�ذ>M�&�c�XfP|����)(<Qrg"rޅ��}�^��_E��G}��kZicDgH�Ft�Ft�FuS��4��i����nq�����njm��p�������������ON���N��N�˦rg�X�������D�2*�L���U.HI%%+d �T8�A �t�� ?�_��`!10��Te€���L2
`\,2X`'`�`����.ȡ@���G�(�
2M�$�dʰ�ě�����#���]�t7V�eY
�l��j��k�$�o#LF�#quP�4��i776�O6�N54��8v:��㐐�zzjg'zw��rjw&zjjg�rZG���VB�/SR�2������=L��::7��zG�z�EC�8���4��i� ��
�.d(0�!9�˃�0�8�)��X,D(<Ł���91�n(:VPt���Gf��`�n@��^��=�= �;���X.��]k֌-�4�i�:�����@i������ӍM<�}��4���c��ۇ7V�驩�����驜�ɜ�t�IIJ���N�K�d2�jj^������*'#z::::G������<�O��� 0! ��������ˀx\ 0c �!PZ,���X�pZX�
0$`��_(,P
2X��`��,�H�ba�eX\�e���sn�V�"X�U�XB���kS-T����HF�ReI���'U��O����=6��~j<��r9�8i�O��j��53ҹ53���93�9#��%%%%%+ӫ!y �C!�ԽKԽC(����������������* 4��i���.�������E���w�������Ł������d����e%$Ȼ/d`���, �{�.y�ϿA|���2�ՉV=`�c։�֋��i�-h�ҧ�6��O��� /�4�s�6���#��ۆ�7�FcNx��%����zG�z7#���zJG�z:7#rud��^C!��CD�4T4TTtoD�tt��zz��� ?��4� `�g ����J�K,�h�#��$ŗ��1 �]\�H�@– ea�,���fɖBF {Ƀ� ��rM���ܭ�QVB�²���J��)Z
U-z�KA��m*iRХR�M�N�O��� /��qi٨�u��\n7�Ɯ3�F1p��W����r:*****'#���rG�VB�8����z****7���m=EEC�4��i����K��T^T���\X$T�qp��!Pf,�`R �.�
��I�P\���dN͑;6D��L\���;�Ȝy��eieb5ubE�V$YX%X��U�hL�� ڴ.ӚZңJ��O��� /���8uq��<uÑ��u�K��#��b1���$�r5�QQQ=�Ҭ y 4AAACB�TOEEEEGH��������K����iP�P� Ń@vX0T KK��hP"��X`�.��/ �  ���(�d �d�L�L�d�eɅɗ& &d�$��խXB�Z�*ЫR��V%X�h�J� i[G�V� J�iZԪ�@i������v;pӆ�q��C��Cd��4�����D���x�'�T�����訨h��������������@��@�B�444TTTTOEH��π����K�<(L�8*��ܳ�b�,
e�X�qPnYr��Uq@d(�`Qp�(�FAт"���
Y3dHNLHN���"A�ɮ\������
��
��M�#i� �%i� �{bv���֕@i�������q� F�1��a�/p�C�p�ƣ��<N�4M0$x�$x�`��/CCCCCBㄇIG#�J�8��������PP���н �QQQ�;�4��i����L`��[&
�**X ����E���>\��
�( Y �и
�pZ,XT
�` .@`!0� �E�����rEWap'.���MpI2�׶�,R�����Ki[@�Ҷ�i[@��ƛic@44���"jO��� /�))(�`f0���b0�x��# F�0���"X��BB(��(��(�"��E�� .6��m�N���qǚ#<�����?<�ACCB�/B�/B�TO�����K�t�Q;-0"a��Y�,�E偑��AHU¡ ���<Q� �V( L8�110 LLi��B�k�eܸ7]냅���) ��w��V�=`}mh���"i��{BF� �#h�ЭQR( ?��4���nubJJ7#�&<��^'x�'p��X��O$&x�q"���(�q C�1 A<i�Opˆ�Q����sDg���zz}��}������\��m��������K��E���`�eE����������, ��@1��t�@��Fd�� ����ɀ����p90��B` $x�2FI\
0,H� ���z�%�%�T�K$�֒4���"i�@�Y��I�4��i����7�F�S���ѽ !�ˉ�7 "8�%��$\Dؕ�H�qB� @�ADw��c1�ˆ�Q�ۇ�μ���8���<�����P<�/�F�3��O��pQ��YPlUi`�b�VV�&&�k � X0 � V0U�@N2��&$\�.Xqp`a�����
X���JJH%a䁱&��(xue`Z����Z5h>��B�E�unV �Մ�R( ?��4���m�.p�f2ᇚX����\�Ȟu�)ABHA�BG� �(��8�p�@�>���� F#��f2�� G��<�θ���ϸ��ǘ�<f4���e������K�J
�d��PJ�
�,,�%� bb�0��@��� ���`EB�!@ �L6X.�p|����A0#0�d���.� >`� �U�?$T��ւJ�a�&����P��@IV@�ujU�%Z�K�%U��O���� Fc1���b1���V����A<�L�
��[8<��@�#�n�b%�뇞lL�e��F^3��iäG'u秣���x��1�8a�1����4��i���JQr�̬�HVT$-,ZX&.@\@Qi0�+��M�RdQ�G.�p,���v� ����a����y�a!) h�� X��`&`����Z�V ��T+z�h����Ճuk��uOU��O���� �c.p���w �x��w �X���=:��:��d<L;�ׇa�[<Dؑ�� ��.%V/��a���cQ�#��D�4M<OxӇx�i�����O����Ah���`Łx\��^\.A����I� ���r` .L!&`���2
�K*X2X ��J�X2X� �ØyF�x]���mkbʹ�n�.��7H-DKHU B��!�B�)B�L�� ?��4����5�<iq��c.���toIH䔎H䔎H䔏IGF��H��F�oL��U.!�H�A z�H$ �A!y ����=53��R�+�ҹ3�4��i���� �^, E\, B��5 �. C ���Arb��L\��'&.͑r���� <��YQr���R㭹��sgl�w��w��y�5�%UcJ���Ԏ)�R�!�'@i������n5x��1��e���%��#z::::7�z:::7#zG#��z7#]�ҪQQQQQQQQ ��HA �H$ ��z�R�SR�����i������ EBP�p]p�/ T
��p)���Ʉ�˓�0L0����`�ip�pP,*P��@p��h��a�ֶ��l8�V��{��z��
���1Y
�%jU�e(�^B�H7R�MJ"( ?��4���(4�� �3�D�;ı3�ˈ��#��r:'�z*7"��r::7"$��h^��U�y���������QP�
R�����}�KJ��KH䴴��4��i�(H�RPP�Jeq`�.���\*�X�CN ��ผ����������yar�.%*�AIA91�j\m�l�vͷ��oq�\'Vd�-T�A�m+�z��m)R�#DU#dNS��O�����F�, p�N�,H�#���FĮ*EEEEEEB�/CD�NEB� �y��zUJ**)ܡ��*****'�q����q�������zJW�i������fEJ�AR�xTX�,.�P!�PX*X4��C@p$4€ 
�.��,�`�p3.,X��@\ȱ@=&a����k�l�m6Ƕ殄v��P��4���Tʵ+,R���>��DH��ȑ�@i������#�����<t��%p�%x�����D،���h�����\��hh??@��F�==;��ӹ;��;�8��<��;:󳳳�>�JJJJJH ?��4� ��)('(�!…��B��8V( B� P>��A�0|<,@LHM̉ �������"���*+* &�DL���$+��l�oq�:���d�9PX��ë+�+C��N�b��5#$R( ?��4�����r:!��p�AH� �+�"�W�'T�����((\}s������=A>�j��C�=EC�TO�rrnnnq���������zG�zJG�i������2(Qr��1�,�d� PdP�*dT�
e� �d4��������d  dP�$ �d��@-*����,�ɖA�3,�\�����5���1]Ru@��:�� X��ma�GXD��a�fD��i28 ?��4��r::7!�r�z��q��Jx�� ��L��~����q��q�����q�24���L�e M8��������뎸���8�h�ޒ�O��� 0r��f\LF˙2�DL��.(J �b��G A�.��#��5ˇʒ(q@�W����d-f�y�"fT�:�n+#
ި)#� �z��S�k+ŕ�b׭�z�:ՄCN#�����K�**!r
� �q���x�q ���C��DGކ}s���;;8󳳳�����Di��l����j>�SSSSs�6󓓓�==@��GG��O�� �2�+&a��a���,���,�l��AB���h��B1`��h��B�� �
ܠa�
����@(d�!�L���dU���9�224�jӪ4�:�
U(T�Y�ńK4F�@�R��H։֪X��1�� ?�_й ���Ϲ�8�����Ͱ!(p[�; ^0���O8��g'''''g'gggg��}��x�~?y��l��N��N8��N�6��ۀ����K���2#&�b"n& ė�s!�l��8�t��R\�pL.*,� P�A�N  ��0��q@�6C�������\�P�LF�A:���UPP���k[ZZ��Z����б��jЕb�8 ?��4��r
 q�������������x��vxVL*�P�,X'Vm�^vu�8��6��BbB8�$�)p�z=��M��8�������<�����@i�����Ʌɬ&d�0&\���&�f\��A�B� ���������l,
�$
�RPX*1@X*t�F`� �`� � �2E�ap=$���TJ4�B�@T@�j�5�3-#Z��K@�Ҧ�+ZM���-�����K�
�����q��q���睝qǜ�����
�l�+�/
�L)�/
a�Ċ�I Wđ,KđIR=y����p�~i���m����nrru� ?��4���C�V�q0�72&�B�l�Y�\�p���˸�PY��_,,Eʖ���@�+���PHT�1$���*��I���4$���S��Ua2�Մ�\�)i�-V�MV�ڴ4°��� �� ?�_�nF�q��q�����q���y��y�������A0�.B�O �Cb'�b'��'��'b(��rǎG�=p�ǜ>���~>�So777dE���O��� ��l`"2$2�a�`"d I�eC&Y���vX4\ �K��`� ���@XPT�-.. �@ EB1P3`P��L�.I�@0Y�f
0ڥj�*�Y� U-V�ZԫH���ЫPDd�A�I��i������D� �.C��Gg�y�g\rrrrni�����8}����~?�2���xy��?�C�1N�qÑ�G�<�珼}ƞjjj.�~!p�#heT�� ?�_�(������I0��32��VYY0���q�![.,�
*� �8�LR�LRP(PJ
��fK� ��`���R@��d�(���սX;X�@������f�VV�OV V�
U,W��O��� @�?�=C�#:��9999555\uîp�v;x�yñ��v6L>�=$�8?��C�O<N�r9�Gc���z'd=�Xq��?<�π����K� Ń%���BaQ����P��@�����Vȱ@( d�\�J��ʆ 4��IAR�J(*�b���PX�����H��� ���BL.�z�F=�`PZ���T�V�*ea�'�"Z�i�+�R�b�p�4��i�0������ a�v��1����p󇣱��;��c����#���v:��O8㇜6�����^"x��q��ǎG�$6���<�����N�u�`4��i��� E,��.� �c�a�Aʳ _J(X�<*H�;*��������褠:)(Y�%%�IPvVP*(F�qw86���u�\�0�9]C��z���++�^�,Z��֜�:��êޮO��� /�G�.�-�����8�シp�$#5p�v9�G#���r9p�n7�G#�y��g^uǧ��zy��V%�$nnm��rq�ggggW9:�� 3�ܶ֬�ݴپ���m�������߭v�����~����w���??��?s������k�_�����=���������u{���y���������������������������������������������������������������������������������������������������������������������������������������������������}����������������������������������������������������������������������������������������������������������������������������������������������������[����������������������������?������/���/����?���'AAD���O1�clQ�a�a�� $�I(��(��0� ,� 0Ì0� 0Í<ӻ8�����N8ӏ;��8��8�8�
;��;ӿ8�;������#�P;��Ž������ ���;���t;�C���P������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������0�������N�0�����N�\����x�Ŏ��������N�����D�N�P���������\������ ������O;���8�;ÿ;��;��7ӻ;À;�����������N���?�N8�����O4��<����7�@8��8����8�������;����N��8M�M4�@4�@8������� 7��4�L7�@4�4M8��4�L4��4��Í44�O<ӌ4�L4�L4�M0ӌ0�K8� 4�M0�M4� 4� 0� 0� 0��4� 8Ë0� 0� 0��0� ,�
,��0��,��,��,��,��,��,��(��(��(��(��(��(��$��(��(�I$�I$��$�I$�I �I$� �I �H$�I$��(��(� 0��,‹,��$�q���O���;�*�L?P��TP��%Sʁ]Sꄅ����Ls#���T<�x>d������X`v�,��^�v�*2�f�AMS�Md̓U0REDG���m M�B��uh����h94t�d�9��'a��?�
���Sc[����Tj�.cLh���ɕ�$,2�Il��Yi��e�KH�^Z���i�������8�<�/��4Ɨ �"�E��p����c;Ɨ�o�\lx��\i�Q��Jp)��S���!,�rR�U',� ʹRb��HUʌ�$���� k��I���8��#��Xr��E�,�콑��#H �V"$�"�)�>EG� Laq�ȍ=����Ji���6�A�N�J�)��S���-K2�����4K���� ��3Fh����痞n�9b<�#8���vX;9D����2Ӌ2̲���o8q�� "k5�͞W�7qfp���/.K��˲��w�/�[L��ye�)��S���%O���K%� �X2T,�d�J��J�UULV �,d����X�a����x<2l�=1q���u>s��`p�5,8Y�����m ����F'&���“gm���!х(���#i�΃��
���)��.7q��X��ye��c3�h�/8�/K���/<�/K�9L��ȹ�Y�F�'e4&͛"SH��-ħ���o)�5y�����y��n����ˏ.NR+�k+"h�G��h��)��S� �$�����r���\~��+�X���"���E�z�5k k*�����:�� L�x/�a���E`̳�϶���ި��!]#�E�����@�y
�t �P"�O:D�P:yЦt��
���)��%���Xq^Wq���g�n�q������.ˮ.K�.˲�˒������#(C��Eh��Sɭ��f���BP���%i�EybX�&�y�f��SyQ�G�J��f����f�S�����N�"��<Q�YT��ՌVÅ�5q��W� ��Wa��)q��,9X����+�Å�k,
+����OT��.<2 F!�7.d�HT�0�����&�z��m hN��B`;GA��m;��ӱ��?�
����eř�%w��Y���4�\U�%7�Vh��i��rs9yrr���^\q��\�%uIɒ�^Jh�'��3yQ��E���h��D��G��Cd�ΊR��j�W8�Vq��Ҵ
���)��ܘ��)�
$���J�KVEa5tW�r�b�\Na��V�mq��� -X��b�X^]E��TLRY�&T0����q�pț� )�����4$�!!��r�'!D�O;m�v����O���;�jY�\ZyfXq^VqZi4�eIRSqNR��Q�^QqE�M�V��9�巜��r��q�׌Ѣ3�j�!a�ai����E�^F��Gy!�S�rd�tSyNSqRUyVi4�M��?�
w�rQ��2�7��i�ʀة�ɪb�LT�d�2XW,�������X0�l0<`��:\t�;,d��� e���@Ɠ*(���ě��0D�H�%z*"_l��Н�f�4[B�
���)��.)<�ٳe�]�y��i4yVTqRS��Q�\g3���Py��'��⃊�����N(�3G�M��g���KRӎP^p�jp��%�JȔ�f�4�6h���cKCc�{�|7�?�
���2�P7)PHQꉪ�A1J�b�XKU� +"����Wz�#�!�`6��&Ȉy�De���� L�`Ta
���ŵ���@T�B.q$TQD��.""w%6���h[)��ʭہO���;����{��{��l��{��Rl�)��)J2���Q���(J|�'��'���/(��(�r�ʭ�8�m7h�-KO8ym q�׌��3��/���;cSƧ�q�6F�� ��O���;�ɬ�)��).��PeO,;X��%s%ǫ�,�Å�9���
k���l�!� �2 G���|�����v���k���J �,�1X�LU�a �U�*" h��(������r��i���O���;���� 9���K��JD�\GqF��g����&6Ol��{��'8�(8��s��'8�(8�)Jr��*4k+�7y��,�.7qe np���s�̹.K��e痞_ljllx����)��S��� i90Ғ)��ޘgMɆ4�P0(��mTV +$���� 9���lZd20����l���CY���BȎ͑!��(�a\VYEU����aaV���c
M�@F�����F����y)��S�����N�Iq"Iy"H�Jl��c��%�$"2H�<���GQ H �2ȍ��Gx�$<�&<�'��'I�j$�%'�%W�eWMk5l�W��p���^s-�%��e�����y�)��S���79�܋�c�E�SDI(���P�,��YX+�Y��VM��`v�O���Y�������w>0��C�F��� �`x��q���Xr�LU���aI���MtP"����Dor.
׽��O���;��/���]yv]�����E$I����c�ȯ"8���R �����[!����G�$V�V�2[�rcɮ'<��7��S�\Q�U�<���,<�7�^p��g3��˒��S�����N�J�2��;��*(�@r���QURU0К酔�X@Y5�tYVQd!�6x"<�T>و�y�!X�g������<��ha�D6ZX7*��j��iAYF�$�E䞈“H�o������O��gp����4�.��.ˏ9qq�..<�[yn[�����i�� J�������&����c �$ �7�$Y���T�&��'�����Uh��Y�ͥ�e��eũ�eǗ[/K�)��S����_k���s��s��)� 覊�(��U#ɮ�)��c��T�O�,8d��#���!��Y2 '�́4�
��A� F!��OO2=<b������pUP�Rچ*��L �,��%�/"���(��)��S� ��%�v\qq�3�n[qĴ��i�-K2ˋ.7q��2��R̴�yMRB�� �6�r�2#dI �W���H���1���6�2�ʯ4��j�ibo7ye姖�s.KρO���;�&����H�Hnt��\0�ȋȤ���!�nP|�A��P~���MQAe kX-0�!T�c��b��dш]>��1��|4�Bb!�m����B���K
�P|�i��=1�4)Qm�)��S���cK��/��/�h�����닓����-��q-K2ˋ��Xy���w^Zyĵ7H��R Df�G �Hy"Hy*Ml�'��o)JO4yY�g�w�e�ËS�m����S�����N�������{o n��
�Iȹ'*)��*$I0�J.�>�ʩ*d�<.8Yu� �Aq���k�Xv|p|=�M�� A �'����<�720 �W;X�`yP��&Se1�%��O���;�o��68lp��58jp�/��/���_p�/"r�nr��e�̶��'-K2��'��m�^^�\ZT�b4����t�'��'��3l��I���i��j�g��Zyķ-����?�
x��(��(=�'6��������WQ#�����*tȉ"�G(1�T��a�g.1.�HL6��X��:���^8̛>"���xL>�"�-.**�Ee����j����Ƣ�S�����N�5Ƹ��S�����4K��3�h���^��חeח�^��3�^��r�q���.K�ۋs�̹.�g����k�Jh��M�n3yFRqFSyU�i���,K����ݳ��[�O���;�̏u�K*��`VXp� �WVK�a������� �
k�Vʣ�AIQʠ�b�(,b��ö@+dz|%�H���(*} �U6Q ��e�8H!0 � a� ��8�0 �r��8Fc���S�����N�rv]qv\������p���p��%�����g��\B46� ���c�Ǎ��B҅W�i���Ҳ%g��j�s��ˏ.8�.KI�(PH��Q��7l��ܷ-��\l�����..6r�
���)��s�y����6[XbY� ������r��`Ye��i�LY;X���
(�FTQqI��P���zxW`�����k8C�� ����b�] HEƚhci�$ű�P�#�F���)��S����!�gE��ێ,��o,��+��򻍜W�<�⻍��6���446F��#ZG*��4y�f�V͜f�4�LL�&<�&��( 3y�����iZV��͕�,�r����W$��S�����N��G��χ��|>> G���!������å�\t�9�;a��l�L!`v�@0;\o`t�D.:Z��`��*�P�.���G��U���p!�M#��H\��=���f���t �a�o\�#��`�a��:�����O�����J#,d��G��L:4:,KĮ�g�8�6D�W��\k5���+"i+M^Wl����ґu�F��%$G��#�IN%IO%ɨ �P�&r���4y���!r dt%�s��̺���)��S��5�`/D�Z<���}��b7� f&³-�+.�F��ŁMw.(�`Rb�����m�at �=1m%RI1QuB���8NE� ��-� �@О�C�� � Ύ�$��w��?�
w�[�H����w��iC��'�N��k5��VqY�W�h�G8�i4�8�UqVjѼ��̴��E��[��њ3�_�Ȝ��8�8��tM�����[qn[��\�]|
���)��^X�`�q��#�A@�z| G����|z|�|>1 f! �����xz�o\=\��k`;\�0�� ,����Rl&����� T�U�RY��$���մ-����'H (�Ba@�cq�p@7�  S�����N�Jy5�s�i"���Bq� n�`��!����Z*�Vy����f��J���*J���Z+�v�q8yns/!�4K��5H�*6h�W��NZyĵ8y��m��^\�O���<eQ��.WI���L�I�O�9�3ȟ
�>g�>�П F#y�i1:<#�BȚ�q1{k�������\\Y4�D�p���b��p�����P��e���4"�N�@1�z
��)��S���%8��De��!�m��Y �!���_��\.������8`;# ' *8�)��*MUqRUl�Z�<�34�I��H;' (�2����ʍ��Vy��������8�<�p���o�O���;�3��l�y@?�ʃ�LVUc&,�3#�L�� �xy#����|z|��~b��H1LBI� �A���x�/09\��z��>��D �YP:.9Xe.� t�7�� ��\6����ށ� @�@7�r�
���)�ʮ+4Xh��9H�2zde�1F ��0��G�<[�N�-E���]�Å�����-�сCl�"H����$��vP�f��eWf�G��s�y���Yy�e�K��V�O���<��A=F��B���* ���jQ�X(���R���|=<'�<���:�D� f@Q�4d�6x'/\'���#�jU�ZTn\1.��R�r��ω��DPF���E' hVB��P
n@'���O���;�RS��R�fr���)�Vhݣ�jl�9R2�����>p��������⻅x���Z�Qj.E����!HR1���C�2T����6��*<�����D���3y���NTyRT�]��?�
w��2��FT�e@�C�:��G��X�1TV1TELU�L�=Q�ࢸ����vbY�xbш|d�G��\zb !���!���2X����P`p�k�=M��6rv���{�6дv���aB6���S�����N�fٛ�� >N���5��)ĩ&Hp�$<��A��F��3X������^+<V�-�Qi��B��\��� E;#�d��$FD�����$d) �G�Fy�#d�!���)Jr�0)��S���Tz�iV�
��bR�dU�C���U��m`³k�E��b]˅��X >�M<� ��� Z1 ��>�� ����A���������X�B�@$v�C��"��V����m�f��*!r��� S�����N�1�1F���cd'��$���L�c$d��w�E�\D��9 ���C�O!�?PRPJp��A:'8Lp���З��Rx��N+6,E������� �I �!���^-E���p)��S���:L$�l(ER�*�SʹS�ȱ�ͮd�.�Õ��\t��.k�\v��k�`v��;Xp������ _<:<�L��c�&�*���ȝ�� ?&� ��8�����'m!�O���;� � N#�����"�Yp��]Y£�8��U��c����6�R �2 � �A��G�$W�$Y��Ȫ�ʊk����Cc�6�g�0ܐ��iD5�!�F�fĘ��=���W��P��?��b��S�����N�J6�=��`���•j�(��
$�6�偵j�ڽpnY�Ʉ,�� �,���6�A��v�U�X(����e�U�& i��4,�@�I%�d 1&���� '!p%o�������kOC��?�
w��,GlKlNx�تаеQ"��g
�Q⛅�."tMp��TJ�1*%�Lp��5�>'8QlTx���>����18��Gx��L���Đ�����E�
�(6)<S���-@���O�����I4�L�U5U@TUFTaP�c�V>�K�Xx�����Lk� 2�������,Y���[<=`����Y\;`ENj��
�GK����3�rK"3��C�T��Fb��Xޫo|
���)�ĤDtCtE�� n . ���_H."����+DXh.�� -O�"6��S���bk���
-��
��,�-E� ���)�7�qY�m��\��F�Ay
D�[#�2<��[p)��S����(����7*�H�g2*8���0&�@M(��vQE��ʁ�g2�,�����[<3'��y�<��xg�& ���S �����KB�G�"��S�A�S���4
h
nB�WE��4��n?�
���*K�$דd�-ę%�+�� I��SS� �T���]1�*�D�)�"!J�
���Uh+�������A���gxl�M��%��)EW��-�]h_x��� <�"H�!�� �4`S�����N� ����=��Q>�H�I4� (� *����k(�ʀZU�G�����˰;dG��r�bq���s M1����-�;\o\z� l���kΡ� )L �LmI��zEtC���O���<��r?p�-�Yp��UMF'8Mp�bC�w�� �
!D(mlEx�"KĄCR�}A �L� ����PL$��`��a>�=���~pA4���ai�� �����el3�5�"��<Ix����)��S��W�����3�xPzO���vrNG$�99A*�n�(�LEDA�*!DS}W� +��00��}]&�a�@�]���Y��1H� g��W�s�F j<vb�@��AyT*�8���ڠơҁ13��S�����N�l�g�UqQ�)E�n'���T��K���yEq
1$?DWHQPKx��&%!�&�LDH� � .#�IhPlR��� �TB�AE��Tx�!
�B���dxdpgxh���Ȅ��ؘ�
���)��*1�v��]���Zd;`#���h�v���
O���ŀ���`VXt��*�<�
T�>� ,=X�P�1L<EWB��QȢ9՜��'m��6���� F�4�;h8�v�Mt@5�3���)��S��
횢j�G���6h�l⼬��ʲ���M��P���6F���B#KcLi���n/�h�����FC�A��6���H�s�z!�F� �p�'�(rxqD#� ��Ä#a��xoR?�
���X�:A��b'�m�=�"k/<&��D��<$���,�l�L!d\<7�"�a`��k��rd�^�9Z���P���3U
�d�&j�R�B���*жhգF��ѫv�ZL��t��E0�`�O���;�������cy@���9�&r��ћ�n(�SD��7�)��*JR���-�� oR/��������#J#CƇ�.�/"]��痣4gl���ihk�N4Ɖ}�Kc[�Ǎ*��8yi2ӠS�����N� �.;\vb��paL�d0t�~�!YYy���c<=1:d=`O��,�����C�#� ��P���q3ʮ���k��Q¡Y%m� t�v�� �N��A����loBP �g�#i�(C�ӎ���?�
����+ͦl�S�0�I�y�$���Mq5��Z'8�(4QqE��(<��BQD��U���yStM*<����P�p��.��������3<gy}���SƸ�-,V��i+"W��p�
���)�ŵQTUYe�5���<�C��������4��x42�!��φ���� ���me�D6dEe�����(��b�uu�P\P��ϐ�i""Oq��DD)���:�:N�t,N��S
���)���w�l���f�4������� >N��&8��S�R[d�:Ml��>MH��=����P�f�+M�,6YyeŇ�,�O-�s.K��˲���d�n4l��]凖,J�g���O���;��T?P򠞱�����`��0.:<
f!�� F!��*������,���x?<�������i��� ̇l�l& �l�L�ꋪ��#JH��/x(N��{ÓH�F���㡬�:*vL#Y�u:�O���;�����+�k5q�����⣊n3q=B�"�p��vJ��I�d� �d�IM���ɯ&���{E'�h�ٲÊ�+�X��[�r�]2�d�2M��R@h�IVVy��%g�͞k+@���O��[QŅPSQE����+�+����K%�`@]��z���P�#�!���/1<4x1�{!��ψˠLQ<a<'��b2i�Z�I��0�� H[h69� ��9�
S�@�t) l�U;y�
���)���w��g"U�8�⬧)L����PD��k�J +�lk a�Hp�G��#D�*Kh��Y�Y=r*����� ���<d���䆉rd��3���n*8�٣ʯ+!+8�l���)��S��"㕌
��C*U�
���`A�d��ㅁyq��+�b���+��+�2L@�8�̃�0�8a���<��5\GP8�8�ʹ����ɸ\�B=��s:D�9�� �9�*t6� S�����N�Aq -��i���WSH�3�������|��l�&8�&8��S�.� q �b�'�n;�'�Op��=⡀}P gD7�$I !䗒�K�%������O3��$�Eq �)��S����� 4�\\�pҹ��ͮ"�TDV�mU����iY�u��fY�6�X]� ��U�Vj���g������DVY���
�E�� )!H.��!}C�`;P�F !T‰�@;y�?�
��� n^0�� ��.�@h����BPq��'��k�o&8��[�o%�2L��C�RS�rS�RS�ˏ�Q�'�OlT0 m�������cq F��#c+�� �����@�$9 ��S�����N��㕇�V%�K��+(���P`v�X�
�����V`x��� eq�-��Y`x�-0:\% �����`r�($�dET=U��X�ô�DW"�ۼz��m��H�P�!;@`;Z0��O���;��н���� �E� ⳅG���)�Sx��`h�����&8��S�1�2� �$��d�*M��N��o)��\k5�%*0.,�,$(�(�Tx��]��ŧ����"4KBT@n�IJ�
���)������2 FN�޸8��A�tW��`L9�J2���G�k&�x�x)��!U��Xm����W kW K�q c
�i�R]15�zB
(Q �i�����;m6�m�؅�D$4)��S��� H��jpgpepgB!4��
HEX��M��"�����%�J�O�$�H�M
�Z�[1<�!�����_p���!��!Ȓ,����!�T�'6Ql�*<��9J#+�ȑdg��x��
���)��|It�I,��O,yS�mc��\��OO(|txFGL���� ���P�2I���t<���|x:�π�x><70<`%ö�#�qs%�*} 1&y4R]04��(�M�������ai�����HP�5��?�
w�s��[�.S��U ��B��Y���Tx��\h14� �g��4E��b+ĆĘ�^%���F�X�س��|��B���E��TEE6�W��-�Nj�~0�cy �#�o"��#����O��+��a��
���C�����郪l& I�P � T�T�"�.�� pe���bو�F >��1��g��y� @��A����C���˕5� ,� i��7*t�:"� zH� �B��{�oB��\� ���?�
����Q��� ��.40�Bl��,���R �����u���B�q`�X'����(6� "��&�%��X��!�e�f�&�kĖĶ�����-E������"�b�B��� � _��?�
w��U%�Y RMT�Qd�;Qu Te@RT��ŏ����U>�&�d�',9Xu�+�㕏�;< '��@8d;>S!���2 �Y�������, K�g�ES��x��BJ,8����`!��a�8���搵��?�
w�A:&D���#DGq
����a�������� ��ئب�]�m��\p����b��@�L+.^��)� �������� ���@)�B{`�!�SxD�+� /  / M�f�D5�[$5��?�
w�gI��*`P$� �E4A�$�i� 馠E@<��@�����.�����`�mp@2��_]V�«�ՅYb�K ʊ��U�)(J� �b�VSz@nToT e *��I�-��-��
���)��+a�� ��!��"�Dpmpl���tC3�$1�"�� � p������[pZ��\����/�"� p��hxk�M��В�1�*bA��°����SH!G�6�!m�� ��V�D5<5"� p�ດ
���)��Ts�]"-Ȣ�.p��M��L��Q�P:����1c�(������L���xx��zxC!$�s>�����y���t`<\ �MQ�),:Qf)����9�a&�Y�.9WJP)��S������ ��xpNp;$ w��,�$� 9iH&8� �G� � �#�
�CA�"�g�Ɓ� jhg@��s���� � ̈́���Ѓ�„(<�-�+aQYl.</<06m�7�V�;�K�4";Ę�[ہO���;�G��'j<��� �Y�IWp\� E"� C"À~D� ]0.���VQ`�M`Yq��E� L�.L#�/���x�p���p)���.0v�0[&@�Ɂp&V@�T;PB�0��0eP˜5$v���)��S���-�Xp��Z*�S�N'�Kp��-�TI��"8Cx����0ȨZT*&����Pr\tBa�5A����H����/'�^N����h!^Ф��
�P�!�������� ��� ��)�9�@+#�����������������������������3�������w���������������������������������������?0�������������@�-(&!@
"��
�$&$ L��H" @� "�!B @�@ �D������*P)�A�!����X�d�k���<��dnВ;#a���?kmq1����)}� ��!2�JZK���b �0Q!CD@A9`(�L�*�)8F�a�FAl�l�8�p$�b�H4�!���t��/�ܾ�f������U��߾jm���?Fg��W���w��}����c���~��aXYƣt֜��6J�� AkR��DLd��'&�Q�+FN��aυ�dRDEBJQ��L` I +�(+L�ū���H�(��Q�1 Ś��J5���$IJRR���<!���1Ea�q� �$�I(��$��(�K(��,� ,��0��,��0��8‹,� 0�M,�8��4�0 0� 0�N4� 0ӻ;�@4�8�8�4�0��0�{0� 0��8Ӿ48� ;��7����N8��4��;��8�;ӻ4�8�0Ӏ4��8�@8Ӏ04����4����8�0� 0� 8Ӎ0� 4ÎӍ8�L4��8��8�8�8Ӏ4Ì0ӎ0�0ӎ0�N�M�@4�L�L,� 8Í4�4�N8Í4��N0�N8� 8�� 8� �� �4@8M8Í���;�L�7�M�;��4�{;ÿ4�7À7�N8��;�M���8�4��������;ü8�8��8��������������7ý4���� ��};��;�C�8� ��M����;��8�N�����M���;Î�� �����8� ��8|;û;��;��8�8�8�8�;�#� ;�s� 8�;ӿ ;��;�c��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������8��;ÿ;À;�}8��4�4�M8� 4�L0�L0��(�H ����������O����G9�NE*H�m$�*A�A���>Hi@�t��-��:Y�)$%�5�y�b�b�����j�<@�`��C���dy�I�)���.���:��;���������N(N� 0O�
R`�&90R�P�*�����j> c@]4* �ai�� $��нP`�0��!0c fs ���@�H ��Af`-P y`�@T�A�H@�R48� �LD�X#
U!&XH�
-�H -������p<�x���ق���" P�4�' ,�������ԁLP�`T�&��a2Uc�}d�t�3M��� �X�h9�I�_�`���#�\��L a��H ����xb���m����dtb���GF�п ����x ���|�?�<_�(<#���ax'��" �P:|�
�B���aO
u9B�|C����2���`�8��A�`�9+#/X0
�0G��>i0� �� �0"���L����X��Y@)�+ �`(�U��P�PT�R@ � �$g�$d�� x��������dK&X|!��%
��Q��:ND� �t����t�FV��IGgA��9��3����U<�Qz�4 G�I1��5�Va����4x���`l�&>h��m&sA�8��h�!��/������� f)�,%���? � �|P����!T8�q`}P�� �x"�~P��?��Ѝ�
��Ƃ �s� �  :0���"XC���p>�ań,F� �p����� �� 09��xB��@�������&R-@�(��8H!N��@I ӄ�' C���|�(t %�M�������F���I��f� STЕ&L��J���hK&d�>�� g�l�J��|��u� ����?�<�x��jT6�nP� �� �6Ķ%�?����Cr��mQ-���"Q�2Dx�p��3� AQD��Bb A�,@Q �i�2���a�Ҡ�h?�,�� �ṉlؖĵ �a����n�lKp<�x�����A�Iă��,
���t1C9�h`�gig�fs���m�6� uZ�������7T�G�&�u)3G�&h8M4uG�<MG�|��&.4x�$lj�ɏ�������ha�$ 2�E8����~���Ej,� @�,A�1 D%"$[Űơ�"�c��Df"�V"�ơ�-�b؉"�A�1� XődX���+Q!(�he4H& 1)`x�����������A�Q�ģ�>X�ua���QՆ��k�lk 7 n$O ��5TH�IUPЪ��MPسCZ� �� f�CI��(Ӛ �%45�����ɣ���������T��>a�>���(�W�j,�"Ȯ�S�;Q��G#�N��<O����"v8��8����N��C���@�"Ȯ�Z���>a�=a�=a�U�����:s�� t��8�����ghg`zgm��m ��w���구7*֪
j�����5MP�4��ST8��i��cI�i�ɄA��4��`x�������*���=���*b�8Ƙ�aFc1��f3�F�q��n5Q�0�$�Y%��Tf5�F�Q��j5cJ5c��iGNh�C��{b�����0��-gb;6�m�[�[�c�c�{��◊8���'�P����+QUa��V��Ś,Vh�Z���V�D��i�-4� ���x�������0ȩ)&JIF$�b0��Œ����d�&)lɓ �
BBBBA��$&L�2c2Z���(�eFc��I1�)&JJJJI`x������� �v�vcgA��嶋e7Cl.���縲����ΫU6�j��STک:�55A��ɩ�=SG��I��yI���M4Ձ������&FI�R*JJJFA�˗.\�r�)�[2d�2d��!!1����$�&L�1�-K��e˗.\��BDх%%%$�Y%#����KlQlP�g�Ռ���X�lf���U�Վ;�9�5�QŨޣJ�KQ�Q��V�
�ej4��J�'UQI���?�<�x���f2�J�-JeK��2�˗.\�1Ke�&L�2ALd���1H3&L�̙-KR��r�˗-�)KeJR�R�)�
F���0s��m����v��Vϳ���Ŗ���~���n��U��,Su6,SU��������U5D ��j���������YR�J�*T�r��e˗.b�.d�.U SM SM4QL�.c2Z�.\�r��岥)r�J�*T�V���/�j�7#VI�'c�62�c�l��r�g!Y���+S.g!�V0�UQ��µV� RKRKR*Ԓ����������*U,�*T�R�J��˗KKCER��SE�)��-�EQE��JT�r�J�*T�R�JiR�x������L�3���6�v��hm���m���N��"U�QSk6����Y��j��ST��&���5G�Ձ������e)R�J�*T�-��'h��(��(���h��i��)h��(��(���'S�T�R�J�*T�R�x������E�&���M��˕����_-��9��^�jf���-j]�UR֥�LZ�URJ�IY�V�V�<�x���M4�R�J���P�T*
�B�v�(TQE4P�;<��(TQEQE N���������eJ���M0<�x���������cw%u��|a�K����J���
��bn��
�UQ�U5UE
i����?�<_ҥJ�vvy�T*�����QB�v�'�������y��u:���(�����������ii����0O+�����O-�]7*�]=���֚�J�R�)jR�=+T�KUR
��������<��=
�B�y�(T)���V��:�y��y��y�n���y�TQ:�P���<�u:�N��x?�<�x�`�N8�8�q� ���i"��8�0��@��9$
�#��r�4r�b e444��5��&�c���d�yI�|#���j�^/Q5���b�Dؾ�y�$M�࣪�r���������C��<Lf� � ���Hh)B�x*G°�V�*ɂ�Ю4;�`|��n.�����B�зao �/X\0�/Z��� -$ip�U�'�h�K ��*0Y Ȁ<P%�0�E$$�t��B��?�9�9 !(� �������6�JE�$@O "@�,|�)KAC���Ҁ�0L"A�t�s��
MHe��<�b� J4 �I��4`t �f!3 �hL�`S��$�(7��x��#�F� �h^H|��BhA�TA�&
�x:4:�p]�����K �5��u��a�)���&
��X����\pX¸ЯP�Lq�[����Z�8a�x@A�e�dp�HW���0��0]� ���t/��q�t��;��#̰Zl,Xw��;�V&����� ����P���Bh��p<�x���H�)f�|F6��˞3;;K"���gb�p+���*�1l\�X�TJ�;5AƦ�I���JM@�Rf��>��Rj&��e&�b�����\<�x�v���/�\���<dIEJ*��ꇪ(|h~�B4CQj��d&P{Q"$�B��iP� �����6C\60�� �p�ă������ �"ű�,X�l>���J�TR�H:.`L�y�������!���7�ij�arg&p�9�G4��9ɜ9�aXE5�_��;�:�&�sT"֡��Y�i�k4948�A0�i�NLK5�i�i��4^h&�����������4F�CDx����� �"$D�g�xg�uN�<�E8��c�|qS� R���)�b��)b��*P��Y���E&I�%C<3�;bL30��Xeb<G�F#Dh��x�������q�r�"���=�;;K< ���kgx2��G�2Uj�U�`<*�55@�URj�����MD�5Gԙ��4��Ɠ4f�4x��p<�x����3�B8���*b��Ƙڍ������G"x�'b��)QLS�,U(�*b�ELU��)�b�(�"�'��x�r7���q�ډ�(~h�h�hc4F�G������#6ŭ� ؄�Cv!��Dv"qm�+�[v,����ŕ�
� q
�-���Qj"-DEf�j� ��!���j"��eRk��������c1��j5�F�q�ڎF�Q�I�ddT�######%%%%##$����Ȳ2*IFeF�n7���5�1��j3��c0<�x���� ����)����j�H�v��wp��������uXe����Ҫ���*j�TV��������M4Ձ�������aFc1���$�A�1L�2c ���R
AHHHLd&3&K�.\ɓɊBBA�������H3&3&LRRJ3��ʌ�������=n)���7X�j��6��7�n0ܕ�\�%�r\�T����5X��r�7���mj8������`x�������c-Je˗-������d�l�*��i�R�T�T��M2�J��M2�i�T�\ɓ&KS��K��˗.\�?�<`X�;=-��ŷ;ts�������w�(k]V�UPx�M�ڪ�B�UMURj�j���MRjj�)�j����������R�2�˗)�����R�hi��i��Zi�KM2�SM*U2�U4�M4�ШT���*�R�˗-�������/�%�\�3���r��E��"�<���H�B�C�V�5!r
�ũ�S�r5��������/�4��4QEQE *�J�P��M4�T�L�KL�*T��U4�L��hT�B��ZZZ(TQEQB�J�������5wq���w�r��]�k��w�:���Q�UUX���TmUj�4��X�kUUZ���������QEQJ��)T�U*�J�R�i���'�y��y��y��T*ii�P�iiiiiiiih��(hhhhp<�x���-�o/�V[�+3�����n������������-s1s�jbԾZԵ�kX?�<�x���(TQEQCE�U*�����y��u<��<��<��<��jz)h�P���(���(��?�<�x�
�v�n����{�w��G��UW�k�UU��Uj��kU�j���5Ujl٫�����N�EQEQ;<���SΧ���y��y��{S�<��=��O;<��=�(��(��(��������W-�wM��ZkMi�5�����֛��t��t��]*�WJ�Ei���-j]T�k�����P�S�QD��ݳ�g��{����y��y���{S�;j{Sڞ����;=�j���(��u��������G�g��������+�W^_Z�Z��ŭjb���*�R*���U]V���/�S�Ol����:�uvέ�����绻������v����S��g�;j�mNڹ�TQC�������n��Z+GGGGGGG?=�������U?F���UTj�еE�J�j�<�x���l���\���]���{��������������n���W;j�m\����X?�<�x��frH9���"�9�(�Ȝ��r�q� e��(,��ÖrГ�t�'B�s�Y�V>h��I��Չ����2=�I��L��t���<Ǣ��#�<1z��������2`$�
RaRL+ �lA�G����x�.�d��жP�P�`�4.M ��_s��.�u ��.����@ ��`X+JAAPX E��pP�E�L�� H�I )`��� ��@ @ (����8t@s@r@A� J��?�<_��X�@� ��ba��(ԁP�@�(ԁ�i)� X��&��G&�(�k� H7�`�h`P���R� �J4 �,| 1����&D|q�$�0�a����f�& ��D��<`�/lj��ab&���T:'
Q4l]�����H��`@3&"�L��x. �va�Xu4; ���r
PO
B��A8X&�(XK���h�����8� y0H(��R.�^ Qx%��l^���x*����l����ë�Ƅ���' ��.X%� 2�"T�?�<_����"����.��ǁ l�p .,�ѹ�;�pd��?u�!V:��˪����U�
��������լ\��*j����><>Ltt~���/� Xo$%��3Q�Q��mF�n7c���N�v(QDQE1LR�1TU������)�b�(QDR�<N�#�q�1�7�F�Q��i����/���L_�����~��Y���Av!V!�C�Dv-�[qmb׈��"qQ��m��j-��U�E���D%j!-Dj,V�
�����DՁ�������Q�c1�ҍ(�j4��i����7��Y&A�f3&K�.\ɓ&2�˗2A�������iG�Q���F�*4�Tf4�X�aF x������V��wv�P����P[�����_�o������V��U��)j�UV��
j���jj����?�<_�TbJE�fKeRʦT�K*�T�R�KR�r�˗1K�.\�sr�˗)Ke)l�R�JeJeS)�J��) $�����������7%�7#��U���%Y'��nG��9C��j�y-I\���I+R<�Ԋ䖣���������4�i��i������*YT��EQE
�(��(��(��(��(��i�J�)�L�SJ�SM4�L�?�<`w�|o��|k��1�g�U�1����U�X�j��u]bz��������������*��i���D��Ч��蝞����y��y��<��<�Q=OE �O:���z(�SM4�L�?�<` ���UeU�YU���]=Mi���i���*��]5T�JW)\�r��\��W�����<���<��B��<��m��<�wws�ۻ��睻���O:���z��y��vx?�<�x�E�{w}�E���?��-�z��޽uZ�UU��ְ�U���Z����������<��<�:�����m���������ݩ��睻�;wj�y��{Sڞ���0�.���������s�s���j~��jzιꧭ�����?�<_Χ������ή�Ww:�۹����{��S�ڞ��N���ڻ���S���������7}?t�|��u�O}?��=yJ��*�)W����5�z����0-�����ή�Wwm��ۻ�������S�v��v�v�v�����x������~~~~}����������}��}�~���W=T�
���������j�������������������]ڻ�wwwwww�������߻�_������W����k���_U��j�����0On���������������ww������������������~�����������|����꯾����=��<�?�<`�ڻ��w������������ݿ�ݿw���Wwp<�x����O����?����?���?�\�Y��}|�zj�`x����������ڻ�Wj���wwwwwwwo���W����w�����w�u����$O����}��}����������~��������X�������v��`{�������?����?��a!�
$��(��,�/��,��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� (�̀����,6A�������� I���I �
II �� �Y����`�?���a!!!#�(�F�K�lJ�#�1�c�"�X�EJB�1�(�1�H����0m�m��V+ ������p�r��I���́�@̃���?�� $c�1F��ı*Ս��c�1���ZEb����$cŒc���pX�@������ٰ?���O���I� ��&L� .L�)&I�^`�?�� c�1�m�b[ı-���c�+ci��Kim�(�1�����> ��66<xe ����p���1&$��,r9!� �9�����5ƭ�m�Ķؖ%�-��1ZElV+-���m�c�����=p�V�wl��/���,�$�d�0Y R`����d�2L����o��[im��mD�,J���m����b��m��m�(ŀ��������.<V66�����H��<N9�#H�9�������m��m�-�,Kb[�b�+b�[m�+m�.\�������� �v�`u�}��<�92H9�s��H9�y������m���m�Ķ��}�����n[n[m�����<x�f.:<Z<tV�������&G�������q:L���8��ۭ��m��o���m����ն�m�`�?���[\x�5�|��L���$� `��)2L�L�Y0������m���[m����m���m��m�n[W0�����oltx�\z��{Ƕ��{�G�D���t��i?�����m���[n��Km����m��m�j�X���p���`�Pߏ<<��?×#'���'0�d��fl����o��5���[u����m������նڶ�m����3V<f.:<Z=�f������ox�$�I#Hؙr%�����m5��m����m�[my��[r�[j�X���p�ocP�������?��?�x $��&�Ad��d���Mi���n�n�_���~��_rەm\�l���8�Ǽtf���~�����O�t��I"t��L�����i����u�۾�����-nZ�W-\�?���?a���^�����~H�1�K�fxI,��rBI2`�?����֔�����wK������������e\����u���{ٽ�ٽ�[ӧKr�ܹ/I#i&����Miu�5���_���+�yk�����r������\{�~6�����_�y���<I$�I&H &I L�R`�?��6��KQ-[im����m����{r�*X�b�������f���c��ͱ���<r��H�)�d������d���Q-D��K�u.���{m��m�me�|�ZX�m���������y�������<� � <�rL ��$�?������Z���R���[m��m��-�[��K,T�����a�Ͷ���c6Ǽf<x��l�,Ĥi{7�&Ē9������m.��Ժ�]Kom��om�k.^��-�Rŀ���� _����;��?��y'3�3��99���'3'$����o��.���Զ�[me���լ���o�*`�?���������Ǽf���Kx咝;ĥ�ܲ^6���z^�R�^�]Kom�m��V���e��k�����6?���y������ ٌ�0�s�I�f���]����MKK��m�����j�^�k��?��� ���{�{�3~������JD�2�Jw/N����������������m���������_/����{{��� �����?�L���l� �I̜&`�?��=/K��R���9{��Wk/��?��� �{�������{���/6K%2���)ܦ����z^������_������YY{]��V��� o�~?��������$ȟ�2c������Mޗ���Է���m�������+��+?����{�3{�������[�N��{��ɀ�����7u/{������/�����������7����;��?�������g<�<�L��&|�����57u/�������������0�������{�������oܷ���2��)����ޛ�����K��m�������VW`�?�����������4�����$�c<Ĝ�?��� �����o����������W{畀�����o{���7�7�K�-��s�)��w����n�驿����������������`�?����������������0��39�<����p.�w�����m��m����k����`�?��=����ٽ�2#{��4��-˘���o�w������ �����������7����{������~o�>�����N�?��� /������n���������-`�?�������{���ޗ��O����s����p��������������������������?�����qϳ9��s�`�?�����������������������8G������������r����ܹ�������w�w��-��������X���p�������������~ny~~s?�����/�������m����-�����p������ʓ?�K�zX���rN��_���
�������8���������?���xfs�������p�����`h����?�����������������K����?��� ����M�����k�����/���������{������?{���s�6���c������������������㟿�����������Ͱ�������n� �������������������?����?ɘ���o���_��@���V���;=��`�m������*����C��������������|��������`�?��&���!n�`FW�`�?��3��2'��4�����g���������������+����+��

73
MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/LightweightBasicScene/ReflectionProbe-0.exr.meta


fileFormatVersion: 2
guid: d270136facda2a745b3c14bddd257f04
timeCreated: 1488962999
licenseType: Pro
TextureImporter:
fileIDToRecycleName:
8900000: generatedCubemap
serializedVersion: 4
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 1
seamlessCubemap: 1
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 2
aniso: 0
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 2
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
textureFormat: -1
textureCompression: 1
compressionQuality: 100
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:

9
MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Materials.meta


fileFormatVersion: 2
guid: c9d437025dec47d4d9d9bd15677b3b27
folderAsset: yes
timeCreated: 1484053031
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

9
MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Materials/LDRenderPipeMaterials.meta


fileFormatVersion: 2
guid: 308e8e53de09484409ac0dffaaf5d276
folderAsset: yes
timeCreated: 1487753937
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

90
MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Materials/LDRenderPipeMaterials/LDSpecularSphere0.mat


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: LDSpecularSphere0
m_Shader: {fileID: 4800000, guid: 8d2bb70cbf9db8d4da26e15b26e74248, type: 3}
m_ShaderKeywords: _SPECULAR_COLOR
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _Cube:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SpecGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 0.186
- _Glossiness: 1
- _GlossinessSource: 0
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _ReflectionSource: 0
- _Shininess: 1
- _SmoothnessTextureChannel: 0
- _SpecSource: 0
- _SpecularHighlights: 1
- _SpecularStrength: 200
- _SrcBlend: 1
- _UVSec: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _SpecColor: {r: 0.97058815, g: 0.97058815, b: 0.97058815, a: 1}

9
MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Materials/LDRenderPipeMaterials/LDSpecularSphere0.mat.meta


fileFormatVersion: 2
guid: bded62b791643214d8d29703a7813d34
timeCreated: 1487679711
licenseType: Pro
NativeFormatImporter:
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

83
MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Materials/LDRenderPipeMaterials/MobileColors.mat


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: MobileColors
m_Shader: {fileID: 4800000, guid: 8d2bb70cbf9db8d4da26e15b26e74248, type: 3}
m_ShaderKeywords: _EMISSION _GLOSSINESS_FROM_BASE_ALPHA _NORMALMAP _SPECULAR_COLOR
m_LightmapFlags: 1
m_EnableInstancingVariants: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 2800000, guid: 3f3b8bdf3ccd30c4fb97b62bd26ef1f6, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 10, y: 10}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: 618126695341ad844ac048b062fd2688, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SpecGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 1
- _Glossiness: 0.107
- _GlossinessSource: 0
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SpecSource: 0
- _SpecularHighlights: 1
- _SpecularStrength: 240
- _SrcBlend: 1
- _UVSec: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _SpecColor: {r: 1, g: 1, b: 1, a: 1}

8
MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Materials/LDRenderPipeMaterials/MobileColors.mat.meta


fileFormatVersion: 2
guid: 1b54f485d9718e64dbff824f0defbb92
timeCreated: 1481626510
licenseType: Pro
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:

83
MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Materials/LDRenderPipeMaterials/MobileColorsTile.mat


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: MobileColorsTile
m_Shader: {fileID: 4800000, guid: 8d2bb70cbf9db8d4da26e15b26e74248, type: 3}
m_ShaderKeywords: _EMISSION _GLOSSINESS_FROM_BASE_ALPHA _SPECULAR_COLOR
m_LightmapFlags: 1
m_EnableInstancingVariants: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 10, y: 10}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 6}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: 618126695341ad844ac048b062fd2688, type: 3}
m_Scale: {x: 1, y: 6}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 2800000, guid: 4ffd0c63865e57b419b7ec9c1255a9be, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SpecGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 1
- _Glossiness: 0.474
- _GlossinessSource: 0
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SpecSource: 0
- _SpecularHighlights: 1
- _SpecularStrength: 200
- _SrcBlend: 1
- _UVSec: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}

8
MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Materials/LDRenderPipeMaterials/MobileColorsTile.mat.meta


fileFormatVersion: 2
guid: 3647f71343b206c4ca176689c2261a85
timeCreated: 1481626510
licenseType: Pro
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:

85
MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Materials/LDRenderPipeMaterials/MobileGlass.mat


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: MobileGlass
m_Shader: {fileID: 4800000, guid: 8d2bb70cbf9db8d4da26e15b26e74248, type: 3}
m_ShaderKeywords: _ALPHABLEND_ON _EMISSION _GLOSSINESS_FROM_BASE_ALPHA _METALLICGLOSSMAP
_SPECULAR_COLOR
m_LightmapFlags: 1
m_EnableInstancingVariants: 0
m_CustomRenderQueue: 3000
stringTagMap:
RenderType: Transparent
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 2, y: 2}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: 894ecea3849c1417180f79a5ca555a6a, type: 3}
m_Scale: {x: 2, y: 2}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 2800000, guid: 894ecea3849c1417180f79a5ca555a6a, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SpecGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 10
- _GlossMapScale: 1
- _Glossiness: 0.474
- _GlossinessSource: 0
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 2
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SpecSource: 0
- _SpecularHighlights: 1
- _SpecularStrength: 200
- _SrcBlend: 5
- _UVSec: 0
- _ZWrite: 0
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}

8
MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Materials/LDRenderPipeMaterials/MobileGlass.mat.meta


fileFormatVersion: 2
guid: 2cbb16400afc3434f82480d3d0491ae6
timeCreated: 1478093906
licenseType: Pro
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:

91
MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Materials/LDRenderPipeMaterials/MobilePlane.mat


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: MobilePlane
m_Shader: {fileID: 4800000, guid: 8d2bb70cbf9db8d4da26e15b26e74248, type: 3}
m_ShaderKeywords: _GLOSSINESS_FROM_BASE_ALPHA _NORMALMAP _SHARED_SPECULAR_DIFFUSE
_SPECULAR_COLOR
m_LightmapFlags: 1
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 2800000, guid: d63435d934a30fd439a005c25fa542f0, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _Cube:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: 70218f73fcdf828428151dfdd3104a8f, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SpecGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 1
- _Glossiness: 0.474
- _GlossinessSource: 0
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _ReflectionSource: 0
- _Shininess: 1
- _SmoothnessTextureChannel: 0
- _SpecSource: 0
- _SpecularHighlights: 1
- _SpecularStrength: 64.1
- _SrcBlend: 1
- _UVSec: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 0.541}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _SpecColor: {r: 1, g: 1, b: 1, a: 1}

8
MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Materials/LDRenderPipeMaterials/MobilePlane.mat.meta


fileFormatVersion: 2
guid: a200b6b244ab748488dcdcfb03f2937e
timeCreated: 1481626510
licenseType: Pro
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:

9
MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Materials/LegacyMobileMaterials.meta


fileFormatVersion: 2
guid: 02b87bca4d6e8f1499bc89202d5cc9ff
folderAsset: yes
timeCreated: 1487753991
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

77
MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Materials/LegacyMobileMaterials/LegacyMobileAlpha.mat


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: LegacyMobileAlpha
m_Shader: {fileID: 33, guid: 0000000000000000f000000000000000, type: 0}
m_ShaderKeywords:
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 1
- _Glossiness: 0.5
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _Shininess: 0.078125
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _UVSec: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _SpecColor: {r: 0.5, g: 0.5, b: 0.5, a: 0}

9
MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Materials/LegacyMobileMaterials/LegacyMobileAlpha.mat.meta


fileFormatVersion: 2
guid: 7d3b639840adb124384d0527c0515c18
timeCreated: 1487764332
licenseType: Pro
NativeFormatImporter:
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

81
MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Materials/LegacyMobileMaterials/LegacyMobileColors.mat


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: LegacyMobileColors
m_Shader: {fileID: 4800000, guid: 8d2bb70cbf9db8d4da26e15b26e74248, type: 3}
m_ShaderKeywords: _EMISSION _NORMALMAP
m_LightmapFlags: 1
m_EnableInstancingVariants: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 2800000, guid: 3f3b8bdf3ccd30c4fb97b62bd26ef1f6, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 10, y: 10}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: 618126695341ad844ac048b062fd2688, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SpecGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 1
- _Glossiness: 0.078125
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _Shininess: 0.078125
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _UVSec: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _SpecColor: {r: 0.21323532, g: 0.21323532, b: 0.21323532, a: 1}

8
MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Materials/LegacyMobileMaterials/LegacyMobileColors.mat.meta


fileFormatVersion: 2
guid: ed6bedab6efb5394bb6e1ab693888835
timeCreated: 1481626510
licenseType: Pro
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:

81
MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Materials/LegacyMobileMaterials/LegacyMobileGlass.mat


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: LegacyMobileGlass
m_Shader: {fileID: 4800000, guid: 8d2bb70cbf9db8d4da26e15b26e74248, type: 3}
m_ShaderKeywords: _ALPHABLEND_ON _EMISSION _METALLICGLOSSMAP
m_LightmapFlags: 1
m_EnableInstancingVariants: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 2, y: 2}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: 894ecea3849c1417180f79a5ca555a6a, type: 3}
m_Scale: {x: 2, y: 2}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 2800000, guid: 894ecea3849c1417180f79a5ca555a6a, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SpecGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 10
- _GlossMapScale: 1
- _Glossiness: 0.078125
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 2
- _OcclusionStrength: 1
- _Parallax: 0.02
- _Shininess: 0.078125
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 5
- _UVSec: 0
- _ZWrite: 0
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}

8
MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Materials/LegacyMobileMaterials/LegacyMobileGlass.mat.meta


fileFormatVersion: 2
guid: ea9fe2235ce15b34bb11390a91702005
timeCreated: 1478093906
licenseType: Pro
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:

84
MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Materials/LegacyMobileMaterials/LegacyMobilePlane.mat


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: LegacyMobilePlane
m_Shader: {fileID: 4800000, guid: 8d2bb70cbf9db8d4da26e15b26e74248, type: 3}
m_ShaderKeywords: _EMISSION _GLOSSINESS_FROM_BASE_ALPHA _NORMALMAP _SPECULAR_COLOR
m_LightmapFlags: 1
m_EnableInstancingVariants: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 2800000, guid: d63435d934a30fd439a005c25fa542f0, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: 70218f73fcdf828428151dfdd3104a8f, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SpecGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 1
- _Glossiness: 0.078125
- _GlossinessSource: 0
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _Shininess: 0.078125
- _SmoothnessTextureChannel: 0
- _SpecSource: 0
- _SpecularHighlights: 1
- _SpecularStrength: 200
- _SrcBlend: 1
- _UVSec: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _SpecColor: {r: 0.19999997, g: 0.19999997, b: 0.19999997, a: 1}

8
MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Materials/LegacyMobileMaterials/LegacyMobilePlane.mat.meta


fileFormatVersion: 2
guid: 902a730ec9379894b8aecdd235c7bf86
timeCreated: 1481626510
licenseType: Pro
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:

81
MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Materials/LegacyMobileMaterials/LegacyMobileSphere.mat


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: LegacyMobileSphere
m_Shader: {fileID: 4800000, guid: 8d2bb70cbf9db8d4da26e15b26e74248, type: 3}
m_ShaderKeywords:
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SpecGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 0.186
- _Glossiness: 0.078125
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _Shininess: 0.078125
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _UVSec: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _SpecColor: {r: 0.97058815, g: 0.97058815, b: 0.97058815, a: 1}

9
MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Materials/LegacyMobileMaterials/LegacyMobileSphere.mat.meta


fileFormatVersion: 2
guid: d2b12cb90e76a254896e874c91509614
timeCreated: 1487679711
licenseType: Pro
NativeFormatImporter:
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

9
MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Textures.meta


fileFormatVersion: 2
guid: 98c3b3cfcb4825841bc50a4c8142c9f1
folderAsset: yes
timeCreated: 1484052961
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

1001
MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Textures/154.JPG
文件差异内容过多而无法显示
查看文件

121
MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Textures/154.JPG.meta


fileFormatVersion: 2
guid: 618126695341ad844ac048b062fd2688
timeCreated: 1484139434
licenseType: Pro
TextureImporter:
fileIDToRecycleName: {}
externalObjects: {}
serializedVersion: 4
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: -1
mipBias: -1
wrapU: -1
wrapV: -1
wrapW: -1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: iPhone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: tvOS
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: Windows Store Apps
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:

1001
MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Textures/154_norm.JPG
文件差异内容过多而无法显示
查看文件

108
MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Textures/154_norm.JPG.meta


fileFormatVersion: 2
guid: 3f3b8bdf3ccd30c4fb97b62bd26ef1f6
timeCreated: 1484052977
licenseType: Pro
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 4
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 0
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
filterMode: -1
aniso: -1
mipBias: -1
wrapMode: -1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 1
textureShape: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: Standalone
maxTextureSize: 2048
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: iPhone
maxTextureSize: 2048
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: tvOS
maxTextureSize: 2048
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: Android
maxTextureSize: 2048
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: Windows Store Apps
maxTextureSize: 2048
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:

1001
MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Textures/168.JPG
文件差异内容过多而无法显示
查看文件

108
MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Textures/168.JPG.meta


fileFormatVersion: 2
guid: 70218f73fcdf828428151dfdd3104a8f
timeCreated: 1484139437
licenseType: Pro
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 4
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
filterMode: -1
aniso: -1
mipBias: -1
wrapMode: -1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: Standalone
maxTextureSize: 2048
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: iPhone
maxTextureSize: 2048
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: tvOS
maxTextureSize: 2048
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: Android
maxTextureSize: 2048
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: Windows Store Apps
maxTextureSize: 2048
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:

1001
MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Textures/168_norm.JPG
文件差异内容过多而无法显示
查看文件

108
MaterialGraphProject/Assets/SRP/SampleScenes/LightweightPipeline/Textures/168_norm.JPG.meta


fileFormatVersion: 2
guid: d63435d934a30fd439a005c25fa542f0
timeCreated: 1484053141
licenseType: Pro
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 4
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 0
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
filterMode: -1
aniso: -1
mipBias: -1
wrapMode: -1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 1
textureShape: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: Standalone
maxTextureSize: 2048
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: iPhone
maxTextureSize: 2048
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: tvOS
maxTextureSize: 2048
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: Android
maxTextureSize: 2048
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- buildTarget: Windows Store Apps
maxTextureSize: 2048
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:

10
MaterialGraphProject/Assets/SRP/ScriptableRenderPipeline.meta


fileFormatVersion: 2
guid: fd470011795144262bf5aa4bf5f396a1
folderAsset: yes
timeCreated: 1505274236
licenseType: Pro
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

9
MaterialGraphProject/Assets/SRP/ScriptableRenderPipeline/Core.meta


fileFormatVersion: 2
guid: 2850f79359a84d84793e8feefa3ebb54
folderAsset: yes
timeCreated: 1483004461
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

9
MaterialGraphProject/Assets/SRP/ScriptableRenderPipeline/Core/Camera.meta


fileFormatVersion: 2
guid: e99921594db38ce4cbb616f0ca87148d
folderAsset: yes
timeCreated: 1488370960
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

98
MaterialGraphProject/Assets/SRP/ScriptableRenderPipeline/Core/Camera/CameraSwitcher.cs


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace UnityEngine.Experimental.Rendering
{
public class CameraSwitcher : MonoBehaviour
{
public Camera[] m_Cameras;
private int m_CurrentCameraIndex = -1;
private Camera m_OriginalCamera = null;
private Vector3 m_OriginalCameraPosition;
private Quaternion m_OriginalCameraRotation;
private Camera m_CurrentCamera = null;
GUIContent[] m_CameraNames = null;
int[] m_CameraIndices = null;
void OnEnable()
{
m_OriginalCamera = GetComponent<Camera>();
m_CurrentCamera = m_OriginalCamera;
if(m_OriginalCamera == null)
{
Debug.LogError("Camera Switcher needs a Camera component attached");
return;
}
m_CurrentCameraIndex = GetCameraCount() - 1;
m_CameraNames = new GUIContent[GetCameraCount()];
m_CameraIndices = new int[GetCameraCount()];
for (int i = 0; i < m_Cameras.Length; ++i)
{
Camera cam = m_Cameras[i];
if (cam != null)
{
m_CameraNames[i] = new GUIContent(cam.name);
}
else
{
m_CameraNames[i] = new GUIContent("null");
}
m_CameraIndices[i] = i;
}
m_CameraNames[GetCameraCount() - 1] = new GUIContent("Original Camera");
m_CameraIndices[GetCameraCount() - 1] = GetCameraCount() - 1;
DebugMenuManager.instance.AddDebugItem<int>("Camera", "Camera Switcher", () => m_CurrentCameraIndex, (value) => SetCameraIndex((int)value), DebugItemFlag.None, new DebugItemHandlerIntEnum(m_CameraNames, m_CameraIndices));
}
int GetCameraCount()
{
return m_Cameras.Length + 1; // We need +1 for handling the original camera.
}
Camera GetNextCamera()
{
if (m_CurrentCameraIndex == m_Cameras.Length)
return m_OriginalCamera;
else
return m_Cameras[m_CurrentCameraIndex];
}
void SetCameraIndex(int index)
{
if(index > 0 || index < GetCameraCount())
{
m_CurrentCameraIndex = index;
if (m_CurrentCamera == m_OriginalCamera)
{
m_OriginalCameraPosition = m_OriginalCamera.transform.position;
m_OriginalCameraRotation = m_OriginalCamera.transform.rotation;
}
m_CurrentCamera = GetNextCamera();
if (m_CurrentCamera != null)
{
// If we witch back to the original camera, put back the transform in it.
if (m_CurrentCamera == m_OriginalCamera)
{
m_OriginalCamera.transform.position = m_OriginalCameraPosition;
m_OriginalCamera.transform.rotation = m_OriginalCameraRotation;
}
transform.position = m_CurrentCamera.transform.position;
transform.rotation = m_CurrentCamera.transform.rotation;
}
}
}
}
}

12
MaterialGraphProject/Assets/SRP/ScriptableRenderPipeline/Core/Camera/CameraSwitcher.cs.meta


fileFormatVersion: 2
guid: f52d1e5345c395641b482217c8804ff9
timeCreated: 1488380874
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

69
MaterialGraphProject/Assets/SRP/ScriptableRenderPipeline/Core/Camera/FreeCamera.cs


using UnityEngine;
namespace UnityEngine.Experimental.Rendering
{
public class FreeCamera : MonoBehaviour
{
public float m_LookSpeedController = 120f;
public float m_LookSpeedMouse = 10.0f;
public float m_MoveSpeed = 50.0f;
public float m_Turbo = 10.0f;
private static string kMouseX = "Mouse X";
private static string kMouseY = "Mouse Y";
private static string kRightStickX = "Controller Right Stick X";
private static string kRightStickY = "Controller Right Stick Y";
private static string kVertical = "Vertical";
private static string kHorizontal = "Horizontal";
private string[] m_RequiredInputAxes = { kMouseX, kMouseY, kRightStickX, kRightStickY, kVertical, kHorizontal };
private bool m_Valid = true;
void OnEnable()
{
m_Valid = Debugging.CheckRequiredInputAxisMapping(m_RequiredInputAxes);
}
void Update()
{
if (m_Valid)
{
float inputRotateAxisX = 0.0f;
float inputRotateAxisY = 0.0f;
if (Input.GetMouseButton(1))
{
inputRotateAxisX = Input.GetAxis(kMouseX) * m_LookSpeedMouse;
inputRotateAxisY = Input.GetAxis(kMouseY) * m_LookSpeedMouse;
}
inputRotateAxisX += (Input.GetAxis(kRightStickX) * m_LookSpeedController * Time.deltaTime);
inputRotateAxisY += (Input.GetAxis(kRightStickY) * m_LookSpeedController * Time.deltaTime);
float inputVertical = Input.GetAxis(kVertical);
float inputHorizontal = Input.GetAxis(kHorizontal);
bool moved = inputRotateAxisX != 0.0f || inputRotateAxisY != 0.0f || inputVertical != 0.0f || inputHorizontal != 0.0f;
if (moved)
{
float rotationX = transform.localEulerAngles.x;
float newRotationY = transform.localEulerAngles.y + inputRotateAxisX;
// Weird clamping code due to weird Euler angle mapping...
float newRotationX = (rotationX - inputRotateAxisY);
if (rotationX <= 90.0f && newRotationX >= 0.0f)
newRotationX = Mathf.Clamp(newRotationX, 0.0f, 90.0f);
if (rotationX >= 270.0f)
newRotationX = Mathf.Clamp(newRotationX, 270.0f, 360.0f);
transform.localRotation = Quaternion.Euler(newRotationX, newRotationY, transform.localEulerAngles.z);
float moveSpeed = Time.deltaTime * m_MoveSpeed;
if (Input.GetMouseButton(1))
moveSpeed *= Input.GetKey(KeyCode.LeftShift) ? m_Turbo : 1.0f;
else
moveSpeed *= Input.GetAxis("Fire1") > 0.0f ? m_Turbo : 1.0f;
transform.position += transform.forward * moveSpeed * inputVertical;
transform.position += transform.right * moveSpeed * inputHorizontal;
}
}
}
}
}

12
MaterialGraphProject/Assets/SRP/ScriptableRenderPipeline/Core/Camera/FreeCamera.cs.meta


fileFormatVersion: 2
guid: 618b0e3f6c65dd247a4a016150006c57
timeCreated: 1488370968
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

72
MaterialGraphProject/Assets/SRP/ScriptableRenderPipeline/Core/CommandBufferPool.cs


using System.Collections.Generic;
using UnityEngine.Events;
using UnityEngine.Rendering;
namespace UnityEngine.Experimental.Rendering
{
internal class ObjectPool<T> where T : new()
{
private readonly Stack<T> m_Stack = new Stack<T>();
private readonly UnityAction<T> m_ActionOnGet;
private readonly UnityAction<T> m_ActionOnRelease;
public int countAll { get; private set; }
public int countActive { get { return countAll - countInactive; } }
public int countInactive { get { return m_Stack.Count; } }
public ObjectPool(UnityAction<T> actionOnGet, UnityAction<T> actionOnRelease)
{
m_ActionOnGet = actionOnGet;
m_ActionOnRelease = actionOnRelease;
}
public T Get()
{
T element;
if (m_Stack.Count == 0)
{
element = new T();
countAll++;
}
else
{
element = m_Stack.Pop();
}
if (m_ActionOnGet != null)
m_ActionOnGet(element);
return element;
}
public void Release(T element)
{
if (m_Stack.Count > 0 && ReferenceEquals(m_Stack.Peek(), element))
Debug.LogError("Internal error. Trying to destroy object that is already released to pool.");
if (m_ActionOnRelease != null)
m_ActionOnRelease(element);
m_Stack.Push(element);
}
}
public static class CommandBufferPool
{
private static ObjectPool<CommandBuffer> m_BufferPool = new ObjectPool<CommandBuffer>(null, x => x.Clear());
public static CommandBuffer Get()
{
var cmd = m_BufferPool.Get();
cmd.name = "Unnamed Command Buffer";
return cmd;
}
public static CommandBuffer Get(string name)
{
var cmd = m_BufferPool.Get();
cmd.name = name;
return cmd;
}
public static void Release(CommandBuffer buffer)
{
m_BufferPool.Release(buffer);
}
}
}

12
MaterialGraphProject/Assets/SRP/ScriptableRenderPipeline/Core/CommandBufferPool.cs.meta


fileFormatVersion: 2
guid: bc85748f0cef607499e03b46e3846ebd
timeCreated: 1497364325
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

9
MaterialGraphProject/Assets/SRP/ScriptableRenderPipeline/Core/Debugging.meta


fileFormatVersion: 2
guid: 58a02e8711d94134393b2a8ac22b96ca
folderAsset: yes
timeCreated: 1491989728
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

383
MaterialGraphProject/Assets/SRP/ScriptableRenderPipeline/Core/Debugging/DebugActionManager.cs


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace UnityEngine.Experimental.Rendering
{
public class DebugActionManager
{
static private DebugActionManager s_Instance = null;
static public DebugActionManager instance
{
get
{
if (s_Instance == null)
s_Instance = new DebugActionManager();
return s_Instance;
}
}
private static string kEnableDebugBtn1 = "Enable Debug Button 1";
private static string kEnableDebugBtn2 = "Enable Debug Button 2";
private static string kDebugPreviousBtn = "Debug Previous";
private static string kDebugNextBtn = "Debug Next";
private static string kValidateBtn = "Debug Validate";
private static string kPersistentBtn = "Debug Persistent";
private static string kDPadVertical = "Debug Vertical";
private static string kDPadHorizontal = "Debug Horizontal";
public enum DebugAction
{
EnableDebugMenu,
PreviousDebugPanel,
NextDebugPanel,
Validate,
MakePersistent,
MoveVertical,
MoveHorizontal,
DebugActionCount
}
enum DebugActionRepeatMode
{
Never,
Delay
}
class DebugActionDesc
{
public List<string[]> buttonTriggerList = new List<string[]>();
public string axisTrigger = "";
public List<KeyCode[]> keyTriggerList = new List<KeyCode[]>();
public DebugActionRepeatMode repeatMode = DebugActionRepeatMode.Never;
public float repeatDelay = 0.0f;
}
class DebugActionState
{
enum DebugActionKeyType
{
Button,
Axis,
Key
}
DebugActionKeyType m_Type;
string[] m_PressedButtons;
string m_PressedAxis = "";
KeyCode[] m_PressedKeys;
bool[] m_TriggerPressedUp = null;
float m_Timer;
bool m_RunningAction = false;
float m_ActionState = 0.0f;
public bool runningAction { get { return m_RunningAction; } }
public float actionState { get { return m_ActionState; } }
public float timer{ get { return m_Timer; } }
private void Trigger(int triggerCount, float state)
{
m_ActionState = state;
m_RunningAction = true;
m_Timer = 0.0f;
m_TriggerPressedUp = new bool[triggerCount];
for (int i = 0; i < m_TriggerPressedUp.Length; ++i)
m_TriggerPressedUp[i] = false;
}
public void TriggerWithButton(string[] buttons, float state)
{
m_Type = DebugActionKeyType.Button;
m_PressedButtons = buttons;
m_PressedAxis = "";
Trigger(buttons.Length, state);
}
public void TriggerWithAxis(string axis, float state)
{
m_Type = DebugActionKeyType.Axis;
m_PressedAxis = axis;
Trigger(1, state);
}
public void TriggerWithKey(KeyCode[] keys, float state)
{
m_Type = DebugActionKeyType.Key;
m_PressedKeys = keys;
m_PressedAxis = "";
Trigger(keys.Length, state);
}
private void Reset()
{
m_RunningAction = false;
m_Timer = 0.0f;
m_TriggerPressedUp = null;
}
public void Update(DebugActionDesc desc)
{
// Always reset this so that the action can only be caught once until repeat/reset
m_ActionState = 0.0f;
if (m_TriggerPressedUp != null)
{
m_Timer += Time.deltaTime;
for(int i = 0 ; i < m_TriggerPressedUp.Length ; ++i)
{
if (m_Type == DebugActionKeyType.Button)
m_TriggerPressedUp[i] |= Input.GetButtonUp(m_PressedButtons[i]);
else if(m_Type == DebugActionKeyType.Axis)
m_TriggerPressedUp[i] |= (Input.GetAxis(m_PressedAxis) == 0.0f);
else
m_TriggerPressedUp[i] |= Input.GetKeyUp(m_PressedKeys[i]);
}
bool allTriggerUp = true;
foreach (bool value in m_TriggerPressedUp)
allTriggerUp &= value;
if(allTriggerUp || (m_Timer > desc.repeatDelay && desc.repeatMode == DebugActionRepeatMode.Delay))
{
Reset();
}
}
}
}
DebugActionDesc[] m_DebugActions = null;
DebugActionState[] m_DebugActionStates = null;
void RegisterActions()
{
m_DebugActions = new DebugActionDesc[(int)DebugAction.DebugActionCount];
m_DebugActionStates = new DebugActionState[(int)DebugAction.DebugActionCount];
DebugActionDesc enableDebugMenu = new DebugActionDesc();
enableDebugMenu.buttonTriggerList.Add(new[] { kEnableDebugBtn1, kEnableDebugBtn2 });
enableDebugMenu.keyTriggerList.Add(new[] { KeyCode.LeftControl, KeyCode.Backspace });
enableDebugMenu.repeatMode = DebugActionRepeatMode.Never;
AddAction(DebugAction.EnableDebugMenu, enableDebugMenu);
DebugActionDesc nextDebugPanel = new DebugActionDesc();
nextDebugPanel.buttonTriggerList.Add(new[] { kDebugNextBtn });
nextDebugPanel.repeatMode = DebugActionRepeatMode.Never;
AddAction(DebugAction.NextDebugPanel, nextDebugPanel);
DebugActionDesc previousDebugPanel = new DebugActionDesc();
previousDebugPanel.buttonTriggerList.Add(new[] { kDebugPreviousBtn });
previousDebugPanel.repeatMode = DebugActionRepeatMode.Never;
AddAction(DebugAction.PreviousDebugPanel, previousDebugPanel);
DebugActionDesc validate = new DebugActionDesc();
validate.buttonTriggerList.Add(new[] { kValidateBtn });
validate.repeatMode = DebugActionRepeatMode.Delay;
validate.repeatDelay = 0.25f;
AddAction(DebugAction.Validate, validate);
DebugActionDesc persistent = new DebugActionDesc();
persistent.buttonTriggerList.Add(new[] { kPersistentBtn });
persistent.repeatMode = DebugActionRepeatMode.Never;
AddAction(DebugAction.MakePersistent, persistent);
AddAction(DebugAction.MoveVertical, new DebugActionDesc { axisTrigger = kDPadVertical, repeatMode = DebugActionRepeatMode.Delay, repeatDelay = 0.2f });
AddAction(DebugAction.MoveHorizontal, new DebugActionDesc { axisTrigger = kDPadHorizontal, repeatMode = DebugActionRepeatMode.Delay, repeatDelay = 0.2f });
}
DebugActionManager()
{
RegisterInputs();
RegisterActions();
}
void AddAction(DebugAction action, DebugActionDesc desc)
{
int index = (int)action;
m_DebugActions[index] = desc;
m_DebugActionStates[index] = new DebugActionState();
}
void SampleAction(int actionIndex)
{
DebugActionDesc desc = m_DebugActions[actionIndex];
DebugActionState state = m_DebugActionStates[actionIndex];
//bool canSampleAction = (state.actionTriggered == false) || (desc.repeatMode == DebugActionRepeatMode.Delay && state.timer > desc.repeatDelay);
if(state.runningAction == false)
{
// Check button triggers
for (int buttonListIndex = 0; buttonListIndex < desc.buttonTriggerList.Count; ++buttonListIndex)
{
string[] buttons = desc.buttonTriggerList[buttonListIndex];
bool allButtonPressed = true;
foreach (string button in buttons)
{
allButtonPressed = allButtonPressed && Input.GetButton(button);
if (!allButtonPressed)
break;
}
if (allButtonPressed)
{
state.TriggerWithButton(buttons, 1.0f);
break;
}
}
// Check axis triggers
if(desc.axisTrigger != "")
{
float axisValue = Input.GetAxis(desc.axisTrigger);
if(axisValue != 0.0f)
{
state.TriggerWithAxis(desc.axisTrigger, axisValue);
}
}
// Check key triggers
for (int keyListIndex = 0; keyListIndex < desc.keyTriggerList.Count; ++keyListIndex)
{
KeyCode[] keys = desc.keyTriggerList[keyListIndex];
bool allKeyPressed = true;
foreach (KeyCode key in keys)
{
allKeyPressed = allKeyPressed && Input.GetKey(key);
if (!allKeyPressed)
break;
}
if (allKeyPressed)
{
state.TriggerWithKey(keys, 1.0f);
break;
}
}
}
}
void UpdateAction(int actionIndex)
{
DebugActionDesc desc = m_DebugActions[actionIndex];
DebugActionState state = m_DebugActionStates[actionIndex];
if(state.runningAction)
{
state.Update(desc);
}
}
public void Update()
{
for(int actionIndex = 0 ; actionIndex < m_DebugActions.Length ; ++actionIndex)
{
UpdateAction(actionIndex);
SampleAction(actionIndex);
}
}
public float GetAction(DebugAction action)
{
return m_DebugActionStates[(int)action].actionState;
}
void RegisterInputs()
{
#if UNITY_EDITOR
// Grab reference to input manager
var currentSelection = UnityEditor.Selection.activeObject;
UnityEditor.EditorApplication.ExecuteMenuItem("Edit/Project Settings/Input");
var inputManager = UnityEditor.Selection.activeObject;
// Wrap in serialized object
var soInputManager = new UnityEditor.SerializedObject(inputManager);
var spAxes = soInputManager.FindProperty("m_Axes");
// Add new bindings
new InputManagerEntry { name = kEnableDebugBtn1, kind = InputManagerEntry.Kind.KeyOrButton, btnPositive = "left ctrl", altBtnPositive = "joystick button 8" }.WriteEntry(spAxes);
new InputManagerEntry { name = kEnableDebugBtn2, kind = InputManagerEntry.Kind.KeyOrButton, btnPositive = "backspace", altBtnPositive = "joystick button 9" }.WriteEntry(spAxes);
new InputManagerEntry { name = kDebugNextBtn, kind = InputManagerEntry.Kind.KeyOrButton, btnPositive = "page down", altBtnPositive = "joystick button 5" }.WriteEntry(spAxes);
new InputManagerEntry { name = kDebugPreviousBtn, kind = InputManagerEntry.Kind.KeyOrButton, btnPositive = "page up", altBtnPositive = "joystick button 4" }.WriteEntry(spAxes);
new InputManagerEntry { name = kDPadHorizontal, kind = InputManagerEntry.Kind.KeyOrButton, btnPositive = "right", btnNegative = "left", gravity = 1000.0f, deadZone = 0.001f, sensitivity = 1000.0f }.WriteEntry(spAxes);
new InputManagerEntry { name = kDPadHorizontal, kind = InputManagerEntry.Kind.Axis, axis = InputManagerEntry.Axis.Sixth, btnPositive = "right", btnNegative = "left", gravity = 1000.0f, deadZone = 0.001f, sensitivity = 1000.0f }.WriteEntry(spAxes);
new InputManagerEntry { name = kDPadVertical, kind = InputManagerEntry.Kind.KeyOrButton, btnPositive = "up", btnNegative = "down", gravity = 1000.0f, deadZone = 0.001f, sensitivity = 1000.0f }.WriteEntry(spAxes);
new InputManagerEntry { name = kDPadVertical, kind = InputManagerEntry.Kind.Axis, axis = InputManagerEntry.Axis.Seventh, btnPositive = "up", btnNegative = "down", gravity = 1000.0f, deadZone = 0.001f, sensitivity = 1000.0f }.WriteEntry(spAxes);
new InputManagerEntry { name = kValidateBtn, kind = InputManagerEntry.Kind.KeyOrButton, btnPositive = "return", altBtnPositive = "joystick button 0" }.WriteEntry(spAxes);
new InputManagerEntry { name = kPersistentBtn, kind = InputManagerEntry.Kind.KeyOrButton, btnPositive = "right shift", altBtnPositive = "joystick button 2" }.WriteEntry(spAxes);
// Commit
soInputManager.ApplyModifiedProperties();
UnityEditor.Selection.activeObject = currentSelection;
#endif
}
#if UNITY_EDITOR
class InputManagerEntry
{
public enum Kind { KeyOrButton, Mouse, Axis }
public enum Axis { X, Y, Third, Fourth, Fifth, Sixth, Seventh, Eigth }
public enum Joy { All, First, Second }
public string name = "";
public string desc = "";
public string btnNegative = "";
public string btnPositive = "";
public string altBtnNegative = "";
public string altBtnPositive = "";
public float gravity = 0.0f;
public float deadZone = 0.0f;
public float sensitivity = 0.0f;
public bool snap = false;
public bool invert = false;
public Kind kind = Kind.Axis;
public Axis axis = Axis.X;
public Joy joystick = Joy.All;
bool InputAlreadyRegistered(string name, Kind kind, UnityEditor.SerializedProperty spAxes)
{
for (var i = 0; i < spAxes.arraySize; ++i )
{
var spAxis = spAxes.GetArrayElementAtIndex(i);
var axisName = spAxis.FindPropertyRelative("m_Name").stringValue;
var kindValue = spAxis.FindPropertyRelative("type").intValue;
if (axisName == name && (int)kind == kindValue)
return true;
}
return false;
}
public void WriteEntry(UnityEditor.SerializedProperty spAxes)
{
if(InputAlreadyRegistered(name, kind, spAxes))
return;
spAxes.InsertArrayElementAtIndex(spAxes.arraySize);
var spAxis = spAxes.GetArrayElementAtIndex(spAxes.arraySize - 1);
spAxis.FindPropertyRelative("m_Name").stringValue = name;
spAxis.FindPropertyRelative("descriptiveName").stringValue = desc;
spAxis.FindPropertyRelative("negativeButton").stringValue = btnNegative;
spAxis.FindPropertyRelative("altNegativeButton").stringValue = altBtnNegative;
spAxis.FindPropertyRelative("positiveButton").stringValue = btnPositive;
spAxis.FindPropertyRelative("altPositiveButton").stringValue = altBtnPositive;
spAxis.FindPropertyRelative("gravity").floatValue = gravity;
spAxis.FindPropertyRelative("dead").floatValue = deadZone;
spAxis.FindPropertyRelative("sensitivity").floatValue = sensitivity;
spAxis.FindPropertyRelative("snap").boolValue = snap;
spAxis.FindPropertyRelative("invert").boolValue = invert;
spAxis.FindPropertyRelative("type").intValue = (int)kind;
spAxis.FindPropertyRelative("axis").intValue = (int)axis;
spAxis.FindPropertyRelative("joyNum").intValue = (int)joystick;
}
}
#endif
}
}

12
MaterialGraphProject/Assets/SRP/ScriptableRenderPipeline/Core/Debugging/DebugActionManager.cs.meta


fileFormatVersion: 2
guid: 7e580489e9758c4429e4048beba3792e
timeCreated: 1492088391
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

372
MaterialGraphProject/Assets/SRP/ScriptableRenderPipeline/Core/Debugging/DebugItemHandler.cs


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
#if UNITY_EDITOR
using UnityEditor;
#endif
namespace UnityEngine.Experimental.Rendering
{
public abstract class DebugItemHandler
{
protected DebugItem m_DebugItem = null;
public void SetDebugItem(DebugItem item)
{
m_DebugItem = item;
}
// Method user needs to override for specific value clamping.
public virtual void ClampValues(Func<object> getter, Action<object> setter) {}
// Method that will create UI items for runtime debug menu.
public abstract DebugItemUI BuildGUI(GameObject parent);
#if UNITY_EDITOR
// Method users need to override for editor specific UI
public abstract bool OnEditorGUIImpl();
public void OnEditorGUI()
{
if(OnEditorGUIImpl())
{
DebugMenuUI.changed = true;
}
}
#endif
// Method users need to override for specific serialization of custom types.
public abstract DebugItemState CreateDebugItemState();
}
// This is the default debug item handler that handles all basic types.
public class DefaultDebugItemHandler
: DebugItemHandler
{
bool m_IsInitialized = false;
// Label for simple GUI items
protected GUIContent m_Label;
// Values and strings for Enum items
protected List<GUIContent> m_EnumStrings = null;
protected List<int> m_EnumValues = null;
public void Initialize()
{
if (m_IsInitialized)
return;
m_Label = new GUIContent(m_DebugItem.name);
Type itemType = m_DebugItem.GetItemType();
if(itemType.BaseType == typeof(System.Enum))
{
Array arr = Enum.GetValues(itemType);
m_EnumStrings = new List<GUIContent>(arr.Length);
m_EnumValues = new List<int>(arr.Length);
foreach(var value in arr)
{
m_EnumStrings.Add(new GUIContent(value.ToString()));
m_EnumValues.Add((int)value);
}
}
}
public override DebugItemState CreateDebugItemState()
{
DebugItemState newItemState = null;
if (m_DebugItem.GetItemType() == typeof(bool))
{
newItemState = ScriptableObject.CreateInstance<DebugItemStateBool>();
}
else if (m_DebugItem.GetItemType() == typeof(int))
{
newItemState = ScriptableObject.CreateInstance<DebugItemStateInt>();
}
else if (m_DebugItem.GetItemType() == typeof(uint))
{
newItemState = ScriptableObject.CreateInstance<DebugItemStateUInt>();
}
else if (m_DebugItem.GetItemType() == typeof(float))
{
newItemState = ScriptableObject.CreateInstance<DebugItemStateFloat>();
}
else if (m_DebugItem.GetItemType() == typeof(Color))
{
newItemState = ScriptableObject.CreateInstance<DebugItemStateColor>();
}
else if (m_DebugItem.GetItemType().BaseType == typeof(System.Enum))
{
newItemState = ScriptableObject.CreateInstance<DebugItemStateInt>(); // Need to be serialized as int. For some reason serialization of the Enum directly just fails...
}
return newItemState;
}
public override DebugItemUI BuildGUI(GameObject parent)
{
Initialize();
DebugItemUI newItemUI = null;
if (m_DebugItem.GetItemType() == typeof(bool))
{
newItemUI = new DebugBoolItemUI(parent, m_DebugItem, m_Label.text);
}
else if (m_DebugItem.GetItemType() == typeof(int))
{
newItemUI = new DebugIntItemUI(parent, m_DebugItem, m_Label.text);
}
else if (m_DebugItem.GetItemType() == typeof(uint))
{
newItemUI = new DebugUIntItemUI(parent, m_DebugItem, m_Label.text);
}
else if (m_DebugItem.GetItemType() == typeof(float))
{
newItemUI = new DebugFloatItemUI(parent, m_DebugItem, m_Label.text);
}
else if (m_DebugItem.GetItemType() == typeof(Color))
{
newItemUI = new DebugColorItemUI(parent, m_DebugItem, m_Label.text);
}
else if (m_DebugItem.GetItemType().BaseType == typeof(System.Enum))
{
newItemUI = new DebugEnumItemUI(parent, m_DebugItem, m_Label.text, m_EnumStrings.ToArray(), m_EnumValues.ToArray());
}
return newItemUI;
}
#if UNITY_EDITOR
bool DrawBoolItem()
{
bool value = (bool)m_DebugItem.GetValue();
EditorGUI.BeginChangeCheck();
value = EditorGUILayout.Toggle(m_Label, value);
if (EditorGUI.EndChangeCheck())
{
m_DebugItem.SetValue(value);
return true;
}
return false;
}
bool DrawIntItem()
{
int value = (int)m_DebugItem.GetValue();
EditorGUI.BeginChangeCheck();
value = EditorGUILayout.IntField(m_Label, value);
if (EditorGUI.EndChangeCheck())
{
m_DebugItem.SetValue(value);
return true;
}
return false;
}
bool DrawUIntItem()
{
int value = (int)(uint)m_DebugItem.GetValue();
EditorGUI.BeginChangeCheck();
value = EditorGUILayout.IntField(m_Label, value);
if (EditorGUI.EndChangeCheck())
{
value = System.Math.Max(0, value);
m_DebugItem.SetValue((uint)value);
return true;
}
return false;
}
bool DrawFloatItem()
{
float value = (float)m_DebugItem.GetValue();
EditorGUI.BeginChangeCheck();
value = EditorGUILayout.FloatField(m_Label, value);
if (EditorGUI.EndChangeCheck())
{
m_DebugItem.SetValue(value);
return true;
}
return false;
}
bool DrawColorItem()
{
EditorGUI.BeginChangeCheck();
Color value = EditorGUILayout.ColorField(m_Label, (Color)m_DebugItem.GetValue());
if (EditorGUI.EndChangeCheck())
{
m_DebugItem.SetValue(value);
return true;
}
return false;
}
bool DrawEnumItem()
{
EditorGUI.BeginChangeCheck();
int value = EditorGUILayout.IntPopup(m_Label, (int)m_DebugItem.GetValue(), m_EnumStrings.ToArray(), m_EnumValues.ToArray());
if (EditorGUI.EndChangeCheck())
{
m_DebugItem.SetValue(value);
return true;
}
return false;
}
public override bool OnEditorGUIImpl()
{
Initialize();
if (m_DebugItem.readOnly)
{
EditorGUILayout.LabelField(m_Label, new GUIContent(m_DebugItem.GetValue().ToString()));
return false;
}
if (m_DebugItem.GetItemType() == typeof(bool))
{
return DrawBoolItem();
}
else if (m_DebugItem.GetItemType() == typeof(int))
{
return DrawIntItem();
}
else if(m_DebugItem.GetItemType() == typeof(uint))
{
return DrawUIntItem();
}
else if (m_DebugItem.GetItemType() == typeof(float))
{
return DrawFloatItem();
}
else if (m_DebugItem.GetItemType() == typeof(Color))
{
return DrawColorItem();
}
else if (m_DebugItem.GetItemType().BaseType == typeof(System.Enum))
{
return DrawEnumItem();
}
return false;
}
#endif
}
public class DebugItemHandlerFloatMinMax
: DefaultDebugItemHandler
{
protected float m_Min = 0.0f;
protected float m_Max = 1.0f;
public DebugItemHandlerFloatMinMax(float min, float max)
{
m_Min = min;
m_Max = max;
}
public override void ClampValues(Func<object> getter, Action<object> setter)
{
setter(Mathf.Clamp((float)getter(), m_Min, m_Max));
}
#if UNITY_EDITOR
public override bool OnEditorGUIImpl()
{
Initialize();
EditorGUI.BeginChangeCheck();
float value = EditorGUILayout.Slider(m_DebugItem.name, (float)m_DebugItem.GetValue(), m_Min, m_Max);
if (EditorGUI.EndChangeCheck())
{
m_DebugItem.SetValue(value);
return true;
}
return false;
}
#endif
}
public class DebugItemHandlerUIntMinMax
: DefaultDebugItemHandler
{
protected uint m_Min = 0;
protected uint m_Max = 1;
public DebugItemHandlerUIntMinMax(uint min, uint max)
{
m_Min = min;
m_Max = max;
}
public override void ClampValues(Func<object> getter, Action<object> setter)
{
setter(Math.Min(m_Max, Math.Max(m_Min, (uint)getter())));
}
#if UNITY_EDITOR
public override bool OnEditorGUIImpl()
{
Initialize();
EditorGUI.BeginChangeCheck();
int value = EditorGUILayout.IntSlider(m_DebugItem.name, (int)(uint)m_DebugItem.GetValue(), (int)m_Min, (int)m_Max);
if (EditorGUI.EndChangeCheck())
{
m_DebugItem.SetValue((uint)value);
return true;
}
return false;
}
#endif
}
public class DebugItemHandlerIntEnum
: DefaultDebugItemHandler
{
GUIContent[] m_IntEnumStrings = null;
int[] m_IntEnumValues = null;
public DebugItemHandlerIntEnum(GUIContent[] enumStrings, int[] enumValues)
{
m_IntEnumStrings = enumStrings;
m_IntEnumValues = enumValues;
}
public override DebugItemUI BuildGUI(GameObject parent)
{
Initialize();
return new DebugEnumItemUI(parent, m_DebugItem, m_Label.text, m_IntEnumStrings, m_IntEnumValues);
}
#if UNITY_EDITOR
public override bool OnEditorGUIImpl()
{
Initialize();
UnityEditor.EditorGUI.BeginChangeCheck();
int value = UnityEditor.EditorGUILayout.IntPopup(m_Label, (int)m_DebugItem.GetValue(), m_IntEnumStrings, m_IntEnumValues);
if (UnityEditor.EditorGUI.EndChangeCheck())
{
m_DebugItem.SetValue(value);
return true;
}
return false;
}
#endif
}
}

12
MaterialGraphProject/Assets/SRP/ScriptableRenderPipeline/Core/Debugging/DebugItemHandler.cs.meta


fileFormatVersion: 2
guid: 7e413732cbed94f4688d5c59709a4556
timeCreated: 1492787007
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

460
MaterialGraphProject/Assets/SRP/ScriptableRenderPipeline/Core/Debugging/DebugItemUI.cs


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace UnityEngine.Experimental.Rendering
{
// Class that users need to extend for runtime debug menu item UI
public abstract class DebugItemUI
{
protected GameObject m_Root = null;
protected DebugItem m_DebugItem = null;
public bool dynamicDisplay { get { return (m_DebugItem.flags & DebugItemFlag.DynamicDisplay) != 0; } }
protected DebugItemUI(DebugItem debugItem)
{
m_DebugItem = debugItem;
}
// Implement for selection specific beahavior (like changing color for example)
public abstract void SetSelected(bool value);
// Implement behavior when user execute the "Validate" action
public abstract void OnValidate();
// Implement behavior when user execute the "Increment" action
public abstract void OnIncrement();
// Implement behavior when user execute the "Decrement" action
public abstract void OnDecrement();
// Implement this method to update the UI with current item value.
// User must call it whenever Validate/Increment/Decrement is called. It will also be automatically called for dynamically displayed items.
public abstract void Update();
}
public class DebugSimpleItemUI : DebugItemUI
{
protected GameObject m_Name = null;
protected GameObject m_Value = null;
protected DebugSimpleItemUI(GameObject parent, DebugItem debugItem, string name)
: base(debugItem)
{
m_Root = DebugMenuUI.CreateHorizontalLayoutGroup("", true, true, false, false, parent);
m_Name = DebugMenuUI.CreateTextElement(m_DebugItem.name, name, 10, TextAnchor.MiddleLeft, m_Root);
var layoutElem = m_Name.AddComponent<UI.LayoutElement>();
layoutElem.minWidth = DebugMenuUI.kDebugItemNameWidth;
m_Value = DebugMenuUI.CreateTextElement(string.Format("{0} value", name), "", 10, TextAnchor.MiddleLeft, m_Root);
}
public override void SetSelected(bool value)
{
m_Name.GetComponent<UI.Text>().color = value ? DebugMenuUI.kColorSelected : DebugMenuUI.kColorUnSelected;
m_Value.GetComponent<UI.Text>().color = value ? DebugMenuUI.kColorSelected : DebugMenuUI.kColorUnSelected;
}
public override void OnValidate()
{
throw new System.NotImplementedException();
}
public override void OnIncrement()
{
throw new System.NotImplementedException();
}
public override void OnDecrement()
{
throw new System.NotImplementedException();
}
public override void Update()
{
throw new System.NotImplementedException();
}
}
public class DebugBoolItemUI : DebugSimpleItemUI
{
public DebugBoolItemUI(GameObject parent, DebugItem debugItem, string name)
: base(parent, debugItem, name)
{
Update();
}
public override void Update()
{
m_Value.GetComponent<UI.Text>().text = (bool)m_DebugItem.GetValue() ? "True" : "False";
}
public override void OnValidate()
{
m_DebugItem.SetValue(!(bool)m_DebugItem.GetValue());
Update();
}
public override void OnIncrement()
{
OnValidate();
}
public override void OnDecrement()
{
OnValidate();
}
}
public class DebugFloatItemUI : DebugSimpleItemUI
{
bool m_SelectIncrementMode = false;
int m_CurrentIncrementIndex = -1;
public DebugFloatItemUI(GameObject parent, DebugItem debugItem, string name)
: base(parent, debugItem, name)
{
Update();
}
public override void Update()
{
float currentValue = (float)m_DebugItem.GetValue();
bool isNegative = currentValue < 0.0f;
// Easier to format the string without caring about the '-' sign. We add it back at the end
currentValue = Mathf.Abs(currentValue);
char separator = System.Convert.ToChar(System.Globalization.CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator);
// Start with the maximum amount of trailing zeros
string valueWithMaxDecimals = string.Format("{0:0.00000}", currentValue);
// Remove trailing zeros until we reach the separator or we reach the decimal we are currently editing.
int separatorIndex = valueWithMaxDecimals.LastIndexOf(separator);
int index = valueWithMaxDecimals.Length - 1;
while (
valueWithMaxDecimals[index] == '0' // Remove trailing zeros
&& index > (separatorIndex + 1) // until we reach the separator
&& index > (System.Math.Abs(m_CurrentIncrementIndex) + separatorIndex)) // Or it's the index of the current decimal being edited (so as to display the last trailing zero in this case)
{
index--;
}
string finalValue = new string(valueWithMaxDecimals.ToCharArray(), 0, index + 1);
// Add leading zeros until we reach where the current order is being edited.
if (m_CurrentIncrementIndex > 0)
{
float incrementValue = Mathf.Pow(10.0f, (float)m_CurrentIncrementIndex);
if (incrementValue > currentValue)
{
float compareValue = currentValue + 1.0f; // Start at 1.0f because we know that we are going to increment by 10 or more
while (incrementValue > compareValue)
{
finalValue = finalValue.Insert(0, "0");
compareValue *= 10.0f;
}
}
}
// When selecting which decimal/order you want to edit, we show brackets around the figure to show the user.
if (m_SelectIncrementMode)
{
separatorIndex = finalValue.LastIndexOf(separator); // separator may have changed place if we added leading zeros
int bracketIndex = separatorIndex - m_CurrentIncrementIndex;
if (m_CurrentIncrementIndex >= 0) // Skip separator
bracketIndex -= 1;
finalValue = finalValue.Insert(bracketIndex, "[");
finalValue = finalValue.Insert(bracketIndex + 2, "]");
}
if (isNegative)
finalValue = finalValue.Insert(0, "-");
m_Value.GetComponent<UI.Text>().text = finalValue;
}
public override void OnValidate()
{
m_SelectIncrementMode = !m_SelectIncrementMode;
Update();
}
public override void OnIncrement()
{
if (!m_SelectIncrementMode)
{
m_DebugItem.SetValue((float)m_DebugItem.GetValue() + Mathf.Pow(10.0f, (float)m_CurrentIncrementIndex));
}
else
{
m_CurrentIncrementIndex -= 1; // * 0.1 (10^m_CurrentIncrementIndex)
m_CurrentIncrementIndex = System.Math.Max(-5, m_CurrentIncrementIndex);
}
Update();
}
public override void OnDecrement()
{
if (!m_SelectIncrementMode)
{
m_DebugItem.SetValue((float)m_DebugItem.GetValue() - Mathf.Pow(10.0f, (float)m_CurrentIncrementIndex));
}
else
{
m_CurrentIncrementIndex += 1; // * 10 (10^m_CurrentIncrementIndex)
}
Update();
}
}
// Everything is done with int. We don't really care about values > 2b for debugging.
public class DebugIntegerItemUI : DebugSimpleItemUI
{
bool m_SelectIncrementMode = false;
int m_CurrentIncrementIndex = 0;
public DebugIntegerItemUI(GameObject parent, DebugItem debugItem, string name)
: base(parent, debugItem, name)
{
}
protected void UpdateText(int value)
{
bool isNegative = value < 0f;
// Easier to format the string without caring about the '-' sign. We add it back at the end
value = System.Math.Abs(value);
string finalValue = string.Format("{0}", value);
// Add leading zeros until we reach where the current order is being edited.
if (m_CurrentIncrementIndex > 0)
{
int incrementValue = (int)System.Math.Pow(10, m_CurrentIncrementIndex);
if (incrementValue > value)
{
int compareValue = System.Math.Max(value, 1);
while (incrementValue > compareValue)
{
finalValue = finalValue.Insert(0, "0");
compareValue *= 10;
}
}
}
// When selecting which decimal/order you want to edit, we show brackets around the figure to show the user.
if (m_SelectIncrementMode)
{
int bracketIndex = finalValue.Length - 1 - m_CurrentIncrementIndex;
finalValue = finalValue.Insert(bracketIndex, "[");
finalValue = finalValue.Insert(bracketIndex + 2, "]");
}
if (isNegative)
finalValue = finalValue.Insert(0, "-");
m_Value.GetComponent<UI.Text>().text = finalValue;
}
protected virtual int GetIntegerValue()
{
throw new System.NotImplementedException();
}
protected virtual void SetIntegerValue(int value)
{
throw new System.NotImplementedException();
}
public override void Update()
{
UpdateText(GetIntegerValue());
}
public override void OnValidate()
{
m_SelectIncrementMode = !m_SelectIncrementMode;
Update();
}
public override void OnIncrement()
{
if (!m_SelectIncrementMode)
{
SetIntegerValue(GetIntegerValue() + (int)Mathf.Pow(10.0f, (float)m_CurrentIncrementIndex));
}
else
{
m_CurrentIncrementIndex -= 1; // *= 0.1 (10^m_CurrentIncrementIndex)
m_CurrentIncrementIndex = System.Math.Max(0, m_CurrentIncrementIndex);
}
Update();
}
public override void OnDecrement()
{
if (!m_SelectIncrementMode)
{
SetIntegerValue(GetIntegerValue() - (int)Mathf.Pow(10.0f, (float)m_CurrentIncrementIndex));
}
else
{
m_CurrentIncrementIndex += 1; // *= 10 (10^m_CurrentIncrementIndex)
m_CurrentIncrementIndex = System.Math.Max(0, m_CurrentIncrementIndex);
}
Update();
}
}
public class DebugIntItemUI : DebugIntegerItemUI
{
public DebugIntItemUI(GameObject parent, DebugItem debugItem, string name)
: base(parent, debugItem, name)
{
UpdateText((int)m_DebugItem.GetValue());
}
protected override int GetIntegerValue()
{
return (int)m_DebugItem.GetValue();
}
protected override void SetIntegerValue(int value)
{
m_DebugItem.SetValue(value);
}
}
public class DebugUIntItemUI : DebugIntegerItemUI
{
public DebugUIntItemUI(GameObject parent, DebugItem debugItem, string name)
: base(parent, debugItem, name)
{
UpdateText((int)(uint)m_DebugItem.GetValue());
}
protected override int GetIntegerValue()
{
return (int)(uint)m_DebugItem.GetValue();
}
protected override void SetIntegerValue(int value)
{
m_DebugItem.SetValue((uint)System.Math.Max(0, value));
}
}
public class DebugEnumItemUI : DebugSimpleItemUI
{
int m_CurrentValueIndex = 0;
GUIContent[] m_ValueNames;
int[] m_Values;
public DebugEnumItemUI(GameObject parent, DebugItem debugItem, string name, GUIContent[] valueNames, int[] values)
: base(parent, debugItem, name)
{
m_Values = values;
m_ValueNames = valueNames;
m_CurrentValueIndex = FindIndexForValue((int)m_DebugItem.GetValue());
Update();
}
private int FindIndexForValue(int value)
{
for (int i = 0; i < m_Values.Length; ++i)
{
if (m_Values[i] == value)
return i;
}
return -1;
}
public override void Update()
{
if (m_CurrentValueIndex != -1)
{
m_Value.GetComponent<UI.Text>().text = m_ValueNames[m_CurrentValueIndex].text;
}
}
public override void OnValidate()
{
OnIncrement();
}
public override void OnIncrement()
{
m_CurrentValueIndex = (m_CurrentValueIndex + 1) % m_Values.Length;
m_DebugItem.SetValue(m_Values[m_CurrentValueIndex]);
Update();
}
public override void OnDecrement()
{
m_CurrentValueIndex -= 1;
if (m_CurrentValueIndex < 0)
m_CurrentValueIndex = m_Values.Length - 1;
m_DebugItem.SetValue(m_Values[m_CurrentValueIndex]);
Update();
}
}
public class DebugColorItemUI : DebugItemUI
{
protected GameObject m_Name = null;
protected GameObject m_ColorRect = null;
public DebugColorItemUI(GameObject parent, DebugItem debugItem, string name)
: base(debugItem)
{
m_DebugItem = debugItem;
m_Root = DebugMenuUI.CreateHorizontalLayoutGroup(name, true, true, false, false, parent);
m_Name = DebugMenuUI.CreateTextElement(m_DebugItem.name, name, 10, TextAnchor.MiddleLeft, m_Root);
var layoutElemName = m_Name.AddComponent<UI.LayoutElement>();
layoutElemName.minWidth = DebugMenuUI.kDebugItemNameWidth;
// Force layout because we need the right height for the color rect element afterward.
UI.LayoutRebuilder.ForceRebuildLayoutImmediate(m_Root.GetComponent<RectTransform>());
RectTransform nameRect = m_Name.GetComponent<RectTransform>();
m_ColorRect = new GameObject();
m_ColorRect.transform.SetParent(m_Root.transform, false);
m_ColorRect.AddComponent<UI.Image>();
UI.LayoutElement layoutElem = m_ColorRect.AddComponent<UI.LayoutElement>();
// We need to set min width/height because without an image, the size would be zero.
layoutElem.minHeight = nameRect.rect.height;
layoutElem.minWidth = 40.0f;
Update();
}
public override void Update()
{
Color currentValue = (Color)m_DebugItem.GetValue();
UI.Image image = m_ColorRect.GetComponent<UI.Image>();
image.color = currentValue;
}
public override void SetSelected(bool value)
{
m_Name.GetComponent<UI.Text>().color = value ? DebugMenuUI.kColorSelected : DebugMenuUI.kColorUnSelected;
}
// TODO: Edit mode!
public override void OnValidate()
{
}
public override void OnIncrement()
{
}
public override void OnDecrement()
{
}
}
}

12
MaterialGraphProject/Assets/SRP/ScriptableRenderPipeline/Core/Debugging/DebugItemUI.cs.meta


fileFormatVersion: 2
guid: 2af8a6ada82d1994d9cfd79a8b92eebc
timeCreated: 1492702176
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

155
MaterialGraphProject/Assets/SRP/ScriptableRenderPipeline/Core/Debugging/DebugMenuManager.cs


using System;
using System.Linq;
using System.Reflection;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace UnityEngine.Experimental.Rendering
{
public class DebugMenuManager
{
private static DebugMenuManager s_Instance = null;
static public DebugMenuManager instance
{
get
{
if (s_Instance == null)
{
s_Instance = new DebugMenuManager();
}
return s_Instance;
}
}
List<DebugPanel> m_DebugPanels = new List<DebugPanel>();
DebugPanel m_PersistentDebugPanel = null;
DebugMenuUI m_DebugMenuUI = null;
public int panelCount { get { return m_DebugPanels.Count; } }
public DebugMenuUI menuUI { get { return m_DebugMenuUI; } }
private DebugMenuState m_DebugMenuState = null;
private bool m_DebugMenuStateDirty = false;
DebugMenuManager()
{
m_PersistentDebugPanel = new DebugPanel<DebugPanelUI>("Persistent");
m_DebugMenuUI = new DebugMenuUI(this);
LookUpDebugPanelClasses();
var updater = GameObject.Find("DebugMenuUpdater");
if (updater == null)
{
GameObject go = new GameObject("DebugMenuUpdater");
go.hideFlags = HideFlags.HideAndDontSave;
go.AddComponent<DebugMenuUpdater>();
}
}
public DebugPanel GetDebugPanel(int index)
{
if (index < m_DebugPanels.Count)
return m_DebugPanels[index];
else
return null;
}
public DebugPanel GetPersistentDebugPanel()
{
return m_PersistentDebugPanel;
}
void LookUpDebugPanelClasses()
{
// Prepare all debug menus
var types = Assembly.GetAssembly(typeof(DebugPanel)).GetTypes()
.Where(t => t.IsSubclassOf(typeof(DebugPanel)));
m_DebugPanels.Clear();
foreach (var type in types)
{
if(!type.IsGenericTypeDefinition)
AddDebugPanel((DebugPanel)Activator.CreateInstance(type));
}
}
T GetDebugPanel<T>() where T:DebugPanel
{
foreach(DebugPanel menu in m_DebugPanels)
{
if (menu is T)
return menu as T;
}
return null;
}
public DebugPanel GetDebugPanel(string name)
{
foreach(DebugPanel menu in m_DebugPanels)
{
if (menu.name == name)
return menu;
}
return null;
}
public void Update()
{
if(m_DebugMenuState != null && m_DebugMenuStateDirty)
{
m_DebugMenuStateDirty = false;
m_DebugMenuState.UpdateAllDebugItems();
}
m_DebugMenuUI.Update();
}
private void AddDebugPanel(DebugPanel panel)
{
m_DebugPanels.Add(panel);
m_DebugMenuUI.AddDebugPanel(panel);
}
public void AddDebugItem<DebugPanelType, DebugItemType>(string name, Func<object> getter, Action<object> setter = null, DebugItemFlag flags = DebugItemFlag.None, DebugItemHandler handler = null) where DebugPanelType : DebugPanel
{
DebugPanelType debugPanel = GetDebugPanel<DebugPanelType>();
if (debugPanel != null)
{
debugPanel.AddDebugItem<DebugItemType>(name, getter, setter, flags, handler);
}
m_DebugMenuStateDirty = true;
}
public void AddDebugItem<DebugItemType>(string debugPanelName, string name, Func<object> getter, Action<object> setter = null, DebugItemFlag flags = DebugItemFlag.None, DebugItemHandler handler = null)
{
DebugPanel debugPanel = GetDebugPanel(debugPanelName);
// If the menu does not exist, create a generic one. This way, users don't have to explicitely create a new DebugMenu class if they don't need any particular overriding of default behavior.
if(debugPanel == null)
{
debugPanel = new DebugPanel<DebugPanelUI>(debugPanelName);
AddDebugPanel(debugPanel);
}
if (debugPanel != null)
{
debugPanel.AddDebugItem<DebugItemType>(name, getter, setter, flags, handler);
}
m_DebugMenuStateDirty = true;
}
public void SetDebugMenuState(DebugMenuState state)
{
m_DebugMenuStateDirty = true;
m_DebugMenuState = state;
}
}
}

12
MaterialGraphProject/Assets/SRP/ScriptableRenderPipeline/Core/Debugging/DebugMenuManager.cs.meta


fileFormatVersion: 2
guid: 0d82eeff53030774abf4d8d510717fad
timeCreated: 1491995655
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

143
MaterialGraphProject/Assets/SRP/ScriptableRenderPipeline/Core/Debugging/DebugMenuState.cs


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
namespace UnityEngine.Experimental.Rendering
{
[Serializable]
public abstract class DebugItemState
: ScriptableObject
{
public DebugItemState()
{
}
public string panelName = "";
public string itemName = "";
protected DebugItem m_DebugItem = null;
public bool isValid { get { return m_DebugItem != null; } }
public abstract void UpdateDebugItemValue();
public abstract void SetValue(object value);
public void Initialize(DebugItem item)
{
this.panelName = item.panelName;
this.itemName = item.name;
m_DebugItem = item;
}
}
public class DebugItemState<T> : DebugItemState
{
public T value;
public override void SetValue(object value)
{
this.value = (T)value;
}
public override void UpdateDebugItemValue()
{
if(m_DebugItem == null)
{
if (itemName != "" && panelName != "")
{
DebugMenuManager dmm = DebugMenuManager.instance;
DebugPanel menu = dmm.GetDebugPanel(panelName);
if (menu != null)
{
m_DebugItem = menu.GetDebugItem(itemName);
}
}
}
if(m_DebugItem != null) // Can happen if not all menu are populated yet (depends on call order...)
m_DebugItem.SetValue(value, false);
}
}
public class DebugMenuState
: ScriptableObject
{
[SerializeField]
List<DebugItemState> m_ItemStateList = new List<DebugItemState>();
public void OnEnable()
{
#if UNITY_EDITOR
UnityEditor.Undo.undoRedoPerformed += OnUndoRedoPerformed;
#endif
// Populate item states
DebugMenuManager dmm = DebugMenuManager.instance;
for (int panelIdx = 0; panelIdx < dmm.panelCount; ++panelIdx)
{
DebugPanel panel = dmm.GetDebugPanel(panelIdx);
for (int itemIdx = 0; itemIdx < panel.itemCount; ++itemIdx)
{
DebugItem item = panel.GetDebugItem(itemIdx);
DebugItemState debugItemState = FindDebugItemState(item);
if (debugItemState == null)
{
debugItemState = item.handler.CreateDebugItemState();
debugItemState.hideFlags = HideFlags.DontSave;
debugItemState.Initialize(item);
debugItemState.SetValue(item.GetValue());
AddDebugItemState(debugItemState);
}
}
}
DebugMenuManager.instance.SetDebugMenuState(this);
}
public void OnDisable()
{
#if UNITY_EDITOR
UnityEditor.Undo.undoRedoPerformed -= OnUndoRedoPerformed;
#endif
}
public void OnDestroy()
{
foreach(var item in m_ItemStateList)
{
Object.DestroyImmediate(item);
}
}
void OnUndoRedoPerformed()
{
// Maybe check a hash or something? So that we don't do that at each redo...
UpdateAllDebugItems();
#if UNITY_EDITOR
UnityEditorInternal.InternalEditorUtility.RepaintAllViews();
#endif
}
public void AddDebugItemState(DebugItemState state)
{
m_ItemStateList.Add(state);
}
public DebugItemState FindDebugItemState(DebugItem item)
{
return m_ItemStateList.Find(x => x.itemName == item.name && x.panelName == item.panelName);
}
public void UpdateAllDebugItems()
{
foreach (var itemState in m_ItemStateList)
{
itemState.UpdateDebugItemValue();
}
#if UNITY_EDITOR
UnityEditorInternal.InternalEditorUtility.RepaintAllViews();
#endif
}
}
}

12
MaterialGraphProject/Assets/SRP/ScriptableRenderPipeline/Core/Debugging/DebugMenuState.cs.meta


fileFormatVersion: 2
guid: d17031e345b144b4a887f66665be6a2b
timeCreated: 1495180913
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

298
MaterialGraphProject/Assets/SRP/ScriptableRenderPipeline/Core/Debugging/DebugMenuUI.cs


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace UnityEngine.Experimental.Rendering
{
public class DebugMenuUI
{
public static Color kColorSelected = new Color(1.0f, 1.0f, 1.0f, 1.0f);
public static Color kColorUnSelected = new Color(0.25f, 0.25f, 0.25f, 1.0f);
public static Color kBackgroundColor = new Color(0.5f, 0.5f, 0.5f, 0.4f);
public static float kDebugItemNameWidth = 150.0f;
bool m_Enabled = false;
int m_ActivePanelIndex = 0;
GameObject m_Root = null;
GameObject m_MainPanelLayout = null;
GameObject m_PersistentPanelLayout = null;
List<DebugPanelUI> m_DebugPanelUIs = new List<DebugPanelUI>();
DebugPanelUI m_PersistentDebugPanelUI = null;
GameObject m_MainMenuRoot = null;
GameObject m_PersistentPanelRoot = null;
DebugMenuManager m_DebugMenuManager = null;
public int panelCount { get { return m_DebugPanelUIs.Count; } }
public bool isEnabled { get { return m_Enabled; } }
public int activePanelIndex { get { return m_ActivePanelIndex; } set { m_ActivePanelIndex = value; } }
static bool s_UIChanged = false;
static public bool changed { get { return s_UIChanged; } set { s_UIChanged = value; } }
public DebugMenuUI(DebugMenuManager manager)
{
m_DebugMenuManager = manager;
}
// HACK: for some reason, the layout of the selected menu may fail if the previous menu in the list is disabled
// Disabling and re-enabling everything seems to fix the issue...
private void HackSelectPanel()
{
m_MainMenuRoot.SetActive(false);
m_MainMenuRoot.SetActive(true);
}
public void EnablePersistentView(bool value)
{
m_PersistentPanelRoot.SetActive(value);
}
public void PreviousDebugPanel()
{
m_DebugPanelUIs[m_ActivePanelIndex].SetSelected(false);
m_ActivePanelIndex = m_ActivePanelIndex - 1;
if (m_ActivePanelIndex == -1)
m_ActivePanelIndex = m_DebugPanelUIs.Count - 1;
m_DebugPanelUIs[m_ActivePanelIndex].SetSelected(true);
HackSelectPanel();
}
public void NextDebugPanel()
{
m_DebugPanelUIs[m_ActivePanelIndex].SetSelected(false);
m_ActivePanelIndex = (m_ActivePanelIndex + 1) % m_DebugPanelUIs.Count;
m_DebugPanelUIs[m_ActivePanelIndex].SetSelected(true);
HackSelectPanel();
}
public void ToggleMenu()
{
m_Enabled = !m_Enabled;
if(m_Enabled)
{
BuildGUI();
m_MainMenuRoot.SetActive(true);
m_DebugPanelUIs[m_ActivePanelIndex].SetSelected(m_Enabled);
}
else
{
m_MainMenuRoot.SetActive(false);
}
}
public void OnValidate()
{
m_DebugPanelUIs[m_ActivePanelIndex].OnValidate();
}
public void OnMoveHorizontal(float value)
{
m_DebugPanelUIs[m_ActivePanelIndex].OnMoveHorizontal(value);
}
public void OnMoveVertical(float value)
{
m_DebugPanelUIs[m_ActivePanelIndex].OnMoveVertical(value);
}
public void Update()
{
if(m_PersistentDebugPanelUI != null)
m_PersistentDebugPanelUI.Update();
if (!m_Enabled)
return;
if (m_ActivePanelIndex != -1)
m_DebugPanelUIs[m_ActivePanelIndex].Update();
}
public void OnMakePersistent()
{
DebugPanel persistentPanel = DebugMenuManager.instance.GetPersistentDebugPanel();
DebugItem selectedItem = m_DebugPanelUIs[m_ActivePanelIndex].GetSelectedDebugItem();
if (selectedItem != null && selectedItem.readOnly)
{
if (persistentPanel.HasDebugItem(selectedItem))
{
persistentPanel.RemoveDebugItem(selectedItem);
}
else
{
persistentPanel.AddDebugItem(selectedItem);
}
}
if (m_PersistentDebugPanelUI.itemCount == 0)
{
m_PersistentDebugPanelUI.SetSelected(false);
EnablePersistentView(false); // Temp, should just need the above. Wait for background UI to be moved to menu itself
}
else
{
m_PersistentDebugPanelUI.SetSelected(true);
m_PersistentDebugPanelUI.ResetSelectedItem();
EnablePersistentView(true);
HackSelectPanel();
}
}
public void BuildGUI()
{
if (m_Root != null)
return;
float kBorderSize = 5.0f;
m_Root = new GameObject("DebugMenu Root");
Canvas canvas = m_Root.AddComponent<Canvas>();
canvas.renderMode = RenderMode.ScreenSpaceOverlay;
UI.CanvasScaler canvasScaler = m_Root.AddComponent<UI.CanvasScaler>();
canvasScaler.uiScaleMode = UI.CanvasScaler.ScaleMode.ScaleWithScreenSize;
canvasScaler.referenceResolution = new Vector2(800.0f, 600.0f);
// TODO: Move background an layout to the menu itself.
m_MainMenuRoot = new GameObject("Background");
m_MainMenuRoot.AddComponent<CanvasRenderer>();
var image = m_MainMenuRoot.AddComponent<UI.Image>();
m_MainMenuRoot.transform.SetParent(m_Root.transform, false);
image.rectTransform.pivot = new Vector2(0.0f, 0.0f);
image.rectTransform.localPosition = Vector3.zero;
image.rectTransform.localScale = Vector3.one;
image.rectTransform.anchorMin = new Vector2(0.0f, 0.0f);
image.rectTransform.anchorMax = new Vector2(0.5f, 1.0f);
image.rectTransform.anchoredPosition = new Vector2(kBorderSize, kBorderSize);
image.rectTransform.sizeDelta = new Vector2(-(kBorderSize * 2.0f), -(kBorderSize * 2.0f));
image.color = kBackgroundColor;
m_MainPanelLayout = DebugMenuUI.CreateVerticalLayoutGroup("DebugMenu VLayout", true, true, true, false, 5.0f, m_MainMenuRoot);
RectTransform menuVLRectTransform = m_MainPanelLayout.GetComponent<RectTransform>();
menuVLRectTransform.pivot = new Vector2(0.0f, 0.0f);
menuVLRectTransform.localPosition = Vector3.zero;
menuVLRectTransform.localScale = Vector3.one;
menuVLRectTransform.anchorMin = new Vector2(0.0f, 0.0f);
menuVLRectTransform.anchorMax = new Vector2(1.0f, 1.0f);
menuVLRectTransform.anchoredPosition = new Vector2(kBorderSize, kBorderSize);
menuVLRectTransform.sizeDelta = new Vector2(-(kBorderSize * 2.0f), -(kBorderSize * 2.0f));
// TODO: Move background an layout to the menu itself.
m_PersistentPanelRoot = new GameObject("Background_Persistent");
m_PersistentPanelRoot.AddComponent<CanvasRenderer>();
image = m_PersistentPanelRoot.AddComponent<UI.Image>();
m_PersistentPanelRoot.transform.SetParent(m_Root.transform, false);
image.rectTransform.pivot = new Vector2(0.0f, 0.0f);
image.rectTransform.localPosition = Vector3.zero;
image.rectTransform.localScale = Vector3.one;
image.rectTransform.anchorMin = new Vector2(0.7f, 0.8f);
image.rectTransform.anchorMax = new Vector2(1.0f, 1.0f);
image.rectTransform.anchoredPosition = new Vector2(kBorderSize, kBorderSize);
image.rectTransform.sizeDelta = new Vector2(-(kBorderSize * 2.0f), -(kBorderSize * 2.0f));
image.color = kBackgroundColor;
m_PersistentPanelLayout = DebugMenuUI.CreateVerticalLayoutGroup("DebugMenu VLayout", true, true, true, false, 5.0f, m_PersistentPanelRoot);
menuVLRectTransform = m_PersistentPanelLayout.GetComponent<RectTransform>();
menuVLRectTransform.pivot = new Vector2(0.0f, 0.0f);
menuVLRectTransform.localPosition = Vector3.zero;
menuVLRectTransform.localScale = Vector3.one;
menuVLRectTransform.anchorMin = new Vector2(0.0f, 0.0f);
menuVLRectTransform.anchorMax = new Vector2(1.0f, 1.0f);
menuVLRectTransform.anchoredPosition = new Vector2(kBorderSize, kBorderSize);
menuVLRectTransform.sizeDelta = new Vector2(-(kBorderSize * 2.0f), -(kBorderSize * 2.0f));
m_PersistentPanelRoot.SetActive(false);
DebugMenuUI.CreateTextElement("DebugMenuTitle", "Debug Window", 14, TextAnchor.MiddleCenter, m_MainPanelLayout);
m_DebugMenuManager.GetPersistentDebugPanel().panelUI.BuildGUI(m_PersistentPanelLayout);
m_PersistentDebugPanelUI = m_DebugMenuManager.GetPersistentDebugPanel().panelUI;
for (int i = 0; i < m_DebugMenuManager.panelCount; ++i)
{
m_DebugMenuManager.GetDebugPanel(i).panelUI.BuildGUI(m_MainPanelLayout);
m_DebugPanelUIs[i].SetSelected(false);
}
}
public void AddDebugPanel(DebugPanel panel)
{
m_DebugPanelUIs.Add(panel.panelUI);
}
#if UNITY_EDITOR
public void OnEditorGUI()
{
s_UIChanged = false;
if(!m_DebugPanelUIs[m_ActivePanelIndex].empty)
m_DebugPanelUIs[m_ActivePanelIndex].OnEditorGUI();
if(s_UIChanged)
{
UnityEditorInternal.InternalEditorUtility.RepaintAllViews();
}
}
#endif
public static GameObject CreateVerticalLayoutGroup(string name, bool controlWidth, bool controlHeight, bool forceExpandWidth, bool forceExpandHeight, GameObject parent = null )
{
return CreateVerticalLayoutGroup(name, controlWidth, controlHeight, forceExpandWidth, forceExpandHeight, 0.0f, parent);
}
public static GameObject CreateVerticalLayoutGroup(string name, bool controlWidth, bool controlHeight, bool forceExpandWidth, bool forceExpandHeight, float spacing, GameObject parent = null )
{
GameObject go = new GameObject(name);
go.transform.SetParent(parent.transform, false);
UI.VerticalLayoutGroup verticalLayout = go.AddComponent<UI.VerticalLayoutGroup>();
verticalLayout.childControlHeight = controlHeight;
verticalLayout.childControlWidth = controlWidth;
verticalLayout.childForceExpandHeight = forceExpandHeight;
verticalLayout.childForceExpandWidth = forceExpandWidth;
verticalLayout.spacing = spacing;
return go;
}
public static GameObject CreateHorizontalLayoutGroup(string name, bool controlWidth, bool controlHeight, bool forceExpandWidth, bool forceExpandHeight, GameObject parent = null)
{
return CreateHorizontalLayoutGroup(name, controlWidth, controlHeight, forceExpandWidth, forceExpandHeight, 0.0f, parent);
}
public static GameObject CreateHorizontalLayoutGroup(string name, bool controlWidth, bool controlHeight, bool forceExpandWidth, bool forceExpandHeight, float spacing = 1.0f, GameObject parent = null)
{
GameObject go = new GameObject(name);
go.transform.SetParent(parent.transform, false);
UI.HorizontalLayoutGroup horizontalLayout = go.AddComponent<UI.HorizontalLayoutGroup>();
horizontalLayout.childControlHeight = controlHeight;
horizontalLayout.childControlWidth = controlWidth;
horizontalLayout.childForceExpandHeight = forceExpandHeight;
horizontalLayout.childForceExpandWidth = forceExpandWidth;
horizontalLayout.spacing = spacing;
return go;
}
public static GameObject CreateTextElement(string elementName, string text, int size = 14, TextAnchor alignment = TextAnchor.MiddleLeft, GameObject parent = null)
{
GameObject goText = new GameObject(elementName);
goText.transform.SetParent(parent.transform, false);
goText.transform.transform.localPosition = Vector3.zero;
goText.transform.transform.localScale = Vector3.one;
UI.Text textComponent = goText.AddComponent<UI.Text>();
textComponent.font = Resources.GetBuiltinResource(typeof(Font), "Arial.ttf") as Font;
textComponent.text = text;
textComponent.alignment = alignment;
textComponent.fontSize = size;
textComponent.verticalOverflow = VerticalWrapMode.Overflow;
textComponent.color = DebugMenuUI.kColorUnSelected;
RectTransform rectTransform = goText.GetComponent<RectTransform>();
rectTransform.pivot = new Vector2(0.0f, 0.0f);
rectTransform.localPosition = new Vector3(0.0f, 0.0f);
rectTransform.anchorMin = new Vector2(0.0f, 0.0f);
rectTransform.anchorMax = new Vector2(1.0f, 1.0f);
return goText;
}
}
}

12
MaterialGraphProject/Assets/SRP/ScriptableRenderPipeline/Core/Debugging/DebugMenuUI.cs.meta


fileFormatVersion: 2
guid: 4e88bb221a7ceb74283e4e5f93e75092
timeCreated: 1492603542
licenseType: Pro
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

57
MaterialGraphProject/Assets/SRP/ScriptableRenderPipeline/Core/Debugging/DebugMenuUpdater.cs


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace UnityEngine.Experimental.Rendering
{
[ExecuteInEditMode]
public class DebugMenuUpdater : MonoBehaviour
{
void Update()
{
DebugMenuManager.instance.Update();
DebugActionManager.instance.Update();
if (DebugActionManager.instance.GetAction(DebugActionManager.DebugAction.EnableDebugMenu) != 0.0f)
{
DebugMenuManager.instance.menuUI.ToggleMenu();
}
if (DebugMenuManager.instance.menuUI.isEnabled)
{
if (DebugActionManager.instance.GetAction(DebugActionManager.DebugAction.PreviousDebugPanel) != 0.0f)
{
DebugMenuManager.instance.menuUI.PreviousDebugPanel();
}
if (DebugActionManager.instance.GetAction(DebugActionManager.DebugAction.NextDebugPanel) != 0.0f)
{
DebugMenuManager.instance.menuUI.NextDebugPanel();
}
if (DebugActionManager.instance.GetAction(DebugActionManager.DebugAction.Validate) != 0.0f)
{
DebugMenuManager.instance.menuUI.OnValidate();
}
if (DebugActionManager.instance.GetAction(DebugActionManager.DebugAction.MakePersistent) != 0.0f)
{
DebugMenuManager.instance.menuUI.OnMakePersistent();
}
float moveHorizontal = DebugActionManager.instance.GetAction(DebugActionManager.DebugAction.MoveHorizontal);
if (moveHorizontal != 0.0f)
{
DebugMenuManager.instance.menuUI.OnMoveHorizontal(moveHorizontal);
}
float moveVertical = DebugActionManager.instance.GetAction(DebugActionManager.DebugAction.MoveVertical);
if (moveVertical != 0.0f)
{
DebugMenuManager.instance.menuUI.OnMoveVertical(moveVertical);
}
}
}
}
}

部分文件因为文件数量过多而无法显示

正在加载...
取消
保存