浏览代码

Merge branch 'master' into DebugShader

# Conflicts:
#	Assets/TestScenes/HDTest/Material/HDRenderLoopMaterials/test.mat
/main
Julien Ignace 8 年前
当前提交
f1087ce3
共有 67 个文件被更改,包括 3438 次插入387 次删除
  1. 24
      Assets/Editor/Tests/ShaderGeneratorTests/ShaderGeneratorTests.cs
  2. 15
      Assets/ScriptableRenderLoop/HDRenderLoop/HDRenderLoop.cs
  3. 42
      Assets/ScriptableRenderLoop/HDRenderLoop/Shaders/DisneyGGX.shader
  4. 42
      Assets/ScriptableRenderLoop/HDRenderLoop/Shaders/LightDefinition.cs
  5. 7
      Assets/ScriptableRenderLoop/HDRenderLoop/Shaders/Lighting/LightingDeferred.shader
  6. 3
      Assets/ScriptableRenderLoop/HDRenderLoop/Shaders/Lighting/LightingForward.hlsl
  7. 114
      Assets/ScriptableRenderLoop/HDRenderLoop/Shaders/Material/DisneyGGX.hlsl
  8. 153
      Assets/ScriptableRenderLoop/HDRenderLoop/Shaders/Material/Material.hlsl
  9. 117
      Assets/ScriptableRenderLoop/HDRenderLoop/Shaders/TemplateDisneyGGX.hlsl
  10. 14
      Assets/ScriptableRenderLoop/ShaderLibrary/Common.hlsl
  11. 4
      Assets/ScriptableRenderLoop/common/ShaderBase.h
  12. 8
      Assets/ScriptableRenderLoop/fptl/FinalPass.shader
  13. 72
      Assets/ScriptableRenderLoop/fptl/FptlLighting.cs
  14. 2
      Assets/ScriptableRenderLoop/fptl/Internal-DeferredShading.shader
  15. 37
      Assets/ScriptableRenderLoop/fptl/LightDefinitions.cs
  16. 34
      Assets/ScriptableRenderLoop/fptl/LightDefinitions.cs.hlsl
  17. 2
      Assets/ScriptableRenderLoop/fptl/scrbound.compute
  18. 15
      Assets/ShaderGenerator/CSharpToHLSL.cs
  19. 346
      Assets/TestScenes/HDTest/HDRenderLoopTest.unity
  20. 8
      Assets/TestScenes/HDTest/Material/HDRenderLoopMaterials/test.mat
  21. 11
      Assets/TestScenes/HDTest/Rock/rcgRock012/Materials/rcgRock012Material.mat
  22. 9
      Assets/Editor/Tests/RenderloopTests.meta
  23. 513
      Assets/Editor/Tests/TestScene.unity
  24. 8
      Assets/Editor/Tests/TestScene.unity.meta
  25. 125
      Assets/ScriptableRenderLoop/HDRenderLoop/Shaders/LightDefinition.cs.hlsl
  26. 9
      Assets/ScriptableRenderLoop/HDRenderLoop/Shaders/LightDefinition.cs.hlsl.meta
  27. 32
      Assets/ScriptableRenderLoop/HDRenderLoop/Shaders/Material/BuiltinData.hlsl
  28. 9
      Assets/ScriptableRenderLoop/HDRenderLoop/Shaders/Material/BuiltinData.hlsl.meta
  29. 30
      Assets/ScriptableRenderLoop/HDRenderLoop/Shaders/Material/Unlit.hlsl
  30. 9
      Assets/ScriptableRenderLoop/HDRenderLoop/Shaders/Material/Unlit.hlsl.meta
  31. 7
      Assets/ScriptableRenderLoop/HDRenderLoop/Shaders/ShaderConfig.cs
  32. 12
      Assets/ScriptableRenderLoop/HDRenderLoop/Shaders/ShaderConfig.cs.meta
  33. 9
      Assets/ScriptableRenderLoop/Tests.meta
  34. 9
      Assets/TestScenes/HDTest/Leaf.meta
  35. 311
      Assets/TestScenes/HDTest/Material/HDRenderLoopMaterials/test-alpha.mat
  36. 8
      Assets/TestScenes/HDTest/Material/HDRenderLoopMaterials/test-alpha.mat.meta
  37. 311
      Assets/TestScenes/HDTest/Material/HDRenderLoopMaterials/test-transparent.mat
  38. 8
      Assets/TestScenes/HDTest/Material/HDRenderLoopMaterials/test-transparent.mat.meta
  39. 311
      Assets/TestScenes/HDTest/Material/HDRenderLoopMaterials/test-twosidedLighting.mat
  40. 8
      Assets/TestScenes/HDTest/Material/HDRenderLoopMaterials/test-twosidedLighting.mat.meta
  41. 43
      Assets/Editor/Tests/RenderloopTests/CullResultsTest.cs
  42. 12
      Assets/Editor/Tests/RenderloopTests/CullResultsTest.cs.meta
  43. 59
      Assets/Editor/Tests/RenderloopTests/RenderloopTestFixture.cs
  44. 12
      Assets/Editor/Tests/RenderloopTests/RenderloopTestFixture.cs.meta
  45. 29
      Assets/ScriptableRenderLoop/Tests/RenderLoopWrapper.cs
  46. 12
      Assets/ScriptableRenderLoop/Tests/RenderLoopWrapper.cs.meta
  47. 9
      Assets/TestScenes/HDTest/Leaf/GroundLeaf.meta
  48. 249
      Assets/TestScenes/HDTest/Leaf/GroundLeaf/GroundLeaf.FBX
  49. 78
      Assets/TestScenes/HDTest/Leaf/GroundLeaf/GroundLeaf.FBX.meta
  50. 57
      Assets/TestScenes/HDTest/Leaf/GroundLeaf/GroundLeaf_Albedo.tga.meta
  51. 57
      Assets/TestScenes/HDTest/Leaf/GroundLeaf/GroundLeaf_Normal.tga.meta
  52. 57
      Assets/TestScenes/HDTest/Leaf/GroundLeaf/GroundLeaf_Roughness.tga.meta
  53. 9
      Assets/TestScenes/HDTest/Leaf/GroundLeaf/Materials.meta
  54. 236
      Assets/TestScenes/HDTest/Leaf/GroundLeaf/Materials/GroundLeaf_Albedo.mat
  55. 8
      Assets/TestScenes/HDTest/Leaf/GroundLeaf/Materials/GroundLeaf_Albedo.mat.meta
  56. 28
      Assets/ScriptableRenderLoop/HDRenderLoop/Shaders/Material/CommonMaterial.hlsl
  57. 8
      Assets/ScriptableRenderLoop/HDRenderLoop/Shaders/Material/CommonMaterial.hlsl.meta
  58. 42
      Assets/ScriptableRenderLoop/common/ShaderBase.cs
  59. 12
      Assets/ScriptableRenderLoop/common/ShaderBase.cs.meta

24
Assets/Editor/Tests/ShaderGeneratorTests/ShaderGeneratorTests.cs


return foundError;
}
[Test]
public void Fail_NestedWithNonPrimitiveType()
[Test(Description = "Disallow non-primitive types in nested structs")]
public void Fail_NestedWithNonPrimitiveType()
{
string source;
List<string> errors;

Assert.IsTrue(HasErrorString(errors, "contains a non-primitive field type"));
}
[Test]
public void Fail_UnsupportedPrimitiveType()
[Test(Description = "Check for unsupported types in primitive structs")]
public void Fail_UnsupportedPrimitiveType()
{
string source;
List<string> errors;

Assert.IsTrue(HasErrorString(errors, "contains an unsupported field type"));
}
[Test]
[Test(Description = "Disallow mixed types in nested structs")]
public void Fail_MixedTypesInNestedStruct()
{
string source;

Assert.IsTrue(HasErrorString(errors, "contains mixed basic types"));
}
[Test]
public void Fail_TooManyFields()
[Test(Description = "Disallow more than 16 bytes worth of fields in nested structs")]
public void Fail_TooManyFields()
bool success = CSharpToHLSL.GenerateHLSL(typeof(FailureTypes.TooManyFields), new GenerateHLSL(PackingRules.Aggressive), out source, out errors);
bool success = CSharpToHLSL.GenerateHLSL(typeof(FailureTypes.TooManyFields), new GenerateHLSL(PackingRules.Exact), out source, out errors);
[Test]
public void Fail_MergeIncompatibleTypes()
[Test(Description = "Disallow merging incompatible types when doing aggressive packing")]
public void Fail_MergeIncompatibleTypes()
{
string source;
List<string> errors;

Assert.IsTrue(HasErrorString(errors, "incompatible types"));
}
[Test]
public void Fail_MergeCrossBoundary()
[Test(Description = "Disallow placing fields across register boundaries when merging")]
public void Fail_MergeCrossBoundary()
{
string source;
List<string> errors;

15
Assets/ScriptableRenderLoop/HDRenderLoop/HDRenderLoop.cs


sRGBWrites[index] = inSRGBWrite;
}
public void InitGBuffers(CommandBuffer cmd)
public void InitGBuffers(int width, int height, CommandBuffer cmd)
/* RTs[index] = */ cmd.GetTemporaryRT(IDs[index], -1, -1, 0, FilterMode.Point, formats[index], sRGBWrites[index]);
/* RTs[index] = */ cmd.GetTemporaryRT(IDs[index], width, height, 0, FilterMode.Point, formats[index], sRGBWrites[index]);
}
}

// Also we manage ourself the HDR format, here allocating fp16 directly.
// With scriptable render loop we can allocate temporary RT in a command buffer, they will not be release with ExecuteCommandBuffer
// These temporary surface are release automatically at the end of the scriptable renderloop if not release explicitly
cmd.GetTemporaryRT(s_CameraColorBuffer, -1, -1, 0, FilterMode.Point, RenderTextureFormat.ARGBHalf, RenderTextureReadWrite.Default);
cmd.GetTemporaryRT(s_CameraDepthBuffer, -1, -1, 24, FilterMode.Point, RenderTextureFormat.Depth);
gbufferManager.InitGBuffers(cmd);
int w = camera.pixelWidth;
int h = camera.pixelHeight;
cmd.GetTemporaryRT(s_CameraColorBuffer, w, h, 0, FilterMode.Point, RenderTextureFormat.ARGBHalf, RenderTextureReadWrite.Default);
cmd.GetTemporaryRT(s_CameraDepthBuffer, w, h, 24, FilterMode.Point, RenderTextureFormat.Depth);
gbufferManager.InitGBuffers(w, h, cmd);
cmd.SetRenderTarget(new RenderTargetIdentifier(s_CameraColorBuffer), new RenderTargetIdentifier(s_CameraDepthBuffer));
cmd.ClearRenderTarget(true, false, new Color(0, 0, 0, 0));

float lightColorG = light.light.intensity * Mathf.GammaToLinearSpace(light.light.color.g);
float lightColorB = light.light.intensity * Mathf.GammaToLinearSpace(light.light.color.b);
l.color = new Vec3(lightColorR, lightColorG, lightColorB);
l.color.Set(lightColorR, lightColorG, lightColorB);
// Light direction is opposite to the forward direction
l.forward = -light.light.transform.forward;

42
Assets/ScriptableRenderLoop/HDRenderLoop/Shaders/DisneyGGX.shader


// Following options are for the GUI inspector and different from the input parameters above
// These option below will cause different compilation flag.
[ToggleOff] _DistortionOnly("Distortion Only", Float) = 0.0
[ToggleOff] _DistortionDepthTest("Distortion Only", Float) = 0.0
[ToggleOff] _AlphaCutoffEnable("Alpha Cutoff Enable", Float) = 0.0
_AlphaCutoff("Alpha Cutoff", Range(0.0, 1.0)) = 0.5

[Enum(Mask Alpha, 0, BaseColor Alpha, 1)] _SmoothnessTextureChannel("Smoothness texture channel", Float) = 1
[Enum(Use Emissive Color, 0, Use Emissive Mask, 1)] _EmissiveColorMode("Emissive color mode", Float) = 1
[Enum(None, 0, DoubleSided, 1, DoubleSidedLigthingFlip, 2, DoubleSidedLigthingMirror, 3)] _DoubleSidedMode("Double sided mode", Float) = 1
[Enum(None, 0, DoubleSided, 1, DoubleSidedLigthingFlip, 2, DoubleSidedLigthingMirror, 3)] _DoubleSidedMode("Double sided mode", Float) = 0
#pragma shader_feature _DOUBLESIDED_LIGHTING_FLIP _DOUBLESIDED_LIGHTING_MIRROR
#pragma shader_feature _ _DOUBLESIDED_LIGHTING_FLIP _DOUBLESIDED_LIGHTING_MIRROR
#pragma shader_feature _NORMALMAP
#pragma shader_feature _NORMALMAP_TANGENT_SPACE
#pragma shader_feature _MASKMAP

#pragma vertex VertDefault
#pragma fragment FragForward
#include "TemplateDisneyGGX.hlsl"
#include "TemplateDisneyGGX.hlsl"
#if SHADER_STAGE_FRAGMENT
float4 FragForward(PackedVaryings packedInput) : SV_Target
{

SurfaceData surfaceData = GetSurfaceData(input);
SurfaceData surfaceData;
BuiltinData builtinData;
GetSurfaceAndBuiltinData(input, surfaceData, builtinData);
BSDFData bsdfData = ConvertSurfaceDataToBSDFData(surfaceData);

return float4(diffuseLighting.rgb + specularLighting.rgb, surfaceData.opacity);
diffuseLighting.rgb += GetBakedDiffuseLigthing(surfaceData, builtinData);
return float4(diffuseLighting.rgb + specularLighting.rgb, builtinData.opacity);
#endif
ENDHLSL
}

Name "GBuffer" // Name is not used
Tags { "LightMode" = "GBuffer" } // This will be only for opaque object based on the RenderQueue index
Cull [_CullMode]
Cull [_CullMode]
HLSLPROGRAM
#pragma target 5.0

#pragma fragment FragDeferred
#include "TemplateDisneyGGX.hlsl"
#if SHADER_STAGE_FRAGMENT
#ifdef VELOCITY_IN_GBUFFER
, OUTPUT_GBUFFER_VELOCITY(outGBuffer)
#endif
, OUTPUT_GBUFFER_BAKE_LIGHTING(outGBuffer)
SurfaceData surfaceData = GetSurfaceData(input);
SurfaceData surfaceData;
BuiltinData builtinData;
GetSurfaceAndBuiltinData(input, surfaceData, builtinData);
#ifdef VELOCITY_IN_GBUFFER
ENCODE_VELOCITY_INTO_GBUFFER(builtinData.velocity, outGBuffer);
#endif
ENCODE_BAKE_LIGHTING_INTO_GBUFFER(GetBakedDiffuseLigthing(surfaceData, builtinData), outGBuffer);
#endif
ENDHLSL
}

42
Assets/ScriptableRenderLoop/HDRenderLoop/Shaders/LightDefinition.cs


// Note: This file is included both in C# code and in hlsl code, avoiding duplication
using UnityEngine;
#if !__HLSL
#endif
// These structures share between C# and hlsl need to be align on float4, so we pad them.
struct PunctualLightData
// These structures share between C# and hlsl need to be align on float4, so we pad them.
[GenerateHLSL]
public struct PunctualLightData
public Vec3 positionWS;
public Vector3 positionWS;
public Vec3 color;
public Vector3 color;
public Vec3 forward;
public Vector3 forward;
public Vec3 up;
public Vector3 up;
public Vec3 right;
public Vector3 right;
public Vec2 unused2;
public Vector2 unused2;
struct AreaLightData
[GenerateHLSL]
public struct AreaLightData
public Vec3 positionWS;
public Vector3 positionWS;
struct EnvLightData
[GenerateHLSL]
public struct EnvLightData
public Vec3 positionWS;
public Vector3 positionWS;
struct PlanarLightData
[GenerateHLSL]
public struct PlanarLightData
public Vec3 positionWS;
public Vector3 positionWS;
#if !__HLSL
#endif

7
Assets/ScriptableRenderLoop/HDRenderLoop/Shaders/Lighting/LightingDeferred.shader


#pragma fragment FragDeferred
// CAUTION: In case deferred lighting need to support various lighting model statically, we will require to do multicompile with different define like UNITY_MATERIAL_DISNEYGXX
#define UNITY_MATERIAL_DISNEYGXX // Need to be define before including Material.hlsl
#define UNITY_MATERIAL_DISNEYGGX // Need to be define before including Material.hlsl
DECLARE_GBUFFER_BAKE_LIGHTING(_CameraGBufferTexture);
Texture2D _CameraDepthTexture;
float4 _ScreenSize;

float4 diffuseLighting;
float4 specularLighting;
ForwardLighting(V, positionWS, bsdfData, diffuseLighting, specularLighting);
FETCH_BAKE_LIGHTING_GBUFFER(gbuffer, _CameraGBufferTexture, coord.unPositionSS);
diffuseLighting.rgb += DECODE_BAKE_LIGHTING_FROM_GBUFFER(gbuffer);
return float4(diffuseLighting.rgb + specularLighting.rgb, 1.0);
}

3
Assets/ScriptableRenderLoop/HDRenderLoop/Shaders/Lighting/LightingForward.hlsl


specularLighting += localSpecularLighting;
}
*/
// Add GI
diffuseLighting.rgb += bsdfData.diffuseLightingAndEmissive;
}
#endif // UNITY_LIGHTING_FORWARD_INCLUDED

114
Assets/ScriptableRenderLoop/HDRenderLoop/Shaders/Material/DisneyGGX.hlsl


// Main structure that store the user data (i.e user input of master node in material graph)
struct SurfaceData
{
// TODO: define what is the best parametrization for artsits, seems that metal smoothness is the winner, but would like at add back a specular parameter.
// Bonus, if we store as specular color we can define a liner specular 0..1 mapping 2% to 20%
float3 specularColor; // Should be YCbCr but need to validate that it is fine first! MEan have reflection probe
float3 specularColor;
float specularOcclusion;
float3 normalWS;

// TODO: create a system surfaceData for thing like that + Transparent
// As we collect some lighting information (Lightmap, lightprobe/proxy volume)
// and emissive ahead (i.e in Gbuffer pass when doing deferred), we need to
// to have them in the SurfaceData structure.
float3 diffuseLighting;
float3 emissiveColor; // Linear space
float emissiveIntensity;
// MaterialID SSS - When enable, we only need one channel for specColor, so one is free to store information.
float subSurfaceRadius;
// float thickness;

// float coatCoverage;
// float coatRoughness;
// Distortion
// float2 distortionVector;
// float distortionBlur; // Define the mipmap level to use
// float2 velocityVector;
float opacity; // Not store, use for blending
// float coatRoughness;
};
struct BSDFData

float3 fresnel0; // Should be YCbCr but need to validate that it is fine first! MEan have reflection probe
float3 fresnel0;
float specularOcclusion;
//float matData1;

float roughness;
// System
float3 diffuseLightingAndEmissive;
// conversion function for forward and deferred
// conversion function for forward
BSDFData ConvertSurfaceDataToBSDFData(SurfaceData data)
BSDFData ConvertSurfaceDataToBSDFData(SurfaceData input)
output.diffuseColor = data.diffuseColor;
output.matData0 = data.subSurfaceRadius; // TEMP
output.diffuseColor = input.diffuseColor;
output.matData0 = input.subSurfaceRadius; // TEMP
output.fresnel0 = data.specularColor;
output.specularOcclusion = data.specularOcclusion;
//output.matData1 = data.matData1;
output.fresnel0 = input.specularColor;
output.specularOcclusion = input.specularOcclusion;
//output.matData1 = input.matData1;
output.normalWS = data.normalWS;
output.perceptualRoughness = PerceptualSmoothnessToPerceptualRoughness(data.perceptualSmoothness);
output.materialId = data.materialId;
output.normalWS = input.normalWS;
output.perceptualRoughness = PerceptualSmoothnessToPerceptualRoughness(input.perceptualSmoothness);
output.materialId = input.materialId;
output.diffuseLightingAndEmissive = data.diffuseLighting * data.ambientOcclusion * data.diffuseColor + data.emissiveColor * data.emissiveIntensity;
// Packing function specific to this surfaceData
//-----------------------------------------------------------------------------
// Packing helper functions specific to this surfaceData
//-----------------------------------------------------------------------------
float PackMaterialId(int materialId)
{
return float(materialId) / 3.0;

return int(round(f * 3.0));
}
#define GBUFFER_COUNT 4
//-----------------------------------------------------------------------------
// bake lighting function
//-----------------------------------------------------------------------------
// This will encode UnityStandardData into GBuffer
void EncodeIntoGBuffer(SurfaceData data, out float4 outGBuffer0, out float4 outGBuffer1, out float4 outGBuffer2, out float4 outGBuffer3)
float3 GetBakedDiffuseLigthing(SurfaceData surfaceData, BuiltinData builtinData)
{
return builtinData.bakeDiffuseLighting * surfaceData.ambientOcclusion * surfaceData.diffuseColor + builtinData.emissiveColor * builtinData.emissiveIntensity;
}
//-----------------------------------------------------------------------------
// conversion function for deferred
//-----------------------------------------------------------------------------
#define GBUFFER_MATERIAL_COUNT 3
// Encode SurfaceData (BSDF parameters) into GBuffer
void EncodeIntoGBuffer( SurfaceData surfaceData,
out float4 outGBuffer0,
out float4 outGBuffer1,
out float4 outGBuffer2)
outGBuffer0 = float4(data.diffuseColor, data.subSurfaceRadius);
outGBuffer0 = float4(surfaceData.diffuseColor, surfaceData.subSurfaceRadius);
outGBuffer1 = float4(data.specularColor, data.specularOcclusion /*, data.matData1 */);
outGBuffer1 = float4(surfaceData.specularColor, surfaceData.specularOcclusion /*, surfaceData.matData1 */);
float2 octNormal = PackNormalOctEncode(data.normalWS);
float2 octNormal = PackNormalOctEncode(surfaceData.normalWS);
outGBuffer2 = float4(octNormal * 0.5 + 0.5, PerceptualSmoothnessToPerceptualRoughness(data.perceptualSmoothness), PackMaterialId(data.materialId));
// RT3 - 11:11:10 float
outGBuffer3 = float4(data.diffuseLighting * data.ambientOcclusion * data.diffuseColor + data.emissiveColor * data.emissiveIntensity, 0.0f);
outGBuffer2 = float4(octNormal * 0.5 + 0.5, PerceptualSmoothnessToPerceptualRoughness(surfaceData.perceptualSmoothness), PackMaterialId(surfaceData.materialId));
// This decode the Gbuffer in a BSDFData struct
BSDFData DecodeFromGBuffer(float4 inGBuffer0, float4 inGBuffer1, float4 inGBuffer2, float4 inGBuffer3)
BSDFData DecodeFromGBuffer( float4 inGBuffer0,
float4 inGBuffer1,
float4 inGBuffer2)
{
BSDFData bsdfData;
bsdfData.diffuseColor = inGBuffer0.rgb;

bsdfData.roughness = PerceptualRoughnessToRoughness(bsdfData.perceptualRoughness);
bsdfData.diffuseLightingAndEmissive = inGBuffer3.rgb;
return bsdfData;
}

void EvaluateBSDF_Punctual( float3 V, float3 positionWS, PunctualLightData light, BSDFData bsdfData,
void EvaluateBSDF_Punctual( float3 V, float3 positionWS, PunctualLightData lightData, BSDFData bsdfData,
out float4 diffuseLighting,
out float4 specularLighting)
{

// For point light and directional GetAngleAttenuation() return 1
float3 unL = light.positionWS - positionWS * light.useDistanceAttenuation;
float3 unL = lightData.positionWS - positionWS * lightData.useDistanceAttenuation;
float attenuation = GetDistanceAttenuation(unL, light.invSqrAttenuationRadius);
attenuation *= GetAngleAttenuation(L, light.forward, light.angleScale, light.angleOffset);
float attenuation = GetDistanceAttenuation(unL, lightData.invSqrAttenuationRadius);
attenuation *= GetAngleAttenuation(L, lightData.forward, lightData.angleScale, lightData.angleOffset);
float illuminance = saturate(dot(bsdfData.normalWS, L)) * attenuation;
diffuseLighting = float4(0.0, 0.0, 0.0, 1.0);

float Vis = V_SmithJointGGX(NdotL, NdotV, bsdfData.roughness);
float D = D_GGX(NdotH, bsdfData.roughness);
specularLighting.rgb = F * Vis * D;
float disneyDiffuse = DisneyDiffuse(NdotV, NdotL, LdotH, bsdfData.perceptualRoughness);
diffuseLighting.rgb = bsdfData.diffuseColor * disneyDiffuse;
#ifdef DIFFUSE_LAMBERT_BRDF
float diffuseTerm = Lambert();
#else
float diffuseTerm = DisneyDiffuse(NdotV, NdotL, LdotH, bsdfData.perceptualRoughness);
#endif
diffuseLighting.rgb = bsdfData.diffuseColor * diffuseTerm;
diffuseLighting.rgb *= light.color * illuminance;
specularLighting.rgb *= light.color * illuminance;
diffuseLighting.rgb *= lightData.color * illuminance;
specularLighting.rgb *= lightData.color * illuminance;
}
}

153
Assets/ScriptableRenderLoop/HDRenderLoop/Shaders/Material/Material.hlsl


#include "Assets/ScriptableRenderLoop/ShaderLibrary/BSDF.hlsl"
#include "Assets/ScriptableRenderLoop/ShaderLibrary/CommonLighting.hlsl"
#include "Assets/ScriptableRenderLoop/HDRenderLoop/Shaders/LightDefinition.cs"
#include "CommonMaterial.hlsl"
#include "Assets/ScriptableRenderLoop/HDRenderLoop/Shaders/Shaderconfig.cs"
#include "Assets/ScriptableRenderLoop/HDRenderLoop/Shaders/LightDefinition.cs.hlsl"
//-----------------------------------------------------------------------------
// Parametrization function helpers
//-----------------------------------------------------------------------------
float PerceptualRoughnessToRoughness(float perceptualRoughness)
{
return perceptualRoughness * perceptualRoughness;
}
float RoughnessToPerceptualRoughness(float roughness)
{
return sqrt(roughness);
}
float PerceptualSmoothnessToRoughness(float perceptualSmoothness)
{
return (1 - perceptualSmoothness) * (1 - perceptualSmoothness);
}
float PerceptualSmoothnessToPerceptualRoughness(float perceptualSmoothness)
{
return (1 - perceptualSmoothness);
}
// Encode/Decode velocity in a buffer (either forward of deferred)
// Design note: We assume that VelocityVector fit into a single buffer (i.e not spread on several buffer)
void EncodeVelocity(float2 velocity, out float4 outBuffer)
{
// RT - 16:16 float
outBuffer = float4(velocity.xy, 0.0, 0.0);
}
float2 DecodeVelocity(float4 inBuffer)
{
return float2(inBuffer.xy);
}
// Encode/Decode into GBuffer - This is share so others material can use it.
// Design note: We assume that BakeDiffuseLighting and emissive fit into a single buffer (i.e not spread on several buffer)
void EncodeBakedDiffuseLigthingIntoGBuffer(float3 bakeDiffuseLighting, out float4 outBuffer)
{
// RT - 11:11:10f
outBuffer = float4(bakeDiffuseLighting.xyz, 0.0);
}
float3 DecodeBakedDiffuseLigthingFromGBuffer(float4 inBuffer)
{
return float3(inBuffer.xyz);
}
//-----------------------------------------------------------------------------
// BuiltinData
//-----------------------------------------------------------------------------
#include "BuiltinData.hlsl"
//-----------------------------------------------------------------------------
// SurfaceData
//-----------------------------------------------------------------------------
#ifdef UNITY_MATERIAL_DISNEYGXX
#ifdef UNITY_MATERIAL_DISNEYGGX
#elif defined(UNITY_MATERIAL_UNLIT)
#include "Unlit.hlsl"
#endif
//-----------------------------------------------------------------------------

#ifdef GBUFFER_COUNT
#if GBUFFER_COUNT == 3
#ifdef GBUFFER_MATERIAL_COUNT
#if GBUFFER_MATERIAL_COUNT == 3
#define OUTPUT_GBUFFER(NAME) \
out float4 MERGE_NAME(NAME, 0) : SV_Target0, \

#define ENCODE_INTO_GBUFFER(SURFACE_DATA, NAME) EncodeIntoGBuffer(SURFACE_DATA, MERGE_NAME(NAME,0), MERGE_NAME(NAME,1), MERGE_NAME(NAME,2))
#define DECODE_FROM_GBUFFER(NAME) DecodeFromGBuffer(MERGE_NAME(NAME,0), MERGE_NAME(NAME,1), MERGE_NAME(NAME,2))
#elif GBUFFER_COUNT == 4
#ifdef VELOCITY_IN_GBUFFER
#define GBUFFER_VELOCITY_NAME(NAME) MERGE_NAME(NAME, 3)
#define GBUFFER_VELOCITY_TARGET(TARGET) MERGE_NAME(TARGET, 3)
#define GBUFFER_BAKE_LIGHTING_NAME(NAME) MERGE_NAME(NAME, 4)
#define GBUFFER_BAKE_LIGHTING_TARGET(TARGET) MERGE_NAME(TARGET, 4)
#else
#define GBUFFER_BAKE_LIGHTING_NAME(NAME) MERGE_NAME(NAME, 3)
#define GBUFFER_BAKE_LIGHTING_TARGET(TARGET) MERGE_NAME(TARGET, 3)
#endif
#elif GBUFFER_MATERIAL_COUNT == 4
#define OUTPUT_GBUFFER(NAME) \
out float4 MERGE_NAME(NAME, 0) : SV_Target0, \

#define ENCODE_INTO_GBUFFER(SURFACE_DATA, NAME) EncodeIntoGBuffer(SURFACE_DATA, MERGE_NAME(NAME, 0), MERGE_NAME(NAME, 1), MERGE_NAME(NAME, 2), MERGE_NAME(NAME, 3))
#define DECODE_FROM_GBUFFER(NAME) DecodeFromGBuffer(MERGE_NAME(NAME, 0), MERGE_NAME(NAME, 1), MERGE_NAME(NAME, 2), MERGE_NAME(NAME, 3))
#ifdef VELOCITY_IN_GBUFFER
#define GBUFFER_VELOCITY_NAME(NAME) MERGE_NAME(NAME, 4)
#define GBUFFER_VELOCITY_TARGET(TARGET) MERGE_NAME(TARGET, 4)
#define GBUFFER_BAKE_LIGHTING_NAME(NAME) MERGE_NAME(NAME, 5)
#define GBUFFER_BAKE_LIGHTING_TARGET(TARGET) MERGE_NAME(TARGET, 5)
#else
#define GBUFFER_BAKE_LIGHTING_NAME(NAME) MERGE_NAME(NAME, 4)
#define GBUFFER_BAKE_LIGHTING_TARGET(TARGET) MERGE_NAME(TARGET, 4)
#endif // #ifdef GBUFFER_COUNT
#elif GBUFFER_MATERIAL_COUNT == 5
#define OUTPUT_GBUFFER(NAME) \
out float4 MERGE_NAME(NAME, 0) : SV_Target0, \
out float4 MERGE_NAME(NAME, 1) : SV_Target1, \
out float4 MERGE_NAME(NAME, 2) : SV_Target2, \
out float4 MERGE_NAME(NAME, 3) : SV_Target3, \
out float4 MERGE_NAME(NAME, 4) : SV_Target4
#define DECLARE_GBUFFER_TEXTURE(NAME) \
Texture2D MERGE_NAME(NAME, 0); \
Texture2D MERGE_NAME(NAME, 1); \
Texture2D MERGE_NAME(NAME, 2); \
Texture2D MERGE_NAME(NAME, 3); \
Texture2D MERGE_NAME(NAME, 4);
#define FETCH_GBUFFER(NAME, TEX, UV) \
float4 MERGE_NAME(NAME, 0) = MERGE_NAME(TEX, 0).Load(uint3(UV, 0)); \
float4 MERGE_NAME(NAME, 1) = MERGE_NAME(TEX, 1).Load(uint3(UV, 0)); \
float4 MERGE_NAME(NAME, 2) = MERGE_NAME(TEX, 2).Load(uint3(UV, 0)); \
float4 MERGE_NAME(NAME, 3) = MERGE_NAME(TEX, 3).Load(uint3(UV, 0)); \
float4 MERGE_NAME(NAME, 4) = MERGE_NAME(TEX, 4).Load(uint3(UV, 0));
#define ENCODE_INTO_GBUFFER(SURFACE_DATA, NAME) EncodeIntoGBuffer(SURFACE_DATA, MERGE_NAME(NAME, 0), MERGE_NAME(NAME, 1), MERGE_NAME(NAME, 2), MERGE_NAME(NAME, 3), MERGE_NAME(NAME, 4))
#define DECODE_FROM_GBUFFER(NAME) DecodeFromGBuffer(MERGE_NAME(NAME, 0), MERGE_NAME(NAME, 1), MERGE_NAME(NAME, 2), MERGE_NAME(NAME, 3), MERGE_NAME(NAME, 4))
#ifdef VELOCITY_IN_GBUFFER
#define GBUFFER_VELOCITY_NAME(NAME) MERGE_NAME(NAME, 5)
#define GBUFFER_VELOCITY_TARGET(TARGET) MERGE_NAME(TARGET, 5)
#define GBUFFER_BAKE_LIGHTING_NAME(NAME) MERGE_NAME(NAME, 6)
#define GBUFFER_BAKE_LIGHTING_TARGET(TARGET) MERGE_NAME(TARGET, 6)
#else
#define GBUFFER_BAKE_LIGHTING_NAME(NAME) MERGE_NAME(NAME, 5)
#define GBUFFER_BAKE_LIGHTING_TARGET(TARGET) MERGE_NAME(TARGET, 5)
#endif
#endif // #if GBUFFER_MATERIAL_COUNT == 3
// Generic whatever the number of GBuffer
#ifdef VELOCITY_IN_GBUFFER
#define OUTPUT_GBUFFER_VELOCITY(NAME) out float4 GBUFFER_VELOCITY_NAME(NAME) : GBUFFER_VELOCITY_TARGET(SV_Target)
#define DECLARE_GBUFFER_VELOCITY_TEXTURE(NAME) Texture2D GBUFFER_VELOCITY_NAME(NAME);
#define ENCODE_VELOCITY_INTO_GBUFFER(VELOCITY, NAME) EncodeVelocity(VELOCITY, GBUFFER_VELOCITY_NAME(NAME))
#endif
#define OUTPUT_GBUFFER_BAKE_LIGHTING(NAME) out float4 GBUFFER_BAKE_LIGHTING_NAME(NAME) : GBUFFER_BAKE_LIGHTING_TARGET(SV_Target)
#define DECLARE_GBUFFER_BAKE_LIGHTING(NAME) Texture2D GBUFFER_BAKE_LIGHTING_NAME(NAME);
#define ENCODE_BAKE_LIGHTING_INTO_GBUFFER(BAKE_DIFFUSE_LIGHTING, NAME) EncodeBakedDiffuseLigthingIntoGBuffer(BAKE_DIFFUSE_LIGHTING, GBUFFER_BAKE_LIGHTING_NAME(NAME))
#define FETCH_BAKE_LIGHTING_GBUFFER(NAME, TEX, UV) float4 GBUFFER_BAKE_LIGHTING_NAME(NAME) = GBUFFER_BAKE_LIGHTING_NAME(TEX).Load(uint3(UV, 0));
#define DECODE_BAKE_LIGHTING_FROM_GBUFFER(NAME) DecodeBakedDiffuseLigthingFromGBuffer(GBUFFER_BAKE_LIGHTING_NAME(NAME))
#endif // #ifdef GBUFFER_MATERIAL_COUNT
// Decode velocity need to be accessible in both forward and deferred
#ifdef VELOCITY_IN_GBUFFER
#define DECODE_VELOCITY_BUFFER(NAME) DecodeVelocity(GBUFFER_VELOCITY_NAME(NAME))
#else
#define DECODE_VELOCITY_BUFFER(NAME) DecodeVelocity(GBUFFER_VELOCITY_NAME(NAME))
#endif
#endif // UNITY_MATERIAL_INCLUDED

117
Assets/ScriptableRenderLoop/HDRenderLoop/Shaders/TemplateDisneyGGX.hlsl


// No guard header!
#define UNITY_MATERIAL_DISNEYGXX // Need to be define before including Material.hlsl
#define UNITY_MATERIAL_DISNEYGGX // Need to be define before including Material.hlsl
#include "Lighting/Lighting.hlsl" // This include Material.hlsl
#include "ShaderVariables.hlsl"

float2 texCoord0;
float4 tangentToWorld[3]; // [3x3:tangentToWorld | 1x3:viewDirForParallax]
/*
*/
};
struct PackedVaryings

/*
*/
};
// Function to pack data to use as few interpolator as possible, the ShaderGraph should generate these functions

output.tangentToWorld[1] = input.interpolators[2];
output.tangentToWorld[2] = input.interpolators[3];
/*
#if defined(_DOUBLESIDED_LIGHTING_FLIP) || defined(_DOUBLESIDED_LIGHTING_MIRROR)
#ifdef SHADER_STAGE_FRAGMENT
#if defined(_DOUBLESIDED_LIGHTING_FLIP) || defined(_DOUBLESIDED_LIGHTING_MIRROR)
#endif
*/
return output;
}

output.tangentToWorld[1].w = 0;
output.tangentToWorld[2].w = 0;
/*
#if defined(_DOUBLESIDED_LIGHTING_FLIP) || defined(_DOUBLESIDED_LIGHTING_MIRROR)
#ifdef SHADER_STAGE_FRAGMENT
#if defined(_DOUBLESIDED_LIGHTING_FLIP) || defined(_DOUBLESIDED_LIGHTING_MIRROR)
#endif
*/
//-------------------------------------------------------------------------------------
// Fill SurfaceData/Lighting data function

return normalize(mul(normalTS, float3x3(tangentToWorld[0].xyz, tangentToWorld[1].xyz, tangentToWorld[2].xyz)));
}
SurfaceData GetSurfaceData(Varyings input)
#if SHADER_STAGE_FRAGMENT
void GetSurfaceAndBuiltinData(Varyings input, out SurfaceData surfaceData, out BuiltinData builtinData)
// to manage the mettalic/specular representation we should have a neested master node instead of doing a new lighting model
// this is simulated here by doing the conversion on the inputs data.
SurfaceData data;
float3 baseColor = tex2D(_BaseColorMap, input.texCoord0).rgb * _BaseColor.rgb;
#ifdef _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
float alpha = _BaseColor.a;

clip(alpha - _Cutoff);
#endif
data.opacity = alpha;
builtinData.opacity = alpha;
data.ambientOcclusion = tex2D(_MaskMap, input.texCoord0).g;
surfaceData.ambientOcclusion = tex2D(_MaskMap, input.texCoord0).g;
data.ambientOcclusion = 1.0;
surfaceData.ambientOcclusion = 1.0;
data.diffuseColor = baseColor * (1.0 - mettalic);
surfaceData.diffuseColor = baseColor * (1.0 - mettalic);
data.specularColor = lerp(float3(f0_dieletric, f0_dieletric, f0_dieletric), baseColor, mettalic);
surfaceData.specularColor = lerp(float3(f0_dieletric, f0_dieletric, f0_dieletric), baseColor, mettalic);
data.perceptualSmoothness = tex2D(_BaseColorMap, input.texCoord0).a;
surfaceData.perceptualSmoothness = tex2D(_BaseColorMap, input.texCoord0).a;
data.perceptualSmoothness = tex2D(_MaskMap, input.texCoord0).a;
surfaceData.perceptualSmoothness = tex2D(_MaskMap, input.texCoord0).a;
data.perceptualSmoothness = 1.0;
surfaceData.perceptualSmoothness = 1.0;
data.perceptualSmoothness *= _Smoothness;
surfaceData.perceptualSmoothness *= _Smoothness;
data.specularOcclusion = tex2D(_SpecularOcclusionMap, input.texCoord0).a;
surfaceData.specularOcclusion = tex2D(_SpecularOcclusionMap, input.texCoord0).a;
//data.specularOcclusion = saturate(1.0 + horizonFade * dot(r, input.tangentToWorld[2].xyz);
//surfaceData.specularOcclusion = saturate(1.0 + horizonFade * dot(r, input.tangentToWorld[2].xyz);
//data.specularOcclusion *= data.specularOcclusion;
data.specularOcclusion = 1.0;
//surfaceData.specularOcclusion *= surfaceData.specularOcclusion;
surfaceData.specularOcclusion = 1.0;
#endif
// TODO: think about using BC5

#ifdef _NORMALMAP_TANGENT_SPACE
float3 normalTS = UnpackNormalDXT5nm(tex2D(_NormalMap, input.texCoord0));
data.normalWS = TransformTangentToWorld(normalTS, input.tangentToWorld);
surfaceData.normalWS = TransformTangentToWorld(normalTS, input.tangentToWorld);
data.normalWS = tex2D(_NormalMap, input.texCoord0).rgb;
surfaceData.normalWS = tex2D(_NormalMap, input.texCoord0).rgb;
data.normalWS = vertexNormalWS;
surfaceData.normalWS = vertexNormalWS;
/*
float3 oppositeNormalWS = -data.normalWS;
float3 oppositeNormalWS = -surfaceData.normalWS;
float3 oppositeNormalWS = reflect(data.normalWS, vertexNormalWS);
float3 oppositeNormalWS = reflect(surfaceData.normalWS, vertexNormalWS);
//data.normalWS = IS_FRONT_VFACE(GetOdddNegativeScale() : -GetOdddNegativeScale()) >= 0.0 ? data.normalWS : oppositeNormalWS;
data.normalWS = IS_FRONT_VFACE(input.cullFace, data.normalWS, -data.normalWS);
// surfaceData.normalWS = IS_FRONT_VFACE((input.cullFace >= 0.0 ? GetOdddNegativeScale() : -GetOdddNegativeScale()) >= 0.0, surfaceData.normalWS, oppositeNormalWS);
surfaceData.normalWS = IS_FRONT_VFACE((input.cullFace >= 0.0 ? GetOdddNegativeScale() : -GetOdddNegativeScale()) >= 0.0, surfaceData.normalWS, oppositeNormalWS);
*/
data.materialId = 0;
// TODO: Sample lightmap/lightprobe/volume proxy
// This should also handle projective lightmap
// Note that data input above can be use to sample into lightmap (like normal)
data.diffuseLighting = tex2D(_DiffuseLightingMap, input.texCoord0).rgb;
// If we chose an emissive color, we have a dedicated texture for it and don't use MaskMap
#ifdef _EMISSIVE_COLOR
data.emissiveColor = tex2D(_EmissiveColorMap, input.texCoord0).rgb * _EmissiveColor;
#elif _MASKMAP // If we have a MaskMap, use emissive slot as a mask on baseColor
data.emissiveColor = data.baseColor * tex2D(_MaskMap, uv).b;
#else
data.emissiveColor = float3(0.0, 0.0, 0.0);
#endif
data.emissiveIntensity = _EmissiveIntensity;
surfaceData.materialId = 0;
data.subSurfaceRadius = 1.0; // tex2D(_SubSurfaceRadiusMap, input.texCoord0).r * _SubSurfaceRadius;
surfaceData.subSurfaceRadius = 1.0; // tex2D(_SubSurfaceRadiusMap, input.texCoord0).r * _SubSurfaceRadius;
// TODO
/*

sampler2D _CoatRoughnessMap;
*/
// TODO: handle alpha for transparency!
// Builtin Data
// TODO: Sample lightmap/lightprobe/volume proxy
// This should also handle projective lightmap
// Note that data input above can be use to sample into lightmap (like normal)
builtinData.bakeDiffuseLighting = tex2D(_DiffuseLightingMap, input.texCoord0).rgb;
// If we chose an emissive color, we have a dedicated texture for it and don't use MaskMap
#ifdef _EMISSIVE_COLOR
builtinData.emissiveColor = tex2D(_EmissiveColorMap, input.texCoord0).rgb * _EmissiveColor;
#elif _MASKMAP // If we have a MaskMap, use emissive slot as a mask on baseColor
builtinData.emissiveColor = baseColor * tex2D(_MaskMap, input.texCoord0).bbb;
#else
builtinData.emissiveColor = float3(0.0, 0.0, 0.0);
#endif
builtinData.emissiveIntensity = _EmissiveIntensity;
return data;
}
builtinData.velocity = float2(0.0, 0.0);
builtinData.distortion = float2(0.0, 0.0);
builtinData.distortionBlur = 0.0;
}
#endif // #if SHADER_STAGE_FRAGMENT

14
Assets/ScriptableRenderLoop/ShaderLibrary/Common.hlsl


#endif
#include "API/Validate.hlsl"
// ----------------------------------------------------------------------------
// Common define allowing to include shared file between C# and hlsl
// ----------------------------------------------------------------------------
#define __HLSL 1
#define public
#define Vec2 float2
#define Vec3 float3
#define Vec4 float4
#define Mat44 float4x4
// ----------------------------------------------------------------------------
// Common math definition and fastmath function
// ----------------------------------------------------------------------------

Coordinate coord;
coord.positionSS = inPositionSS;
// TODO: How to detect automatically that we are a compute shader ?
#if 0
#if SHADER_STAGE_COMPUTE
// In case of compute shader an extra half offset is added to the screenPos to shift the integer position to pixel center.
coord.positionSS.xy += float2(0.5, 0.5);
#endif

4
Assets/ScriptableRenderLoop/common/ShaderBase.h


#define public
#define Vec2 float2
#define Vec3 float3
#define Vec4 float4
#define Mat44 float4x4
#define unistruct cbuffer
#define hbool bool

8
Assets/ScriptableRenderLoop/fptl/FinalPass.shader


fixed4 frag (v2f i) : SV_Target
{
float4 c = tex2D(_MainTex, i.texcoord);
#if defined(UNITY_COLORSPACE_GAMMA)
return c;
#else
return float4(pow(c.xyz,1/2.2), c.w);
#endif
return tex2D(_MainTex, i.texcoord);
}
ENDCG

72
Assets/ScriptableRenderLoop/fptl/FptlLighting.cs


static private ComputeBuffer m_dirLightList;
// clustered light list specific buffers and data begin
const bool gEnableClustered = false;
const bool gUseDepthBuffer = false;//true; // only has an impact when gEnableClustered is true
public bool EnableClustered = false;
const bool gUseDepthBuffer = true;// // only has an impact when EnableClustered is true (requires a depth-prepass)
const int g_iLog2NumClusters = 6; // accepted range is from 0 to 6. NumClusters is 1<<g_iLog2NumClusters
const float m_clustLogBase = 1.02f; // each slice 2% bigger than the previous
float m_clustScale;

if (m_dirLightList != null)
m_dirLightList.Release();
if(gEnableClustered)
if(EnableClustered)
{
if(m_globalLightListAtomic!=null)
m_globalLightListAtomic.Release();

m_BuildPerTileLightListShader.SetBuffer(kGenListPerTileKernel, "g_vBoundsBuffer", m_aabbBoundsBuffer);
m_BuildPerTileLightListShader.SetBuffer(kGenListPerTileKernel, "g_vLightData", m_lightDataBuffer);
if(gEnableClustered)
if(EnableClustered)
{
kGenListPerVoxelKernel = m_BuildPerVoxelLightListShader.FindKernel(gUseDepthBuffer ? "TileLightListGen_DepthRT" : "TileLightListGen_NoDepthRT");
kClearVoxelAtomicKernel = m_BuildPerVoxelLightListShader.FindKernel("ClearAtomic");

ReleaseResolutionDependentBuffers();
m_dirLightList.Release();
if(gEnableClustered)
if(EnableClustered)
static void SetupGBuffer(CommandBuffer cmd)
static void SetupGBuffer(int width, int height, CommandBuffer cmd)
cmd.GetTemporaryRT(kGBufferAlbedo, -1, -1, 0, FilterMode.Point, RenderTextureFormat.DefaultHDR, RenderTextureReadWrite.Default);
cmd.GetTemporaryRT(kGBufferSpecRough, -1, -1, 0, FilterMode.Point, RenderTextureFormat.DefaultHDR, RenderTextureReadWrite.Default);
cmd.GetTemporaryRT(kGBufferNormal, -1, -1, 0, FilterMode.Point, format10, RenderTextureReadWrite.Linear);
cmd.GetTemporaryRT(kGBufferEmission, -1, -1, 0, FilterMode.Point, format10, RenderTextureReadWrite.Linear); //@TODO: HDR
cmd.GetTemporaryRT(kGBufferZ, -1, -1, 24, FilterMode.Point, RenderTextureFormat.Depth);
cmd.GetTemporaryRT(kCameraDepthTexture, -1, -1, 24, FilterMode.Point, RenderTextureFormat.Depth);
cmd.GetTemporaryRT(kGBufferAlbedo, width, height, 0, FilterMode.Point, RenderTextureFormat.DefaultHDR, RenderTextureReadWrite.Default);
cmd.GetTemporaryRT(kGBufferSpecRough, width, height, 0, FilterMode.Point, RenderTextureFormat.DefaultHDR, RenderTextureReadWrite.Default);
cmd.GetTemporaryRT(kGBufferNormal, width, height, 0, FilterMode.Point, format10, RenderTextureReadWrite.Linear);
cmd.GetTemporaryRT(kGBufferEmission, width, height, 0, FilterMode.Point, format10, RenderTextureReadWrite.Linear); //@TODO: HDR
cmd.GetTemporaryRT(kGBufferZ, width, height, 24, FilterMode.Point, RenderTextureFormat.Depth);
cmd.GetTemporaryRT(kCameraDepthTexture, width, height, 24, FilterMode.Point, RenderTextureFormat.Depth);
cmd.GetTemporaryRT(kCameraTarget, -1, -1, 0, FilterMode.Point, RenderTextureFormat.DefaultHDR, RenderTextureReadWrite.Default);
cmd.GetTemporaryRT(kCameraTarget, width, height, 0, FilterMode.Point, RenderTextureFormat.DefaultHDR, RenderTextureReadWrite.Default);
var colorMRTs = new RenderTargetIdentifier[4] { kGBufferAlbedo, kGBufferSpecRough, kGBufferNormal, kGBufferEmission };
cmd.SetRenderTarget(colorMRTs, new RenderTargetIdentifier(kGBufferZ));

// setup GBuffer for rendering
var cmd = new CommandBuffer();
cmd.name = "Create G-Buffer";
SetupGBuffer(cmd);
SetupGBuffer(camera.pixelWidth, camera.pixelHeight, cmd);
loop.ExecuteCommandBuffer(cmd);
cmd.Dispose();

{
var cmd = new CommandBuffer();
if(gEnableClustered)
if(EnableClustered)
{
cmd.SetGlobalFloat("g_fClustScale", m_clustScale);
cmd.SetGlobalFloat("g_fClustBase", m_clustLogBase);

}
}
m_DeferredMaterial.SetBuffer("g_vLightList", gEnableClustered ? m_perVoxelLightLists : lightList);
//m_DeferredMaterial.SetBuffer("g_vLightList", EnableClustered ? m_perVoxelLightLists : lightList);
m_DeferredMaterial.SetBuffer("g_vLightList", lightList);
m_DeferredReflectionMaterial.SetBuffer("g_vLightList", lightList);
m_DeferredMaterial.SetBuffer("g_vLightData", m_lightDataBuffer);

l.vLaxisY = vy;
l.vLaxisZ = vz;
l.vCol = new Vec3(light.finalColor.r, light.finalColor.g, light.finalColor.b);
l.vCol.Set(light.finalColor.r, light.finalColor.g, light.finalColor.b);
l.fLightIntensity = light.light.intensity;
lights.Add(l);

Vector3 lightPos = lightToWorld.GetColumn(3);
boundData[i].vBoxAxisX = new Vec3(1, 0, 0);
boundData[i].vBoxAxisY = new Vec3(0, 1, 0);
boundData[i].vBoxAxisZ = new Vec3(0, 0, 1);
boundData[i].vScaleXY = new Vec2(1.0f, 1.0f);
boundData[i].vBoxAxisX.Set(1, 0, 0);
boundData[i].vBoxAxisY.Set(0, 1, 0);
boundData[i].vBoxAxisZ.Set(0, 0, 1);
boundData[i].vScaleXY.Set(1.0f, 1.0f);
lightData[i].vCol = new Vec3(cl.finalColor.r, cl.finalColor.g, cl.finalColor.b);
lightData[i].vCol.Set(cl.finalColor.r, cl.finalColor.g, cl.finalColor.b);
lightData[i].iSliceIndex = 0;
lightData[i].uLightModel = (uint)LightDefinitions.DIRECT_LIGHT;
lightData[i].uShadowLightIndex = shadowLightIndex;

float fAltDist = Mathf.Sqrt(fAltDy * fAltDy + (bIsCircularSpot ? 1.0f : 2.0f) * fAltDx * fAltDx);
boundData[i].fRadius = fAltDist > (0.5f * range) ? fAltDist : (0.5f * range); // will always pick fAltDist
boundData[i].vScaleXY = bSqueeze ? new Vec2(0.01f, 0.01f) : new Vec2(1.0f, 1.0f);
boundData[i].vScaleXY = bSqueeze ? new Vector2(0.01f, 0.01f) : new Vector2(1.0f, 1.0f);
// fill up ldata
lightData[i].uLightType = (uint)LightDefinitions.SPOT_LIGHT;

}
boundData[i].vCen = worldToView.MultiplyPoint(lightPos);
boundData[i].vBoxAxisX = new Vec3(range, 0, 0);
boundData[i].vBoxAxisY = new Vec3(0, range, 0);
boundData[i].vBoxAxisZ = new Vec3(0, 0, -range); // transform to camera space (becomes a left hand coordinate frame in Unity since Determinant(worldToView)<0)
boundData[i].vScaleXY = new Vec2(1.0f, 1.0f);
boundData[i].vBoxAxisX.Set(range, 0, 0);
boundData[i].vBoxAxisY.Set(0, range, 0);
boundData[i].vBoxAxisZ.Set(0, 0, -range); // transform to camera space (becomes a left hand coordinate frame in Unity since Determinant(worldToView)<0)
boundData[i].vScaleXY.Set(1.0f, 1.0f);
boundData[i].fRadius = range;
// represents a left hand coordinate system in world space since det(worldToView)<0

if (cl.lightType == LightType.Spot || cl.lightType == LightType.Point)
++i;
}
int numLightsOut = i;
// probe.m_BlendDistance
// Vector3f extents = 0.5*Abs(probe.m_BoxSize);

Texture cubemap = rl.texture;
if (cubemap != null) // always a box for now
{
i = numProbesOut + numLights;
i = numProbesOut + numLightsOut;
lightData[i].flags = 0;

Vector3 delta = combinedExtent - e;
lightData[i].vBoxInnerDist = e;
lightData[i].vBoxInvRange = new Vec3(1.0f / delta.x, 1.0f / delta.y, 1.0f / delta.z);
lightData[i].vBoxInvRange.Set(1.0f / delta.x, 1.0f / delta.y, 1.0f / delta.z);
boundData[i].vScaleXY = new Vec2(1.0f, 1.0f);
boundData[i].vScaleXY.Set(1.0f, 1.0f);
boundData[i].fRadius = combinedExtent.magnitude;
// fill up ldata

m_lightDataBuffer.SetData(lightData);
return numLights + numProbesOut;
return numLightsOut + numProbesOut;
}
/* public override void Render(Camera[] cameras, RenderLoop renderLoop)

cmd.SetComputeBufferParam(m_BuildPerTileLightListShader, kGenListPerTileKernel, "g_vLightList", lightList);
cmd.ComputeDispatch(m_BuildPerTileLightListShader, kGenListPerTileKernel, nrTilesX, nrTilesY, 1);
if(gEnableClustered) VoxelLightListGeneration(cmd, camera, numLights, projscr, invProjscr);
if(EnableClustered) VoxelLightListGeneration(cmd, camera, numLights, projscr, invProjscr);
loop.ExecuteCommandBuffer(cmd);
cmd.Dispose();

if (lightList != null)
lightList.Release();
if(gEnableClustered)
if(EnableClustered)
{
if(m_perVoxelLightLists != null)
m_perVoxelLightLists.Release();

lightList = new ComputeBuffer(LightDefinitions.NR_LIGHT_MODELS * nrDWordsPerTileFPTL * nrTiles, sizeof(uint)); // enough list memory for a 4k x 4k display
if(gEnableClustered)
if(EnableClustered)
{
m_perVoxelOffset = new ComputeBuffer(LightDefinitions.NR_LIGHT_MODELS * (1<<g_iLog2NumClusters) * nrTiles, sizeof(uint));
m_perVoxelLightLists = new ComputeBuffer(NumLightIndicesPerClusteredTile() * nrTiles, sizeof(uint));

2
Assets/ScriptableRenderLoop/fptl/Internal-DeferredShading.shader


GetLightCountAndStart(start, numLights, tileIDX, nrTilesX, nrTilesY, linDepth);
float3 c = ExecuteLightList(pixCoord, start, numLights, linDepth);
c = OverlayHeatMap(numLights, c);
//c = OverlayHeatMap(numLights, c);
return float4(c,1.0);
}

37
Assets/ScriptableRenderLoop/fptl/LightDefinitions.cs


//#define LEFT_HAND_COORDINATES
using UnityEngine;
[UnityEngine.ScriptableRenderLoop.GenerateHLSL]
public struct SFiniteLightData
{

public uint uLightType;
public uint uLightModel; // DIRECT_LIGHT=0, REFLECTION_LIGHT=1
public Vec3 vLpos;
public Vector3 vLpos;
public Vec3 vLaxisX;
public Vector3 vLaxisX;
public Vec3 vLaxisY;
public Vector3 vLaxisY;
public Vec3 vLaxisZ; // spot +Z axis
public Vector3 vLaxisZ; // spot +Z axis
public Vec3 vCol;
public Vector3 vCol;
public Vec3 vBoxInnerDist;
public Vector3 vBoxInnerDist;
public Vec3 vBoxInvRange;
public Vector3 vBoxInvRange;
public Vec3 vLocalCubeCapturePoint;
public Vector3 vLocalCubeCapturePoint;
public float fProbeBlendDistance;
};

public Vec3 vBoxAxisX;
public Vec3 vBoxAxisY;
public Vec3 vBoxAxisZ;
public Vec3 vCen; // a center in camera space inside the bounding volume of the light source.
public Vec2 vScaleXY;
public Vector3 vBoxAxisX;
public Vector3 vBoxAxisY;
public Vector3 vBoxAxisZ;
public Vector3 vCen; // a center in camera space inside the bounding volume of the light source.
public Vector2 vScaleXY;
public float fRadius;
};

public Vec3 vCol;
public Vector3 vCol;
public Vec3 vLaxisX;
public Vector3 vLaxisX;
public Vec3 vLaxisY;
public Vector3 vLaxisY;
public Vec3 vLaxisZ;
public Vector3 vLaxisZ;
public float fPad1;
};

34
Assets/ScriptableRenderLoop/fptl/LightDefinitions.cs.hlsl


int flags;
uint uLightType;
uint uLightModel;
float3 vLpos; // x: x y: y z: z
float3 vLpos;
float3 vLaxisX; // x: x y: y z: z
float3 vLaxisX;
float3 vLaxisY; // x: x y: y z: z
float3 vLaxisY;
float3 vLaxisZ; // x: x y: y z: z
float3 vLaxisZ;
float3 vCol; // x: x y: y z: z
float3 vCol;
float3 vBoxInnerDist; // x: x y: y z: z
float3 vBoxInnerDist;
float3 vBoxInvRange; // x: x y: y z: z
float3 vBoxInvRange;
float3 vLocalCubeCapturePoint; // x: x y: y z: z
float3 vLocalCubeCapturePoint;
float fProbeBlendDistance;
};

{
float3 vBoxAxisX; // x: x y: y z: z
float3 vBoxAxisY; // x: x y: y z: z
float3 vBoxAxisZ; // x: x y: y z: z
float3 vCen; // x: x y: y z: z
float2 vScaleXY; // x: x y: y
float3 vBoxAxisX;
float3 vBoxAxisY;
float3 vBoxAxisZ;
float3 vCen;
float2 vScaleXY;
float fRadius;
};

{
float3 vCol; // x: x y: y z: z
float3 vCol;
float3 vLaxisX; // x: x y: y z: z
float3 vLaxisX;
float3 vLaxisY; // x: x y: y z: z
float3 vLaxisY;
float3 vLaxisZ; // x: x y: y z: z
float3 vLaxisZ;
float fPad1;
};

2
Assets/ScriptableRenderLoop/fptl/scrbound.compute


res.w = (-r-res.z*posXY.x) / posXY.y;
// rotate back by 90 degrees
res = bMustFlip ? Vec4(res.y, -res.x, res.w, -res.z) : res;
res = bMustFlip ? float4(res.y, -res.x, res.w, -res.z) : res;
return res;
}

15
Assets/ShaderGenerator/CSharpToHLSL.cs


{
using (System.IO.StreamWriter writer = File.CreateText(fileName))
{
writer.WriteLine("//");
writer.WriteLine("// This file was automatically generated from " + it.Key + ". Please don't edit by hand.");
writer.WriteLine("//");
writer.WriteLine();
writer.Write("//\n");
writer.Write("// This file was automatically generated from " + it.Key + ". Please don't edit by hand.\n");
writer.Write("//\n\n");
writer.WriteLine(gen.EmitDefines());
writer.Write(gen.EmitDefines() + "\n");
}
}

{
writer.WriteLine(gen.EmitTypeDecl());
writer.Write(gen.EmitTypeDecl() + "\n");
}
}

{
writer.WriteLine(gen.EmitAccessors());
writer.Write(gen.EmitAccessors() + "\n");
writer.WriteLine();
writer.Write("\n");
}
}
}

346
Assets/TestScenes/HDTest/HDRenderLoopTest.unity


objectReference: {fileID: 0}
- target: {fileID: 485392, guid: e641a36bceddbf24a89656e94dafb3e5, type: 2}
propertyPath: m_RootOrder
value: 2
value: 3
objectReference: {fileID: 0}
- target: {fileID: 115764, guid: e641a36bceddbf24a89656e94dafb3e5, type: 2}
propertyPath: m_Name

m_RemovedComponents: []
m_ParentPrefab: {fileID: 100100000, guid: e641a36bceddbf24a89656e94dafb3e5, type: 2}
m_IsPrefabParent: 0
--- !u!1001 &191688570
Prefab:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 400000, guid: 646b4ac0331f8e447bd20f06eba916a3, type: 3}
propertyPath: m_LocalPosition.x
value: 3.461315
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: 646b4ac0331f8e447bd20f06eba916a3, type: 3}
propertyPath: m_LocalPosition.y
value: 1.081
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: 646b4ac0331f8e447bd20f06eba916a3, type: 3}
propertyPath: m_LocalPosition.z
value: 0.173
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: 646b4ac0331f8e447bd20f06eba916a3, type: 3}
propertyPath: m_LocalRotation.x
value: -0.6687998
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: 646b4ac0331f8e447bd20f06eba916a3, type: 3}
propertyPath: m_LocalRotation.y
value: -0.22957957
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: 646b4ac0331f8e447bd20f06eba916a3, type: 3}
propertyPath: m_LocalRotation.z
value: 0.22957963
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: 646b4ac0331f8e447bd20f06eba916a3, type: 3}
propertyPath: m_LocalRotation.w
value: 0.6687998
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: 646b4ac0331f8e447bd20f06eba916a3, type: 3}
propertyPath: m_RootOrder
value: 1
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: 646b4ac0331f8e447bd20f06eba916a3, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: -52.108
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: 646b4ac0331f8e447bd20f06eba916a3, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: -90.00001
objectReference: {fileID: 0}
- target: {fileID: 400000, guid: 646b4ac0331f8e447bd20f06eba916a3, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 90.00001
objectReference: {fileID: 0}
m_RemovedComponents: []
m_ParentPrefab: {fileID: 100100000, guid: 646b4ac0331f8e447bd20f06eba916a3, type: 3}
m_IsPrefabParent: 0
--- !u!1 &580932146
GameObject:
m_ObjectHideFlags: 0

m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 8
m_RootOrder: 9
m_LocalEulerAnglesHint: {x: 37.039, y: 0, z: 0}
--- !u!114 &580932148
MonoBehaviour:

m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 10
m_RootOrder: 11
m_LocalEulerAnglesHint: {x: 142.28, y: 106.256996, z: -160.70999}
--- !u!1001 &653798720
Prefab:

objectReference: {fileID: 0}
- target: {fileID: 485392, guid: e641a36bceddbf24a89656e94dafb3e5, type: 2}
propertyPath: m_RootOrder
value: 1
value: 2
objectReference: {fileID: 0}
- target: {fileID: 115764, guid: e641a36bceddbf24a89656e94dafb3e5, type: 2}
propertyPath: m_Name

m_RemovedComponents: []
m_ParentPrefab: {fileID: 100100000, guid: e641a36bceddbf24a89656e94dafb3e5, type: 2}
m_IsPrefabParent: 0
--- !u!1001 &744696321
Prefab:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 485392, guid: e641a36bceddbf24a89656e94dafb3e5, type: 2}
propertyPath: m_LocalPosition.x
value: 3.6074123
objectReference: {fileID: 0}
- target: {fileID: 485392, guid: e641a36bceddbf24a89656e94dafb3e5, type: 2}
propertyPath: m_LocalPosition.y
value: 0.032
objectReference: {fileID: 0}
- target: {fileID: 485392, guid: e641a36bceddbf24a89656e94dafb3e5, type: 2}
propertyPath: m_LocalPosition.z
value: 1.482
objectReference: {fileID: 0}
- target: {fileID: 485392, guid: e641a36bceddbf24a89656e94dafb3e5, type: 2}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 485392, guid: e641a36bceddbf24a89656e94dafb3e5, type: 2}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 485392, guid: e641a36bceddbf24a89656e94dafb3e5, type: 2}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 485392, guid: e641a36bceddbf24a89656e94dafb3e5, type: 2}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 485392, guid: e641a36bceddbf24a89656e94dafb3e5, type: 2}
propertyPath: m_RootOrder
value: 13
objectReference: {fileID: 0}
- target: {fileID: 115764, guid: e641a36bceddbf24a89656e94dafb3e5, type: 2}
propertyPath: m_Name
value: rcgRock012_LODs (6)
objectReference: {fileID: 0}
- target: {fileID: 2374582, guid: e641a36bceddbf24a89656e94dafb3e5, type: 2}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 2100000, guid: c666d363b658c91468e5d881a9c5e051, type: 2}
m_RemovedComponents: []
m_ParentPrefab: {fileID: 100100000, guid: e641a36bceddbf24a89656e94dafb3e5, type: 2}
m_IsPrefabParent: 0
--- !u!1001 &771937532
Prefab:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 485392, guid: e641a36bceddbf24a89656e94dafb3e5, type: 2}
propertyPath: m_LocalPosition.x
value: -0.49
objectReference: {fileID: 0}
- target: {fileID: 485392, guid: e641a36bceddbf24a89656e94dafb3e5, type: 2}
propertyPath: m_LocalPosition.y
value: 0.60660255
objectReference: {fileID: 0}
- target: {fileID: 485392, guid: e641a36bceddbf24a89656e94dafb3e5, type: 2}
propertyPath: m_LocalPosition.z
value: 0.67
objectReference: {fileID: 0}
- target: {fileID: 485392, guid: e641a36bceddbf24a89656e94dafb3e5, type: 2}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 485392, guid: e641a36bceddbf24a89656e94dafb3e5, type: 2}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 485392, guid: e641a36bceddbf24a89656e94dafb3e5, type: 2}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 485392, guid: e641a36bceddbf24a89656e94dafb3e5, type: 2}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 485392, guid: e641a36bceddbf24a89656e94dafb3e5, type: 2}
propertyPath: m_RootOrder
value: 13
objectReference: {fileID: 0}
- target: {fileID: 2374582, guid: e641a36bceddbf24a89656e94dafb3e5, type: 2}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 2100000, guid: c666d363b658c91468e5d881a9c5e051, type: 2}
- target: {fileID: 115764, guid: e641a36bceddbf24a89656e94dafb3e5, type: 2}
propertyPath: m_Name
value: rcgRock012_LODs (5)
objectReference: {fileID: 0}
m_RemovedComponents: []
m_ParentPrefab: {fileID: 100100000, guid: e641a36bceddbf24a89656e94dafb3e5, type: 2}
m_IsPrefabParent: 0
--- !u!1 &970745596
GameObject:
m_ObjectHideFlags: 0

m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 970745596}
m_LocalRotation: {x: 0.31429112, y: 0.005978446, z: -0.010438241, w: 0.94925046}
m_LocalPosition: {x: 2.9189959, y: 2.6469984, z: -3.4988375}
m_LocalPosition: {x: 2.919, y: 2.76, z: -3.651}
m_RootOrder: 9
m_RootOrder: 10
m_LocalEulerAnglesHint: {x: 37.039, y: 0, z: 0}
--- !u!114 &970745598
MonoBehaviour:

m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 6
m_RootOrder: 7
--- !u!1 &1216278626
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 5
m_Component:
- component: {fileID: 1216278630}
- component: {fileID: 1216278629}
- component: {fileID: 1216278628}
- component: {fileID: 1216278627}
m_Layer: 0
m_Name: Plane (1)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!23 &1216278627
MeshRenderer:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1216278626}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_Materials:
- {fileID: 2100000, guid: 93cc94b7b43bd594bb874af6b6cc4cd4, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingOrder: 0
--- !u!64 &1216278628
MeshCollider:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1216278626}
m_Material: {fileID: 0}
m_IsTrigger: 0
m_Enabled: 1
serializedVersion: 2
m_Convex: 0
m_InflateMesh: 0
m_SkinWidth: 0.01
m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
--- !u!33 &1216278629
MeshFilter:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1216278626}
m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
--- !u!4 &1216278630
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1216278626}
m_LocalRotation: {x: -0.7071068, y: 0, z: 0, w: 0.7071068}
m_LocalPosition: {x: 0.82856864, y: 2.573, z: -2.42}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 12
m_LocalEulerAnglesHint: {x: -90, y: 0, z: 0}
--- !u!1 &1220024533
GameObject:
m_ObjectHideFlags: 0

m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1220024533}
m_LocalRotation: {x: -0.0034919123, y: 0.0089843245, z: -0.007998787, w: 0.99992156}
m_LocalPosition: {x: 0.19, y: 1.46, z: 1.26}
m_LocalPosition: {x: 0.19, y: 1.46, z: 1.286}
m_RootOrder: 7
m_RootOrder: 8
m_LocalEulerAnglesHint: {x: -0.39200002, y: 1.033, z: -0.92}
--- !u!1001 &1326720837
Prefab:

objectReference: {fileID: 0}
- target: {fileID: 485392, guid: e641a36bceddbf24a89656e94dafb3e5, type: 2}
propertyPath: m_RootOrder
value: 4
value: 5
objectReference: {fileID: 0}
- target: {fileID: 115764, guid: e641a36bceddbf24a89656e94dafb3e5, type: 2}
propertyPath: m_Name

objectReference: {fileID: 0}
- target: {fileID: 485392, guid: e641a36bceddbf24a89656e94dafb3e5, type: 2}
propertyPath: m_RootOrder
value: 5
value: 6
objectReference: {fileID: 0}
- target: {fileID: 2374582, guid: e641a36bceddbf24a89656e94dafb3e5, type: 2}
propertyPath: m_Materials.Array.data[0]

m_ParentPrefab: {fileID: 100100000, guid: e641a36bceddbf24a89656e94dafb3e5, type: 2}
m_IsPrefabParent: 0
--- !u!1 &1614424510
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 5
m_Component:
- component: {fileID: 1614424514}
- component: {fileID: 1614424513}
- component: {fileID: 1614424512}
- component: {fileID: 1614424511}
m_Layer: 0
m_Name: Plane (2)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!23 &1614424511
MeshRenderer:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1614424510}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_Materials:
- {fileID: 2100000, guid: e6ed37b28beded942954d1569f452e39, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingOrder: 0
--- !u!64 &1614424512
MeshCollider:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1614424510}
m_Material: {fileID: 0}
m_IsTrigger: 0
m_Enabled: 1
serializedVersion: 2
m_Convex: 0
m_InflateMesh: 0
m_SkinWidth: 0.01
m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
--- !u!33 &1614424513
MeshFilter:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1614424510}
m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
--- !u!4 &1614424514
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1614424510}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 2.58852, y: 1.27, z: -0.944}
m_LocalScale: {x: 0.2, y: 0.2, z: 0.2}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 15
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1828470159
GameObject:
m_ObjectHideFlags: 0

m_TargetDisplay: 0
m_TargetEye: 3
m_HDR: 1
m_AllowMSAA: 1
m_ForceIntoRT: 0
m_OcclusionCulling: 1
m_StereoConvergence: 10
m_StereoSeparation: 0.022

objectReference: {fileID: 0}
- target: {fileID: 485392, guid: e641a36bceddbf24a89656e94dafb3e5, type: 2}
propertyPath: m_RootOrder
value: 3
value: 4
objectReference: {fileID: 0}
- target: {fileID: 115764, guid: e641a36bceddbf24a89656e94dafb3e5, type: 2}
propertyPath: m_Name

8
Assets/TestScenes/HDTest/Material/HDRenderLoopMaterials/test.mat


m_PrefabInternal: {fileID: 0}
m_Name: test
m_Shader: {fileID: 4800000, guid: e1a84346ee54f9f4993c2f05c59805a0, type: 3}
m_ShaderKeywords: _EMISSION _NORMALMAP _NORMALMAP_TANGENT_SPACE
m_ShaderKeywords: _ALPHACUTOFFENABLE_OFF _EMISSION _NORMALMAP _NORMALMAP_TANGENT_SPACE
m_LightmapFlags: 1
m_CustomRenderQueue: -1
stringTagMap: {}

- first:
name: _DetailNormalMapScale
second: 1
- first:
name: _DistortionDepthTest
second: 0
- first:
name: _DistortionOnly
second: 0
- first:
name: _DoubleSided
second: 1

11
Assets/TestScenes/HDTest/Rock/rcgRock012/Materials/rcgRock012Material.mat


m_Name: rcgRock012Material
m_Shader: {fileID: 4800000, guid: e1a84346ee54f9f4993c2f05c59805a0, type: 3}
m_ShaderKeywords: _DOUBLESIDEDLIGTHING_OFF _DOUBLESIDED_OFF _EMISSION _METALLICGLOSSMAP
_NORMALMAP
_NORMALMAP _NORMALMAP_TANGENT_SPACE
m_LightmapFlags: 1
m_CustomRenderQueue: -1
stringTagMap: {}

m_Offset: {x: 0, y: 0}
m_Floats:
- first:
name: _AlphaCutoff
second: 0.5
- first:
name: _AlphaCutoffEnable
second: 0
- first:

name: _HeightBias
second: 0
- first:
name: _HeightMapMode
second: 0
- first:
name: _HeightScale
second: -1.07
- first:

second: 0
- first:
name: _Mode
second: 0
- first:
name: _NormalMapSpace
second: 0
- first:
name: _OcclusionStrength

9
Assets/Editor/Tests/RenderloopTests.meta


fileFormatVersion: 2
guid: d741d6a8894f49245a784b7cc5c329ca
folderAsset: yes
timeCreated: 1474988761
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

513
Assets/Editor/Tests/TestScene.unity


%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!29 &1
OcclusionCullingSettings:
m_ObjectHideFlags: 0
serializedVersion: 2
m_OcclusionBakeSettings:
smallestOccluder: 5
smallestHole: 0.25
backfaceThreshold: 100
m_SceneGUID: 00000000000000000000000000000000
m_OcclusionCullingData: {fileID: 0}
--- !u!104 &2
RenderSettings:
m_ObjectHideFlags: 0
serializedVersion: 7
m_Fog: 0
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
m_FogMode: 3
m_FogDensity: 0.01
m_LinearFogStart: 0
m_LinearFogEnd: 300
m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
m_AmbientIntensity: 1
m_AmbientMode: 0
m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
m_HaloStrength: 0.5
m_FlareStrength: 1
m_FlareFadeSpeed: 3
m_HaloTexture: {fileID: 0}
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
m_DefaultReflectionMode: 0
m_DefaultReflectionResolution: 128
m_ReflectionBounces: 1
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0}
m_IndirectSpecularColor: {r: 0.18383996, g: 0.22856951, b: 0.30070874, a: 1}
--- !u!157 &3
LightmapSettings:
m_ObjectHideFlags: 0
serializedVersion: 7
m_GIWorkflowMode: 0
m_GISettings:
serializedVersion: 2
m_BounceScale: 1
m_IndirectOutputScale: 1
m_AlbedoBoost: 1
m_TemporalCoherenceThreshold: 1
m_EnvironmentLightingMode: 0
m_EnableBakedLightmaps: 1
m_EnableRealtimeLightmaps: 1
m_LightmapEditorSettings:
serializedVersion: 4
m_Resolution: 2
m_BakeResolution: 40
m_TextureWidth: 1024
m_TextureHeight: 1024
m_AO: 0
m_AOMaxDistance: 1
m_CompAOExponent: 1
m_CompAOExponentDirect: 0
m_Padding: 2
m_LightmapParameters: {fileID: 0}
m_LightmapsBakeMode: 1
m_TextureCompression: 1
m_DirectLightInLightProbes: 1
m_FinalGather: 0
m_FinalGatherFiltering: 1
m_FinalGatherRayCount: 256
m_ReflectionCompression: 2
m_LightingDataAsset: {fileID: 0}
m_RuntimeCPUUsage: 25
--- !u!196 &4
NavMeshSettings:
serializedVersion: 2
m_ObjectHideFlags: 0
m_BuildSettings:
serializedVersion: 2
agentTypeID: 0
agentRadius: 0.5
agentHeight: 2
agentSlope: 45
agentClimb: 0.4
ledgeDropHeight: 0
maxJumpAcrossDistance: 0
minRegionArea: 2
manualCellSize: 0
cellSize: 0.16666667
accuratePlacement: 0
m_NavMeshData: {fileID: 0}
--- !u!1 &25849430
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 5
m_Component:
- component: {fileID: 25849432}
- component: {fileID: 25849431}
m_Layer: 0
m_Name: Point light
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!108 &25849431
Light:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 25849430}
m_Enabled: 1
serializedVersion: 7
m_Type: 2
m_Color: {r: 1, g: 0, b: 0, a: 1}
m_Intensity: 2.25
m_Range: 3
m_SpotAngle: 30
m_CookieSize: 10
m_Shadows:
m_Type: 0
m_Resolution: -1
m_CustomResolution: -1
m_Strength: 1
m_Bias: 0.05
m_NormalBias: 0.4
m_NearPlane: 0.2
m_Cookie: {fileID: 0}
m_DrawHalo: 0
m_Flare: {fileID: 0}
m_RenderMode: 0
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_Lightmapping: 4
m_AreaSize: {x: 1, y: 1}
m_BounceIntensity: 1
m_ShadowRadius: 0
m_ShadowAngle: 0
--- !u!4 &25849432
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 25849430}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 29.13, y: 10.87, z: -12.32}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 4
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &253520866
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 5
m_Component:
- component: {fileID: 253520868}
- component: {fileID: 253520867}
m_Layer: 0
m_Name: Reflection Probe
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!215 &253520867
ReflectionProbe:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 253520866}
m_Enabled: 1
serializedVersion: 2
m_Type: 0
m_Mode: 0
m_RefreshMode: 0
m_TimeSlicingMode: 0
m_Resolution: 128
m_UpdateFrequency: 0
m_BoxSize: {x: 10, y: 10, z: 10}
m_BoxOffset: {x: 0, y: 0, z: 0}
m_NearClip: 0.3
m_FarClip: 1000
m_ShadowDistance: 100
m_ClearFlags: 1
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_IntensityMultiplier: 1
m_BlendDistance: 1
m_HDR: 1
m_BoxProjection: 0
m_RenderDynamicObjects: 0
m_UseOcclusionCulling: 1
m_Importance: 1
m_CustomBakedTexture: {fileID: 0}
--- !u!4 &253520868
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 253520866}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 31.42, y: 10.15, z: -11.86}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1135582007
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 5
m_Component:
- component: {fileID: 1135582009}
- component: {fileID: 1135582008}
m_Layer: 0
m_Name: Directional light
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!108 &1135582008
Light:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1135582007}
m_Enabled: 1
serializedVersion: 7
m_Type: 1
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_Intensity: 0.31
m_Range: 10
m_SpotAngle: 30
m_CookieSize: 10
m_Shadows:
m_Type: 0
m_Resolution: -1
m_CustomResolution: -1
m_Strength: 1
m_Bias: 0.05
m_NormalBias: 0.4
m_NearPlane: 0.2
m_Cookie: {fileID: 0}
m_DrawHalo: 0
m_Flare: {fileID: 0}
m_RenderMode: 0
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_Lightmapping: 4
m_AreaSize: {x: 1, y: 1}
m_BounceIntensity: 1
m_ShadowRadius: 0
m_ShadowAngle: 0
--- !u!4 &1135582009
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1135582007}
m_LocalRotation: {x: 0.2085781, y: -0.20525375, z: 0.157665, w: 0.9431372}
m_LocalPosition: {x: 22.522564, y: 3.5713508, z: -2.9280958}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 27.268002, y: -21.197, z: 13.783001}
--- !u!1 &1376655766
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 5
m_Component:
- component: {fileID: 1376655770}
- component: {fileID: 1376655769}
- component: {fileID: 1376655768}
- component: {fileID: 1376655767}
m_Layer: 0
m_Name: Plane
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!23 &1376655767
MeshRenderer:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1376655766}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_Materials:
- {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 1
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingOrder: 0
--- !u!64 &1376655768
MeshCollider:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1376655766}
m_Material: {fileID: 0}
m_IsTrigger: 0
m_Enabled: 1
serializedVersion: 2
m_Convex: 0
m_InflateMesh: 0
m_SkinWidth: 0.01
m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
--- !u!33 &1376655769
MeshFilter:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1376655766}
m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
--- !u!4 &1376655770
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1376655766}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 29.983482, y: 10.2917185, z: -11.68843}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1575352313
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 5
m_Component:
- component: {fileID: 1575352315}
- component: {fileID: 1575352314}
m_Layer: 0
m_Name: Spotlight
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!108 &1575352314
Light:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1575352313}
m_Enabled: 1
serializedVersion: 7
m_Type: 0
m_Color: {r: 0, g: 1, b: 0, a: 1}
m_Intensity: 1.93
m_Range: 10
m_SpotAngle: 30
m_CookieSize: 10
m_Shadows:
m_Type: 0
m_Resolution: -1
m_CustomResolution: -1
m_Strength: 1
m_Bias: 0.05
m_NormalBias: 0.4
m_NearPlane: 0.2
m_Cookie: {fileID: 0}
m_DrawHalo: 0
m_Flare: {fileID: 0}
m_RenderMode: 0
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_Lightmapping: 4
m_AreaSize: {x: 1, y: 1}
m_BounceIntensity: 1
m_ShadowRadius: 0
m_ShadowAngle: 0
--- !u!4 &1575352315
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1575352313}
m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068}
m_LocalPosition: {x: 29.34, y: 15.33, z: -9.55}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0}
--- !u!1 &1607679130
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 5
m_Component:
- component: {fileID: 1607679135}
- component: {fileID: 1607679134}
- component: {fileID: 1607679133}
- component: {fileID: 1607679132}
- component: {fileID: 1607679131}
m_Layer: 0
m_Name: Main Camera
m_TagString: MainCamera
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!81 &1607679131
AudioListener:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1607679130}
m_Enabled: 1
--- !u!124 &1607679132
Behaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1607679130}
m_Enabled: 1
--- !u!92 &1607679133
Behaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1607679130}
m_Enabled: 1
--- !u!20 &1607679134
Camera:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1607679130}
m_Enabled: 1
serializedVersion: 2
m_ClearFlags: 1
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
m_NormalizedViewPortRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
near clip plane: 0.3
far clip plane: 1000
field of view: 60
orthographic: 0
orthographic size: 5
m_Depth: -1
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_RenderingPath: -1
m_TargetTexture: {fileID: 0}
m_TargetDisplay: 0
m_TargetEye: 3
m_HDR: 0
m_OcclusionCulling: 1
m_StereoConvergence: 10
m_StereoSeparation: 0.022
m_StereoMirrorMode: 0
--- !u!4 &1607679135
Transform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1607679130}
m_LocalRotation: {x: -0.11764297, y: -0.86998314, z: 0.25099322, w: -0.4077891}
m_LocalPosition: {x: 22.235256, y: 14.497136, z: -7.273508}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}

8
Assets/Editor/Tests/TestScene.unity.meta


fileFormatVersion: 2
guid: 132b4d69c613305449cd1bb9476cdee1
timeCreated: 1474995476
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

125
Assets/ScriptableRenderLoop/HDRenderLoop/Shaders/LightDefinition.cs.hlsl


//
// This file was automatically generated from Assets/ScriptableRenderLoop/HDRenderLoop/Shaders/LightDefinition.cs. Please don't edit by hand.
//
// Generated from UnityEngine.ScriptableRenderLoop.PunctualLightData
// PackingRules = Exact
struct PunctualLightData
{
float3 positionWS;
float invSqrAttenuationRadius;
float3 color;
float useDistanceAttenuation;
float3 forward;
float diffuseScale;
float3 up;
float specularScale;
float3 right;
float shadowDimmer;
float angleScale;
float angleOffset;
float2 unused2;
};
// Generated from UnityEngine.ScriptableRenderLoop.AreaLightData
// PackingRules = Exact
struct AreaLightData
{
float3 positionWS;
};
// Generated from UnityEngine.ScriptableRenderLoop.EnvLightData
// PackingRules = Exact
struct EnvLightData
{
float3 positionWS;
};
// Generated from UnityEngine.ScriptableRenderLoop.PlanarLightData
// PackingRules = Exact
struct PlanarLightData
{
float3 positionWS;
};
//
// Accessors for UnityEngine.ScriptableRenderLoop.PunctualLightData
//
float3 GetPositionWS(PunctualLightData value)
{
return value.positionWS;
}
float GetInvSqrAttenuationRadius(PunctualLightData value)
{
return value.invSqrAttenuationRadius;
}
float3 GetColor(PunctualLightData value)
{
return value.color;
}
float GetUseDistanceAttenuation(PunctualLightData value)
{
return value.useDistanceAttenuation;
}
float3 GetForward(PunctualLightData value)
{
return value.forward;
}
float GetDiffuseScale(PunctualLightData value)
{
return value.diffuseScale;
}
float3 GetUp(PunctualLightData value)
{
return value.up;
}
float GetSpecularScale(PunctualLightData value)
{
return value.specularScale;
}
float3 GetRight(PunctualLightData value)
{
return value.right;
}
float GetShadowDimmer(PunctualLightData value)
{
return value.shadowDimmer;
}
float GetAngleScale(PunctualLightData value)
{
return value.angleScale;
}
float GetAngleOffset(PunctualLightData value)
{
return value.angleOffset;
}
float2 GetUnused2(PunctualLightData value)
{
return value.unused2;
}
//
// Accessors for UnityEngine.ScriptableRenderLoop.AreaLightData
//
float3 GetPositionWS(AreaLightData value)
{
return value.positionWS;
}
//
// Accessors for UnityEngine.ScriptableRenderLoop.EnvLightData
//
float3 GetPositionWS(EnvLightData value)
{
return value.positionWS;
}
//
// Accessors for UnityEngine.ScriptableRenderLoop.PlanarLightData
//
float3 GetPositionWS(PlanarLightData value)
{
return value.positionWS;
}

9
Assets/ScriptableRenderLoop/HDRenderLoop/Shaders/LightDefinition.cs.hlsl.meta


fileFormatVersion: 2
guid: ff58597e731e7d5419b41b73325ddb47
timeCreated: 1475681650
licenseType: Pro
ShaderImporter:
defaultTextures: []
userData:
assetBundleName:
assetBundleVariant:

32
Assets/ScriptableRenderLoop/HDRenderLoop/Shaders/Material/BuiltinData.hlsl


#ifndef UNITY_BUILTIN_DATA_INCLUDED
#define UNITY_BUILTIN_DATA_INCLUDED
//-----------------------------------------------------------------------------
// BuiltinData
// This structure include common data that should be present in all material
// and are independent from the BSDF parametrization.
// Note: These parameters can be store in GBuffer if the writer wants
//-----------------------------------------------------------------------------
struct BuiltinData
{
float opacity;
// These are lighting data.
// We would prefer to split lighting and material information but for performance reasons,
// those lighting information are fill
// at the same time than material information.
float3 bakeDiffuseLighting; // This is the result of sampling lightmap/lightprobe/proxyvolume
float3 emissiveColor;
float emissiveIntensity;
// These is required for motion blur and temporalAA
float2 velocity;
// Distortion
float2 distortion;
float distortionBlur; // Define the color buffer mipmap level to use
};
#endif // UNITY_BUILTIN_DATA_INCLUDED

9
Assets/ScriptableRenderLoop/HDRenderLoop/Shaders/Material/BuiltinData.hlsl.meta


fileFormatVersion: 2
guid: 82161f939b9c88745950020764de18c9
timeCreated: 1475658936
licenseType: Pro
ShaderImporter:
defaultTextures: []
userData:
assetBundleName:
assetBundleVariant:

30
Assets/ScriptableRenderLoop/HDRenderLoop/Shaders/Material/Unlit.hlsl


#ifndef UNITY_UNLIT_INCLUDED
#define UNITY_UNLIT_INCLUDED
struct SurfaceData
{
float3 color;
BuiltinData builtin;
};
struct BSDFData
{
float3 color;
};
//-----------------------------------------------------------------------------
// conversion function for forward
//-----------------------------------------------------------------------------
BSDFData ConvertSurfaceDataToBSDFData(SurfaceData data)
{
BSDFData output;
output.color = data.color;
}
//-----------------------------------------------------------------------------
// No light evaluation, this is unlit
//-----------------------------------------------------------------------------
#endif // UNITY_UNLIT_INCLUDED

9
Assets/ScriptableRenderLoop/HDRenderLoop/Shaders/Material/Unlit.hlsl.meta


fileFormatVersion: 2
guid: 00f37057845073e4880c18942abfb094
timeCreated: 1475742185
licenseType: Pro
ShaderImporter:
defaultTextures: []
userData:
assetBundleName:
assetBundleVariant:

7
Assets/ScriptableRenderLoop/HDRenderLoop/Shaders/ShaderConfig.cs


//-----------------------------------------------------------------------------
// Configuration
//-----------------------------------------------------------------------------
// #define DIFFUSE_LAMBERT_BRDF
// #define VELOCITY_IN_GBUFFER

12
Assets/ScriptableRenderLoop/HDRenderLoop/Shaders/ShaderConfig.cs.meta


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

9
Assets/ScriptableRenderLoop/Tests.meta


fileFormatVersion: 2
guid: 7641c43fc081f6d46b70eee4b602efcc
folderAsset: yes
timeCreated: 1474997398
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

9
Assets/TestScenes/HDTest/Leaf.meta


fileFormatVersion: 2
guid: 01cfa4863006ad6499396fb0d4802c7e
folderAsset: yes
timeCreated: 1475755141
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

311
Assets/TestScenes/HDTest/Material/HDRenderLoopMaterials/test-alpha.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: test-alpha
m_Shader: {fileID: 4800000, guid: e1a84346ee54f9f4993c2f05c59805a0, type: 3}
m_ShaderKeywords: _ALPHATEST_ON _EMISSION _NORMALMAP _NORMALMAP_TANGENT_SPACE
m_LightmapFlags: 1
m_CustomRenderQueue: 2450
stringTagMap:
RenderType: TransparentCutout
m_SavedProperties:
serializedVersion: 2
m_TexEnvs:
- first:
name: _AmbientOcclusionMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _BaseColorMap
second:
m_Texture: {fileID: 2800000, guid: 00447c5eeb984f54d92c80818840a36b, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _BumpMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _CoatCoverageMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _CoatRoughnessMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _DetailAlbedoMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _DetailMask
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _DetailNormalMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _DiffuseLightingMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _DiffuseMap
second:
m_Texture: {fileID: 2800000, guid: d734753529ca78148a43944515a64bc5, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _EmissionMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _EmissiveColorMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _HeightMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _MainTex
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _MaskMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _MetallicGlossMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _MettalicMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _NormalMap
second:
m_Texture: {fileID: 2800000, guid: 11f99173903c31f49b05339fc71c7919, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _OcclusionMap
second:
m_Texture: {fileID: 2800000, guid: fe2ed6aee0b5acd42bc15ee53e939e03, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _ParallaxMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _SmoothnessMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _SpecMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _SpecularOcclusionMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _SubSurfaceRadiusMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _ThicknessMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- first:
name: _AlphaCutoff
second: 0.309
- first:
name: _AlphaCutoffEnable
second: 1
- first:
name: _BlendMode
second: 0
- first:
name: _BumpScale
second: 1
- first:
name: _CoatCoverage
second: 0
- first:
name: _CoatRoughness
second: 0
- first:
name: _CullMode
second: 2
- first:
name: _Cutoff
second: 0.5
- first:
name: _DetailNormalMapScale
second: 1
- first:
name: _DistortionDepthTest
second: 0
- first:
name: _DistortionOnly
second: 0
- first:
name: _DoubleSided
second: 1
- first:
name: _DoubleSidedLigthing
second: 1
- first:
name: _DoubleSidedMode
second: 0
- first:
name: _DstBlend
second: 0
- first:
name: _EmissiveColorMode
second: 1
- first:
name: _EmissiveIntensity
second: 0
- first:
name: _GlossMapScale
second: 1
- first:
name: _Glossiness
second: 0.5
- first:
name: _GlossyReflections
second: 1
- first:
name: _HeightBias
second: 0
- first:
name: _HeightMapMode
second: 0
- first:
name: _HeightScale
second: 1
- first:
name: _MaterialID
second: 0
- first:
name: _MaterialId
second: 0
- first:
name: _Metallic
second: 0
- first:
name: _Mettalic
second: 0
- first:
name: _Mode
second: 0
- first:
name: _NormalMapSpace
second: 0
- first:
name: _OcclusionStrength
second: 1
- first:
name: _Parallax
second: 0.02
- first:
name: _Smoothness
second: 0.524
- first:
name: _SmoothnessTextureChannel
second: 0
- first:
name: _SpecularHighlights
second: 1
- first:
name: _SrcBlend
second: 1
- first:
name: _SubSurfaceProfile
second: 0
- first:
name: _SubSurfaceRadius
second: 0
- first:
name: _SurfaceType
second: 0
- first:
name: _Thickness
second: 0
- first:
name: _UVSec
second: 0
- first:
name: _ZWrite
second: 1
m_Colors:
- first:
name: _BaseColor
second: {r: 1, g: 1, b: 1, a: 1}
- first:
name: _Color
second: {r: 1, g: 1, b: 1, a: 1}
- first:
name: _DiffuseColor
second: {r: 1, g: 1, b: 1, a: 1}
- first:
name: _EmissionColor
second: {r: 0, g: 0, b: 0, a: 1}
- first:
name: _EmissiveColor
second: {r: 0, g: 0, b: 0, a: 1}
- first:
name: _SpecColor
second: {r: 0.04, g: 0.04, b: 0.04, a: 1}

8
Assets/TestScenes/HDTest/Material/HDRenderLoopMaterials/test-alpha.mat.meta


fileFormatVersion: 2
guid: e6ed37b28beded942954d1569f452e39
timeCreated: 1474299392
licenseType: Pro
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:

311
Assets/TestScenes/HDTest/Material/HDRenderLoopMaterials/test-transparent.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: test-transparent
m_Shader: {fileID: 4800000, guid: e1a84346ee54f9f4993c2f05c59805a0, type: 3}
m_ShaderKeywords: _ALPHACUTOFFENABLE_OFF _EMISSION _NORMALMAP _NORMALMAP_TANGENT_SPACE
m_LightmapFlags: 1
m_CustomRenderQueue: 3000
stringTagMap:
RenderType: Transparent
m_SavedProperties:
serializedVersion: 2
m_TexEnvs:
- first:
name: _AmbientOcclusionMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _BaseColorMap
second:
m_Texture: {fileID: 2800000, guid: d734753529ca78148a43944515a64bc5, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _BumpMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _CoatCoverageMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _CoatRoughnessMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _DetailAlbedoMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _DetailMask
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _DetailNormalMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _DiffuseLightingMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _DiffuseMap
second:
m_Texture: {fileID: 2800000, guid: d734753529ca78148a43944515a64bc5, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _EmissionMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _EmissiveColorMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _HeightMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _MainTex
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _MaskMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _MetallicGlossMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _MettalicMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _NormalMap
second:
m_Texture: {fileID: 2800000, guid: 11f99173903c31f49b05339fc71c7919, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _OcclusionMap
second:
m_Texture: {fileID: 2800000, guid: fe2ed6aee0b5acd42bc15ee53e939e03, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _ParallaxMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _SmoothnessMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _SpecMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _SpecularOcclusionMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _SubSurfaceRadiusMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _ThicknessMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- first:
name: _AlphaCutoff
second: 0.5
- first:
name: _AlphaCutoffEnable
second: 0
- first:
name: _BlendMode
second: 0
- first:
name: _BumpScale
second: 1
- first:
name: _CoatCoverage
second: 0
- first:
name: _CoatRoughness
second: 0
- first:
name: _CullMode
second: 0
- first:
name: _Cutoff
second: 0.5
- first:
name: _DetailNormalMapScale
second: 1
- first:
name: _DistortionDepthTest
second: 0
- first:
name: _DistortionOnly
second: 0
- first:
name: _DoubleSided
second: 1
- first:
name: _DoubleSidedLigthing
second: 1
- first:
name: _DoubleSidedMode
second: 0
- first:
name: _DstBlend
second: 10
- first:
name: _EmissiveColorMode
second: 1
- first:
name: _EmissiveIntensity
second: 0
- first:
name: _GlossMapScale
second: 1
- first:
name: _Glossiness
second: 0.5
- first:
name: _GlossyReflections
second: 1
- first:
name: _HeightBias
second: 0
- first:
name: _HeightMapMode
second: 0
- first:
name: _HeightScale
second: 1
- first:
name: _MaterialID
second: 0
- first:
name: _MaterialId
second: 0
- first:
name: _Metallic
second: 0
- first:
name: _Mettalic
second: 0
- first:
name: _Mode
second: 0
- first:
name: _NormalMapSpace
second: 0
- first:
name: _OcclusionStrength
second: 1
- first:
name: _Parallax
second: 0.02
- first:
name: _Smoothness
second: 0.524
- first:
name: _SmoothnessTextureChannel
second: 0
- first:
name: _SpecularHighlights
second: 1
- first:
name: _SrcBlend
second: 5
- first:
name: _SubSurfaceProfile
second: 0
- first:
name: _SubSurfaceRadius
second: 0
- first:
name: _SurfaceType
second: 1
- first:
name: _Thickness
second: 0
- first:
name: _UVSec
second: 0
- first:
name: _ZWrite
second: 0
m_Colors:
- first:
name: _BaseColor
second: {r: 1, g: 1, b: 1, a: 0.397}
- first:
name: _Color
second: {r: 1, g: 1, b: 1, a: 1}
- first:
name: _DiffuseColor
second: {r: 1, g: 1, b: 1, a: 1}
- first:
name: _EmissionColor
second: {r: 0, g: 0, b: 0, a: 1}
- first:
name: _EmissiveColor
second: {r: 0, g: 0, b: 0, a: 1}
- first:
name: _SpecColor
second: {r: 0.04, g: 0.04, b: 0.04, a: 1}

8
Assets/TestScenes/HDTest/Material/HDRenderLoopMaterials/test-transparent.mat.meta


fileFormatVersion: 2
guid: c666d363b658c91468e5d881a9c5e051
timeCreated: 1474299392
licenseType: Pro
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:

311
Assets/TestScenes/HDTest/Material/HDRenderLoopMaterials/test-twosidedLighting.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: test-twosidedLighting
m_Shader: {fileID: 4800000, guid: e1a84346ee54f9f4993c2f05c59805a0, type: 3}
m_ShaderKeywords: _ALPHACUTOFFENABLE_OFF _DOUBLESIDED_LIGHTING_FLIP _EMISSION _NORMALMAP
_NORMALMAP_TANGENT_SPACE
m_LightmapFlags: 1
m_CustomRenderQueue: -1
stringTagMap: {}
m_SavedProperties:
serializedVersion: 2
m_TexEnvs:
- first:
name: _AmbientOcclusionMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _BaseColorMap
second:
m_Texture: {fileID: 2800000, guid: d734753529ca78148a43944515a64bc5, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _BumpMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _CoatCoverageMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _CoatRoughnessMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _DetailAlbedoMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _DetailMask
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _DetailNormalMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _DiffuseLightingMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _DiffuseMap
second:
m_Texture: {fileID: 2800000, guid: d734753529ca78148a43944515a64bc5, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _EmissionMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _EmissiveColorMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _HeightMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _MainTex
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _MaskMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _MetallicGlossMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _MettalicMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _NormalMap
second:
m_Texture: {fileID: 2800000, guid: 11f99173903c31f49b05339fc71c7919, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _OcclusionMap
second:
m_Texture: {fileID: 2800000, guid: fe2ed6aee0b5acd42bc15ee53e939e03, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _ParallaxMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _SmoothnessMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _SpecMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _SpecularOcclusionMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _SubSurfaceRadiusMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _ThicknessMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- first:
name: _AlphaCutoff
second: 0.5
- first:
name: _AlphaCutoffEnable
second: 0
- first:
name: _BlendMode
second: 0
- first:
name: _BumpScale
second: 1
- first:
name: _CoatCoverage
second: 0
- first:
name: _CoatRoughness
second: 0
- first:
name: _CullMode
second: 0
- first:
name: _Cutoff
second: 0.5
- first:
name: _DetailNormalMapScale
second: 1
- first:
name: _DistortionDepthTest
second: 0
- first:
name: _DistortionOnly
second: 0
- first:
name: _DoubleSided
second: 1
- first:
name: _DoubleSidedLigthing
second: 1
- first:
name: _DoubleSidedMode
second: 2
- first:
name: _DstBlend
second: 0
- first:
name: _EmissiveColorMode
second: 1
- first:
name: _EmissiveIntensity
second: 0
- first:
name: _GlossMapScale
second: 1
- first:
name: _Glossiness
second: 0.5
- first:
name: _GlossyReflections
second: 1
- first:
name: _HeightBias
second: 0
- first:
name: _HeightMapMode
second: 0
- first:
name: _HeightScale
second: 1
- first:
name: _MaterialID
second: 0
- first:
name: _MaterialId
second: 0
- first:
name: _Metallic
second: 0
- first:
name: _Mettalic
second: 0
- first:
name: _Mode
second: 0
- first:
name: _NormalMapSpace
second: 0
- first:
name: _OcclusionStrength
second: 1
- first:
name: _Parallax
second: 0.02
- first:
name: _Smoothness
second: 0.524
- first:
name: _SmoothnessTextureChannel
second: 0
- first:
name: _SpecularHighlights
second: 1
- first:
name: _SrcBlend
second: 1
- first:
name: _SubSurfaceProfile
second: 0
- first:
name: _SubSurfaceRadius
second: 0
- first:
name: _SurfaceType
second: 0
- first:
name: _Thickness
second: 0
- first:
name: _UVSec
second: 0
- first:
name: _ZWrite
second: 1
m_Colors:
- first:
name: _BaseColor
second: {r: 1, g: 1, b: 1, a: 1}
- first:
name: _Color
second: {r: 1, g: 1, b: 1, a: 1}
- first:
name: _DiffuseColor
second: {r: 1, g: 1, b: 1, a: 1}
- first:
name: _EmissionColor
second: {r: 0, g: 0, b: 0, a: 1}
- first:
name: _EmissiveColor
second: {r: 0, g: 0, b: 0, a: 1}
- first:
name: _SpecColor
second: {r: 0.04, g: 0.04, b: 0.04, a: 1}

8
Assets/TestScenes/HDTest/Material/HDRenderLoopMaterials/test-twosidedLighting.mat.meta


fileFormatVersion: 2
guid: 93cc94b7b43bd594bb874af6b6cc4cd4
timeCreated: 1474299392
licenseType: Pro
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:

43
Assets/Editor/Tests/RenderloopTests/CullResultsTest.cs


using UnityEngine;
using UnityEditor;
using UnityEngine.Rendering;
using System.Collections.Generic;
using System.Linq;
using NUnit.Framework;
[TestFixture]
public class CullResultsTest
{
void InspectCullResults(Camera camera, CullResults cullResults, RenderLoop renderLoop)
{
VisibleReflectionProbe[] probes = cullResults.culledReflectionProbes;
Assert.AreEqual(1, probes.Length, "Incorrect reflection probe count");
VisibleReflectionProbe probeA = probes[0];
Assert.NotNull(probeA.texture, "probe texture");
ActiveLight[] lights = cullResults.culledLights;
Assert.AreEqual(3, lights.Length, "Incorrect light count");
LightType[] expectedTypes = new LightType[] { LightType.Directional, LightType.Spot, LightType.Point };
for (int i = 0; i != 2; i++)
{
Assert.AreEqual(expectedTypes[i], lights[i].lightType,
"Incorrect light type for light " + i.ToString() + " (" + lights[i].light.name + ")");
}
// @TODO..
}
[Test]
public void TestReflectionProbes()
{
UnityEditor.SceneManagement.EditorSceneManager.OpenScene("Assets/Editor/Tests/TestScene.unity");
// Asserts.ExpectLogError("Boing");
RenderLoopTestFixture.Run(InspectCullResults);
}
}

12
Assets/Editor/Tests/RenderloopTests/CullResultsTest.cs.meta


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

59
Assets/Editor/Tests/RenderloopTests/RenderloopTestFixture.cs


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using UnityEngine.Rendering;
using NUnit.Framework;
[ExecuteInEditMode]
public class RenderLoopTestFixture : MonoBehaviour
{
public delegate void TestDelegate(Camera camera, CullResults cullResults, RenderLoop renderLoop);
private static TestDelegate callback;
public static void Render(RenderLoopWrapper wrapper, Camera[] cameras, RenderLoop renderLoop)
{
foreach (Camera camera in cameras)
{
CullingParameters cullingParams;
bool gotCullingParams = CullResults.GetCullingParameters(camera, out cullingParams);
Assert.IsTrue(gotCullingParams);
CullResults cullResults = CullResults.Cull(ref cullingParams, renderLoop);
callback(camera, cullResults, renderLoop);
}
renderLoop.Submit();
}
public static void Run(TestDelegate renderCallback)
{
var sceneCamera = Camera.main;
var camObject = sceneCamera.gameObject;
var instance = camObject.AddComponent<RenderLoopWrapper>();
instance.callback = Render;
callback = renderCallback;
instance.enabled = true;
Transform t = camObject.transform;
// Can't use AlignViewToObject because it animates over time, and we want the first frame
float size = SceneView.lastActiveSceneView.size;
float fov = 90; // hardcoded in SceneView
float camDist = size / Mathf.Tan(fov * 0.5f * Mathf.Deg2Rad);
SceneView.lastActiveSceneView.LookAtDirect(t.position + t.forward * camDist, t.rotation, size);
// Invoke renderer
try
{
sceneCamera.Render();
}
finally
{
Object.DestroyImmediate(instance);
}
}
}

12
Assets/Editor/Tests/RenderloopTests/RenderloopTestFixture.cs.meta


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

29
Assets/ScriptableRenderLoop/Tests/RenderLoopWrapper.cs


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.ScriptableRenderLoop;
using UnityEngine.Rendering;
[ExecuteInEditMode]
public class RenderLoopWrapper : MonoBehaviour
{
public delegate void Callback(RenderLoopWrapper wrapper, Camera[] cameras, RenderLoop renderLoop);
public Callback callback;
void OnEnable()
{
RenderLoop.renderLoopDelegate += Render;
}
void OnDisable()
{
RenderLoop.renderLoopDelegate -= Render;
}
bool Render(Camera[] cameras, RenderLoop loop)
{
callback(this, cameras, loop);
return true;
}
}

12
Assets/ScriptableRenderLoop/Tests/RenderLoopWrapper.cs.meta


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

9
Assets/TestScenes/HDTest/Leaf/GroundLeaf.meta


fileFormatVersion: 2
guid: 582c65a5691faa94183a3a24350b12e0
folderAsset: yes
timeCreated: 1475755103
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

249
Assets/TestScenes/HDTest/Leaf/GroundLeaf/GroundLeaf.FBX


Kaydara FBX Binary ��FBXHeaderExtension\FBXHeaderVersionI�x
FBXVersionI��EncryptionTypeI�CreationTimeStamp�VersionI��YearI��MonthIDayI 'HourI?MinuteI3WSecondIt MillisecondI��'CreatorS"FBX SDK/FBX Plugins version 2015.0�' SceneInfoSGlobalInfoSceneInfoSUserData TypeSUserData0VersionIdMetaData^VersionIduTitleS�SubjectS�AuthorS�KeywordsS�RevisionS�CommentS� Properties70�oPS DocumentUrlSKStringSUrlSSAD:\Folders\Work\Photogrammetry\Tree\GroundLeaf\Max\GroundLeaf.FBXrPSSrcDocumentUrlSKStringSUrlSSAD:\Folders\Work\Photogrammetry\Tree\GroundLeaf\Max\GroundLeaf.FBXH$PSOriginalSCompoundSS�BPSOriginal|ApplicationVendorSKStringSSSAutodesk�?PSOriginal|ApplicationNameSKStringSSS3ds Max2?PSOriginal|ApplicationVersionSKStringSSS2014�MPSOriginal|DateTime_GMTSDateTimeSSS13/04/2016 15:51:01.643 rPSOriginal|FileNameSKStringSSSAD:\Folders\Work\Photogrammetry\Tree\GroundLeaf\Max\GroundLeaf.FBX@%PS LastSavedSCompoundSS�CPSLastSaved|ApplicationVendorSKStringSSSAutodesk�@PSLastSaved|ApplicationNameSKStringSSS3ds Max-@PSLastSaved|ApplicationVersionSKStringSSS2014�NPSLastSaved|DateTime_GMTSDateTimeSSS13/04/2016 15:51:01.643�FileIdR(�+��'�¹ʱ"�#��  CreationTimeS2016-04-13 17:51:01:644W6CreatorS1FBX SDK/FBX Plugins version 2015.0 build=20140108� GlobalSettings�VersionI�� Properties70�)PSUpAxisSintSIntegerSI -PS
UpAxisSignSintSIntegerSIP ,PS FrontAxisSintSIntegerSI� 0PS FrontAxisSignSintSIntegerSI� ,PS CoordAxisSintSIntegerSI
0PS CoordAxisSignSintSIntegerSIE
1PSOriginalUpAxisSintSIntegerSI�
5PSOriginalUpAxisSignSintSIntegerSI�
8PSUnitScaleFactorSdoubleSNumberSD�? @PSOriginalUnitScaleFactorSdoubleSNumberSD�?r HPS AmbientColorSColorRGBSColorSDDD� APS DefaultCameraSKStringSSSProducer Perspective� %PSTimeModeSenumSSI+ )PS TimeProtocolSenumSSIe ,PSSnapOnFrameModeSenumSSI� 3PS TimeSpanStartSKTimeSTimeSL� 2PS TimeSpanStopSKTimeSTimeSL�y]�#, 8PSCustomFrameRateSdoubleSNumberSD��` &PS
TimeMarkerSCompoundSS� 4PSCurrentTimeMarkerSintSIntegerSI����� Documents� CountI�DocumentL���SSScene� Properties70c&PS SourceObjectSobjectSS�3PSActiveAnimStackNameSKStringSSS� RootNodeL 
References�9 Definitions>VersionIdUCountI�
ObjectTypeSGlobalSettings�CountI�
ObjectTypeSAnimationStack�CountI|PropertyTemplateS FbxAnimStacko Properties70d+PS DescriptionSKStringSSS�0PS
LocalStartSKTimeSTimeSL�/PS LocalStopSKTimeSTimeSL!4PSReferenceStartSKTimeSTimeSLb3PS ReferenceStopSKTimeSTimeSLF
ObjectTypeSAnimationLayer�CountI9PropertyTemplateS FbxAnimLayer, Properties70I*PSWeightSNumberSSADY@x!PSMuteSboolSSI�!PSSoloSboolSSI�!PSLockSboolSSI%APSColorSColorRGBSColorSD�������?D�������?D�������?Y&PS BlendModeSenumSSI�5PSRotationAccumulationModeSenumSSI�2PSScaleAccumulationModeSenumSSI5PSBlendModeBypassS ULongLongSSL�'
ObjectTypeSModel~CountI�' PropertyTemplateSFbxNode�' Properties702PSQuaternionInterpolateSenumSSIYKPSRotationOffsetSVector3DSVectorSDDD�JPS RotationPivotSVector3DSVectorSDDD JPS ScalingOffsetSVector3DSVectorSDDD`IPS ScalingPivotSVector3DSVectorSDDD�.PSTranslationActiveSboolSSI�KPSTranslationMinSVector3DSVectorSDDDNKPSTranslationMaxSVector3DSVectorSDDD�,PSTranslationMinXSboolSSI�,PSTranslationMinYSboolSSI�,PSTranslationMinZSboolSSI6,PSTranslationMaxXSboolSSIp,PSTranslationMaxYSboolSSI�,PSTranslationMaxZSboolSSI�*PS RotationOrderSenumSSI&6PSRotationSpaceForLimitOnlySboolSSIo;PSRotationStiffnessXSdoubleSNumberSD�;PSRotationStiffnessYSdoubleSNumberSD;PSRotationStiffnessZSdoubleSNumberSD?0PSAxisLenSdoubleSNumberSD$@�HPS PreRotationSVector3DSVectorSDDD�IPS PostRotationSVector3DSVectorSDDD%+PSRotationActiveSboolSSI{HPS RotationMinSVector3DSVectorSDDD�HPS RotationMaxSVector3DSVectorSDDD)PS RotationMinXSboolSSI?)PS RotationMinYSboolSSIv)PS RotationMinZSboolSSI�)PS RotationMaxXSboolSSI�)PS RotationMaxYSboolSSI)PS RotationMaxZSboolSSIQ(PS InheritTypeSenumSSI�*PS ScalingActiveSboolSSI�GPS
ScalingMinSVector3DSVectorSDDD3GPS
ScalingMaxSVector3DSVectorSD�?D�?D�?i(PS ScalingMinXSboolSSI�(PS ScalingMinYSboolSSI�(PS ScalingMinZSboolSSI (PS ScalingMaxXSboolSSIA(PS ScalingMaxYSboolSSIw(PS ScalingMaxZSboolSSI�QPSGeometricTranslationSVector3DSVectorSDDD2 NPSGeometricRotationSVector3DSVectorSDDD� MPSGeometricScalingSVector3DSVectorSD�?D�?D�?� 6PS MinDampRangeXSdoubleSNumberSD!6PS MinDampRangeYSdoubleSNumberSDY!6PS MinDampRangeZSdoubleSNumberSD�!6PS MaxDampRangeXSdoubleSNumberSD�!6PS MaxDampRangeYSdoubleSNumberSD%"6PS MaxDampRangeZSdoubleSNumberSDl"9PSMinDampStrengthXSdoubleSNumberSD�"9PSMinDampStrengthYSdoubleSNumberSD�"9PSMinDampStrengthZSdoubleSNumberSDA#9PSMaxDampStrengthXSdoubleSNumberSD�#9PSMaxDampStrengthYSdoubleSNumberSD�#9PSMaxDampStrengthZSdoubleSNumberSD$7PSPreferedAngleXSdoubleSNumberSDY$7PSPreferedAngleYSdoubleSNumberSD�$7PSPreferedAngleZSdoubleSNumberSD�$(PSLookAtPropertySobjectSS %*PSUpVectorPropertySobjectSS;%!PSShowSboolSSI�%8PSNegativePercentShapeSupportSboolSSI�%8PSDefaultAttributeIndexSintSIntegerSI�����%#PSFreezeSboolSSI)&#PSLODBoxSboolSSI�&NPSLcl TranslationSLcl TranslationSSADDD�&HPS Lcl RotationS Lcl RotationSSADDD/'FPS Lcl ScalingS Lcl ScalingSSAD�?D�?D�?o'2PS
VisibilityS
VisibilitySSAD�?�'EPSVisibility InheritanceSVisibility InheritanceSSI/*
ObjectTypeSGeometry$(CountI"* PropertyTemplateSFbxMesh* Properties70�(APSColorSColorRGBSColorSD�������?D�������?D�������?)DPSBBoxMinSVector3DSVectorSDDDY)DPSBBoxMaxSVector3DSVectorSDDD�)/PSPrimary VisibilitySboolSSI�)*PS Casts ShadowsSboolSSI*,PSReceive ShadowsSboolSSI11
ObjectTypeSMaterialj*CountI$1PropertyTemplateSFbxSurfacePhong1 Properties70�*1PS ShadingModelSKStringSSSPhong(+'PS
MultiLayerSboolSSIx+BPS EmissiveColorSColorSSADDD�+2PSEmissiveFactorSNumberSSAD�?,APS AmbientColorSColorSSAD�������?D�������?D�������?F,1PS AmbientFactorSNumberSSAD�?�,APS DiffuseColorSColorSSAD�������?D�������?D�������?�,1PS DiffuseFactorSNumberSSAD�?#-APSBumpSVector3DSVectorSDDDw-FPS NormalMapSVector3DSVectorSDDD�-3PS
BumpFactorSdoubleSNumberSD�? .EPSTransparentColorSColorSSADDDO.6PSTransparencyFactorSNumberSSAD�.MPSDisplacementColorSColorRGBSColorSDDD�.;PSDisplacementFactorSdoubleSNumberSD�?T/SPSVectorDisplacementColorSColorRGBSColorSDDD�/APSVectorDisplacementFactorSdoubleSNumberSD�?�/BPS SpecularColorSColorSSAD�������?D�������?D�������?302PSSpecularFactorSNumberSSAD�?v05PSShininessExponentSNumberSSAD4@�0DPSReflectionColorSColorSSADDD
14PSReflectionFactorSNumberSSAD�?�5
ObjectTypeSTexturek1CountI�5PropertyTemplateSFbxFileTexture�5 Properties70�1+PSTextureTypeUseSenumSSI,21PS Texture alphaSNumberSSAD�?i2/PSCurrentMappingTypeSenumSSI�2&PS WrapModeUSenumSSI�2&PS WrapModeVSenumSSI3#PSUVSwapSboolSSI=3-PSPremultiplyAlphaSboolSSI�3APS TranslationSVectorSSADDD�3>PSRotationSVectorSSADDD#4=PSScalingSVectorSSAD�?D�?D�?�4QPSTextureRotationPivotSVector3DSVectorSDDD�4PPSTextureScalingPivotSVector3DSVectorSDDD"54PSCurrentTextureBlendModeSenumSSI\5,PSUVSetSKStringSSSdefault�5(PS UseMaterialSboolSSI�5&PS UseMipMapSboolSSI�9
ObjectTypeSVideo%6CountI�9 PropertyTemplateSFbxVideo�9 Properties70�6*PS ImageSequenceSboolSSI�66PSImageSequenceOffsetSintSIntegerSI$72PS FrameRateSdoubleSNumberSD^7,PS LastFrameSintSIntegerSI�7(PSWidthSintSIntegerSI�7)PSHeightSintSIntegerSI8+PSPathSKStringSXRefUrlSS?8-PS
StartFrameSintSIntegerSIy8,PS StopFrameSintSIntegerSI�82PS PlaySpeedSdoubleSNumberSD�8,PSOffsetSKTimeSTimeSL+9*PS InterlaceModeSenumSSIa9(PS FreeRunningSboolSSI�9!PSLoopSboolSSI�9'PS
AccessModeSenumSSIw�Objects
�!GeometryL�NS
GeometrySMesh�: Properties70�:APSColorSColorRGBSColorSD666666�?D�?D�������?тHVerticesd��Gx=�u|U���C��-N(�h��(��� Y�� �N�ł���� ,�,���m���<���+�|��'��dr�����gƘ����kel���kپ����f}��Ƕ����vA!�3Q#ҵv�O*��&a�ܮ/��7>��L��l���_r����s:�w&�0{}�)�9E�uy "�qv[F�q����X�k{U;�Zq���Ş�����ҵruͲƵ�������kMǣ��m*~r}_������{�����G��J����
�ۯ�^8n'v �oG{}��?�qӥ�ϭ����?::G7p�D<�qq��g�G͡q|��3�;.��_;����l�s�����F��p�qs�#��\6�q����y���"#�/�>[����l�p^�Ox]�-�e�m�:p>󯤎����9n��#���?E{}�u+�m�T��L�[I����󏝽~�i���J��~\�t�> �e7�q�[�/o{���U���n}s�l�����w:�r�k����'[!��\�F>��M���z���0f'����v�vk$�VV;�: s�ˍE��2��z�ً������B���k]�:��V.a���5%T�����aqRq�ٶT��ȼk�:.��,��f�Np���v���W� ���Е �^�K�-��22/����^f�?���ʆ�V�<���?���T�����S+����U�om��!1ċ�q�q�S�H��p[̋�~��˛>�����ʶ@�ʄ����%蘤�^C���(�}�ܩ�q��ggcZ=��+s����z2*�q]d�!��� :��E�7�eծ�q^Lv��AU)o���*w|g��=Ÿry�Ͱ;�zc/ޅ=;�����O��ecZ���9}۲CB�#{5%B~��?d�q�vU�V�dB��랝�/�O\r:����n|qs �'���q�8� w����ky������n�������;{��7��E�S<F�q\�/��q�(��U�'�5�m�����G��|���q�a8{��-J��q^��񞢾�m�\��
\�b�M�t��=�V��st��g5����Ӈt|�Po����;n��^�<���_��K��"�"�]�� ���g��V�OL����~psN0������I��>��:f�e�W\����P�fw�%��d��/w���e�;ju<��L����/O�%��f�N؋?��D{}~�ꂙE����#U ^˚���}�ł�<��b�ց�l��S���6��;���7��@�2a��O���m�J����Iy��a߉ g�ݸrCmp֯��~�
��}�����)�ޖ�ymj "��?�|l�~�?���|q��?��=�W�?KK|/q>�-G�ز��Y�!���GjI.����曪����x��{������j�6��?�Β}��X_�M�]�
8{]4��a1C��רUձ�6< �3�]��iZ�_��k<;�&���������%�p��oXw^��~7/;A�w� ��ua:�[-������\����8����u�u���t��G���6�����Eܺ4D�UO}gޫ&�M9.^>7.�{ۧ�]goV���j_jث9������ ��ex�K�/��s����+���
e��\?��z������5iW��������e�ep�����15_�NH�N_��$LE���t�����F%�f�+����y�M�Gt?��-�c���M߂��M৞6\�����W�zM�I������r�}�y�#T���G�@:�� ���з
Q=��=���eS����K�>��zb�n�����6I�[.��"�uf�+���6�gw���縮�,Ĺl���������.b�,�<h]�>W���vpo|�]JFz���^$^����}t}�u��;��?7�-�D�{����)��j�_O��&meү>�)��8>�"�ُȎ<���`<So.����Q�T�N�\����O�;;���Ž���������XOڧ�_m_� uH�/�g�F_t�qz���>E����cݽ�鳯C�>��/�}� ��o�e�#�����^�mC:{�Q^%���i���9�n��xvj֝+�� �.��E��/Χ�����Q%�"�Ԗ*�o�GV�^�i�k<;q78��Z�\�J��x]=�N"��A�\���$�kTœ�O`�@�mh����1��Z��:�9�"��jX�,�ӻ������n8�u�p��7L��2;{�h��#S9�>NK#\��ω|U������18�d�s���PWE��8�l�}�;=�>���y4y
�����Ae���'���:�^��v�O�w����#��Nv�B�T���Q����l�NG�L {���K C���^ž]ɘ���#o� ����a��F-�K~[�����$��$��V�V�x�:��5��`|��W���:n�>�9j��>G �m�7T�������%��Mn�ϋ�u:��7�Z�t�?��7����ˑ�zy�7�o�\&���͘� ��D��w��ӝs�� ?��R�쪹��9�����x����׾t\�x%\����s�<���������~��A������ݻ����v5p��;�u�Kx���C�ņ�_b=;Q���΁뿋`��қ?:��O�k+t=��S�o�o+�O���L6H�������_3Xs~�g�u�-�:�}p�h��U� pV:��f? n�'"?�]����P����������6i��NG���:��y#�N�길���%�����������|m�f��>б�b_��a�W������O��M��M$�,�}���~�"[�I����������T�?��q:������t�- ��NiHgvY�_u�9�#������9�ش[:ۺ����)���u\Xn~�%4^_= �s� ���3 q�W��~���`�z$�'1b[Rg/ ,���}s0�nT$��<p/�������Sp3���]��xvR.C]���c\���|� {[�.���G&���8?x׸���yo�w�E�^���?y�Jؿ���q[���k�a���Б��a}u�O�W<]� ����_�?�/Rg�^Oږ�aJ�8��� b_�w����J_��7���B3�y` ���ߏ��� ��]��湰z�ꃳ�ch=��^t�d����y��zg�OU'�8�������M�
�6���q[n� ?qq�!b��~M��E�t�77w���+��ϩy/�~w(�7n@����qKm�>�*��7Mʒ΍���9�\w:b��~����<p���}�Ua�fA��� ��݇<3�{�O�$'t����9s��ȕ`oo�y�vV����.pu��M�q��'؏I@�/K����� o]kvP�W[!,U$�i���]���l�
�Sݛ�W[�S��s:�&��DC̗�EB_�t"��"^6�ď=. .�O���&ƕM~ի(_��}�/��υ8� Ua/�P}0��#���f�C��\�GuR޾�G|}n�����y�
~wq`?3�^W��}���>W�8�:��]6؋}�E���.�}�u�i5����~��C���.2�z��o�r��_�j�D���Y�j� �g����l�1eNa]��@}��������]R�ވG���\�����l�sT�rt��d�@G���Sq��[Ƃ���?�u[�+��&��+.�qŕ�X�oZ�ϴ SR�ɑ��stV�gB �A�q8��'o��S�L�}$.����:��T䛜���g�'Q�O�S\��y�I���7;W���i����s��["����ȯ�Ê����F�E�>����*��,��Gx� M�Z92,�x��>��w��7����:�����8{ճ7�m��d_����vڔAݰ\?��}^���?ֵQ��E���Eڠ�� ;���ebz/�g�?�=��\�:}5����{�ϔK�t̳'x�����Y��F�QgD���Wgq��l���^kW�<ܼ�;n���t�m�H��t��'{_9�KC< [&��ŗ���}�s�E�K?N�s���}���+&�k��{q�����!���� �b�f�{�5�=?A�S1̗�zM<eU�o����P�+ݭ3�����^�,�{6��������J|�ҏ�����3�n�?!-�1ׯ�n���i�}���Ł/>A�K�:��ܿ!�D���#Sj]I�ٱ$)9���Z�\'� �˶��+����ep\�kGu���_���x�b���>��0�xv&U�l���.;���.�~��C�?���WF�������}N=kE����6�_��>�"��Î���H�R����8��aϺ��>�_�a���oaϒ}�~�շ!̱��K|��E�7����������hpQ%ϑ<&uCX�l/���g�����#��y���;�9�+���d���������;�R�"������^�
s:*ep {��=8���Ee9@�6��pg�=��~lQuL��W-���K���a��_����_.���>�x<u�O_}����𧈛����j�������W6�{��?/��)���q����|-��l���:t ���d>���]�[�i)탯��I��}jα�n3�r��h�K�LDy{Z���3�'/=�Gxf���`㵼m,�kz.G��-�r;nNFQ<�g����*;��(���sZ���AG<�x���)� v��}�X��['q_l�gv\l�]x�I8���M��)��6������0��v�}q�'���?�Q�4k��n�v�^~؉���s����z6��>D��m���g38.�j�~I��Gx}6�cV������"�I�S+a\3�3�*���s� �e�t�ik�C}�㋦q:bh�?����pFā_y.6L�s?�*go�@G��B����x���3������ڗ'���x2����Г��ݎv�f���S����� ���!X�~.��� EW��"�_a��
���|7�ei������"X�n� ����Z�+����"�͎���"����H��J� �"�ro�(�/4�lK��q}9���n�yٶ�h���W�]g����w��sA�1�,Ig�/:2?�����'��/u :<m�/��� �'�����MҴ���l"���F����> �𴹅wY��?1�km��d��!�ŧ ���*�K�:��9Hx��x�>��?� q�w�b����WK�ջ�@_�C�5�v��Qt�������.6O�)���'ǾM�w:f�p��T���a#c��_� �]W��¾���F�o���H����F���zu0��p��z\4������c³����y��J0�wv������x>̋�����ʳ"��9�Y�p�|sb�;�f=����M} :�F|سk�ȟ���ϙ"qTo�=���+ }U�\����r����8�d� �y����x�qY�L��Wo��������ޅ�ך�9i^mۓ�s�v����[����Xՠ�Y�����ؒaƵ�s �Q5z�q9㚑{��q)w�? ��4Ǽx�g�"����n�CGf������ɾ�C���E��cR9]3�,��K<磶r�ىc���|1/[���*u7�O�=�^������[BG���F􀾸p~���g^��m�ƹ#Ǐ�|��B8�d���ťH�?��ʑ�#
}���lv��k�.ˆB������~o�u��9�cT u�v
}��fZ�#�>�)�y��a�g-�Y����wY��
?�gO����ǿ���������T���s���aث�#+�@�u�����W>��8���ه�ٍ��N5@�d�3:;��^�1�4�{L�l� �ʹ5�g��x_�_l�����O����E-{�~/��z+ꀹ�#���љ0�Y|��i>r����٣|0x��W� �Ao���{Q�����m�K���māw��p�Y�\N����f�gp��z����ѥ �5|rޫ�x*���b�E��U��j�xj���4��չ<��|�;�q��.یi������b��z��U�����i{%�@ߴ�B�m���w�<_�`����Pp��,t��Z�A�O�� ��>��7��A_�,N�mn�f���E`�o]E<Ů ~��zw��M|��E��xO*��O�yb ����ۏ���}0笝1��,v3t�K�5���žO:����:���ˢ5 .��T�l;q��w�k^��/��������� ��F�u��9ye��K���ߵ0ײ5ű.�a]?�ׯ��w-AuCL������(�Z����� �͑c��P�e$�x�U@p����bK�pg��~ſ�Ppsp4��wi����?j��X����bMo�!/�,���/;(nyz�������ked5舏��cB�������u؋S��ӗ��5z?$�@��oA�j< �Qr�apyH�ۛ ��ņ���F�AX��e�~}������y`�>b�by=ҩ�q�1��9?�f:�ŷex��v\�����qЕñ�d�q�+��}�
�os�"ٿXz��ϰ� ���iW-�O� �7W/�`�7�imS�?9 �������r��K)��q�q�ãJ�������� Q��eߍ��~ ���L��~`\Y%!�W�'� 7�y��c�{�".>��`�#׿�}��� �ot�p�k}*���1�������倝�_̹�:�+�gs����ޘ��Ѝ���)��<�4��W��O)ų� ���ȟe)�&'p\EL�Q�j�e��yy�j5!�'#2ou�/N��=(���!p9o;⠃_ �&���T{?u��ה�K��Q������i,i���]�P"��}��x�y�7��$t���?����_�9 n� ��>�܎ ������̉QЗ�����6�?�3���a1�Z���].o��r��봏l�O���W�h]~?H��&=�n�#Ɠ�L���7]��J�`�f�D�ԸC�矪�^�: n�����(��f�?�|F��)��~�F���I�9H�;�����{6�G��+�~@,�D��60H���GުJ���K{u��3���� v���#���{]��Np�7�������tU��y���9{v��
M��Y��9n��_�8?D�5U��ܰ���[Y�sJ�0:6��s��e����6T����� p���{`*�m����t?�G;�#��,Z܆6ø�V�j!=�$Ȏq�-��3z�ɺ��Цdd_��X ��-���gƶ����[���� �����t���Y��>�H����B���?���t���wx����kL��ݙ��B��q���X���ϗS�gm>�}]/z��WK���=��q�Gě�����D�YM���̫�ՑT�cr��p�u�,��9���������7Ҽ& ��z�ea�Yx �����FƗ�W ����S}.���mz�?��c�_Ǹv��;S�X��Qy�^"��x����?��&\؎�g�Np�7����
}���ckD`_XѦ>�#[�B�L� ���WM���eh�7"n:�_�S̿�q��O�֩��?S���C<uh����O������{������N�^U��uft��i��?�^`]��v�W�Fc\s�7t��3��ɯ�'�}�8�i}��~G-ʫl0/5�h���O���:�*����yw �bc+���顎�顈�����\[>/��`�����8�ɝ�qӥ��_ �/����5~�߇�������K)n� �t͖�g+g�~/V~�� ����[%>�e�BW� .�ք��܆��� ՁM=`or����u�$��=�8n>�üX�rاʯ�����6��렾�ܗgϧA����-��J긜�:��y��b#jfu��,�8K� ��2�M����K���$q\n\JqH_qSU���˝����R�gg���s�(A�o;�t
M.��:A(�Q#�Î�h����Ƽ����?��N�g��΢���
ŹD��F��y'�5�}� ���雦c)n��q?�O t�TXw]k3ޏ�-��9��d�|Ś�g�m�!qq&tx�@��t=}(Bu#C2���#�:^���La��8@:;#>�f�k.>:Ϸ g/�67j�9�ِ}t^���)�����tc_��?�^4�Ng�� v:*��%֐��~ /��e G���zq���;�N��%���Ì\{���Ψ77A|M���r��[�OѶ�e���'g�`?�WK�ϓ_�:��sP�E�ʸ��֓}�����#�.�}���see�W�;�Y%��u�IR">,�%��>�sSW�@:ɢ0. ��f���ׯ1uufb��<xp�x�<�.�s_q�Rm��n\rp=����o`��>5qt����^6�>W���Z���Ŝg�nU�+��f~'p����&�V��*�q� =F�;��u}Րx�|H�>�7�U��Xw��8tU����Լ�<T�b\~��Ȭ͏�bd��lS��� �Ά=�.�q������~� �O��uf}:��xʙ�H��xpz��_���}� >��%�~N��8����4�R��W��8z�:����T� ����ˊ͈���n|Q6�|A�C�۷M�/��E�������GG�����~[!�#{�qu�.�o�7�w��0�M|�����z>����e_���x����:���l��g���|� �oa �!O���<��/��G=�sb\e+��~�Po��#�7K��ҽ�����i�>�S�����4�q��.�\����������Ct��58/�yb� �}��;�}N�]I��T����;�� հ��Y޺��g� ���u�W-~=��<Ϋ_ڄu)Q�fv6��i���bKρ�s�Oy�̿���.�\���5Kw~v��E^�s�����4����I�<��S�W;t�V�߯�KOX����t����Jqh��h���q� !��S���1p���ύW�����h�|C]U�c7�0%�i7��9h�|�qY5_p��}?k*���qϠc�����Y���?����Gܼt���GݙK:�������o�#">Ѹw7w\u�Bq�p �b&V�Ng�F�o� ��%��w\6� ����Tgz��y���ĸ��M�+1��L�no�$�� �ɛ|��JTqS������Cq�?��a+�/,�̗5l ������Mb�偣���j���e���L:�Wy��N�n��� E�iH#���4"��Տq)�8}ۥt&������KW{Ou\�U'�Ra8�x`p�5����">�^6�ؐ���Gp��K����� F�F|&��a/�i�3����ƽ�������6�¾ۢP��6d� ���n��o(�S]���e6� w\UD�<��7��$��� ����L{a�+%���؎ַ��BN�t.�j����jZ����l-���G�Q��m&���h�?,~:�e<���/��,_������`^�u;�A�LA~f�s�D�)V�G�L���Q5H?�jⱷ���
}�= �$��:��)���s��|7����fw u�W� ['�qU"S^�m�$��)��YU�q�<�T9Lq�}`~��٠/'4����qep#��nY~����.��e��fӺ7���騏���*���I��q٪6����xNѵ����Y:��Z�����֟/E�UQ�8�y� ����J�#41ȟ�ϲ8�oE�kJ�3o���� �> >���qz!WM7j2���b�c���$Ga9?�<O�6��Qg/ꔘ�\ ������x/Ė�Ha����=Px��h^����I�\�VuL'�F]JJ�+Ƨ2^_l���q���W9�#����� ��3��~I ���x]�["��Z�tY�����i\+���2�1�Q�c�:�z��s /[���.I����2�p��<T�Z?H���=:���H�绂�� �G:9�u\n} 䪍Y�����E8.n�üس�x�Q�q\�?���W~��q�(i�kU�/x�Q�;dp}��*�k���bK�dTO<_�w���`_go{�@��%td�J�\��9��Nլ{*�um����l"������3�m"�K������_x-ˑ��S�Mb��x~(��Z5.����8���l���
�_��6�ٯ>�qup#��)q�=xr���GBGn����zDW�={[�K�qV�4��H:�Z�������o7G��8X�����Ϥ^����"T�qq���8�ޒ��k!����E޲\+���Hj<3�E!?E$��T�{���{ �5��#������Uv��nEu��Uz�s��>��;15�A��r<{(����o��t\Ŗ�?\'���}�u�����R�7q��{q�[�����}���Ҍ���g_8�KB_A_.�}W2y�����q�Oj�ȔK
;{ }�Qa_��'�ܹq���T� ���y����#��>��N�]�T����1�y�1��z� �3~�������ผ3��c�C���Q?׻�`\��r�������g�Nb���3��Ļ�Uxv�����^�ai\�?���k����c�s�ՠ��#����qWe���wO��G�̊����cs�H�>/��c\S�$ƕ���9.M�w��3 :�\ ��﷡n��ߡ��%F��ǿ���By����=ğ�m��ttL3䳌[A����,�������pޙ�ϙf�/������Qg�������W�C���<����%/��R���y��CGN����&��3S�?�֋�n�Bx�Y�-��x��叛�������������#��9{v�Š\���/iFy�[� 7���9����Y���b���Ş]���儜�o^�� ^���
�Ry��L�>��L��y�E�?��_S2;����LX]��n\��l�c�-���-���:�q��څ��\ֈ���9|N���p\��N��q}�?8/v, ���F�׃�*����O��8xq������r�{�"⣶�ĸ�T�q�8�}�n�eo�!���U䧉Ϡo��|�����������w������7���/�v%���៰�����(܍/N��xz�|�GT�I�:su���z�)uQg��R��ܩE���뛩`��.�8}IB��~�ϧt�z����Y� ��&�L�tu#�{���1��m��� O
{{i ՝Um�^,bf|�E�m�4�o����,�d�?Ǹ&n��{ ]�e#��W����(��.���#�`��l����;���سE㺪��n��{��N�c�w��:���0��Z���lT��y�&�m�������{Y���,7��hy ��c?�O��� X]�>Ƕ�øj�Zǯ!~�� |N/����M�9[�+�!�D�ۀu���wб�{�v���QxѻX���%��Op+�ﲒ�P��֥7�����v;{��Fi�Յm9��׫�|�G�yv�f��S���3��ζ�xO.w��?J��a����^:r���/�T¹ek���n��D^SFg����g�O�>�[F;nV�^�_oN�ZY �(�&����^ă�� ����o���r�kpv�*��� :&GF���>�z�aQ��y�]��>1��������БMÉ�_��g�Rp���N�>���ig_ .^�D��!:�4�SY��WL�x��F����NG.��x�ƈ������<�� �%���?F;�[�{2�x68K1���|H]��ɒ��vD|L�_��v�x�@����b�p�>����n����v�9W>5��گ�'ƻ��4n篈�=0��~T\=�I:���T�����Z���Zb,��8�b�=�|Kp��h�z�G����6�x�p�>l3�ԕS�>[�"��S )@�����f�'���|�|g-�a��� ���dშC|�� ����;i����fu�\F�N�Y����+��Ń�wx��2p���T�1.�{��z9�����u���=x��5i��.�P��8 �R�
9?؄����3��d�'�1 �{��růu�>
�b�U��Þ�Ո�9���>�������8��'���Y
�Ҫ8wY�=��:g[1�y9\ ���,���Pp�q����T�&�|E��ູ��'` �wYN������_ Ϊ�%����p��;c0/]�9�WlV�b��_������D��Q|j�������sM(�#�_����w��'G5�c����O���bJ[p6��*�{/�s�Apq~�4��f��y�0/6�<�+����|���Ve�͘�d�3��J����M�XU&��7�"���S����s�=��aON�O�&ʵ����ϊ��o�eg���}��Yg]�������kj Mo���MPܵ�^���k��Z��08��:j|1��۶ei�4���u+m��9s��t��"�0�q����n����!��R�]7�.�-K�/�˽)�E���j�e<瘳G�c���I3�ޛDO���8 �޿�q0���իb�X����������/>���dO���sq�M���_^$q��j�Z=w5�Zy�S��^���$���m�5��-IGw8��v�DS���^�<��\�ȟ��������y��g�ZÞ��#<?l�������b����K`���\��{8{^�8o��x��8ԡ�Q�;��?7q~���;H3�;���N_�#����d������87m��7%3C��OO��u�w����?|�$���(����GȾe��.��y:���p�����<�����������Wgž�z{���(��h {�z7�Yq33�k_��G]3༓c+ϲ��9<��L�\�:M�k������r%V¸���ɫ,��er~�Ii)�IoAG/ 7 G��?iE�o��=;� ���O��8)��f�N�#���Āܨcv�p^</�UiƠ���d�
 ?k$��k�A�K�U�lM-諤a4��Pҹ�~�XM�֥����%PW�ڲ�����O�}!�5�ˀ�
I�c�t���kq��~��U�3�˖t��ݓ�oK����˴:�.��To����?�����z����.�ݧy�)ػ!�ڏt��G���c^�����8:�g B���H:ųSܲ='�{t����W9��|��٭k������۫�1/v$ ��X3<�
�Z���:��7�VF��� q�{P�d�mEף~5�닐y�g��1.O>3=��ɰg����h3��ӷ��.k���헒�GO��V���|�Og�|��U�:ŧc���7 �`\y� ��)�������_|������;[����&�g53�=)k���U �UC�w��1zߩ;��W��Ϧ�q؛��ao���:�{�@<u=�����W��o�|�T����=/�LC�5��y՜�p�e�iΥF��e�; �F�6�q���>›���tT�H�[�T��,���gH�Ga�g]�tt���7���.����a� p��w�m[��#j�&� ��w���t\͛����܇�(v\O,�~6H��]Q�l�n'?���4���Y��ƛ�]���kŘ����fs}�mJ�kU�j4n���+�{~���L]p��dF�7a�
���N�n&��B~��e�g��ao I����1����+���%��|ew��� ���2������D��qc��T�O}�g�]K�CEl ��Ojʟ�]S9}m��r�z����q�.:"Uqp�~,����ޥ���>��[?go�^B*Ky������-�q�Q�wH��L��={y~�UVӼ���{I��1��3��"kq���?|���1�}��y��}��֥x�D��7�jC�u�n7�s��QБ�c) S�3�4�u��^O��� �����:*�����6�8��d��m����Ws��Oy5�uח� �w��=���>�ofP���n��M�����`�<��vN�?����]�}��^kj����Dg�.�������z�1�y�\o���ً��0�)���U���t΂�]��\��ꡳgo���HE�Zu�����Pg�b[�Ou{v�����G} �� � �5�u�?���o�=����l�y� ,���y+�"�سQ��u�Qy�w]��X_6�����4n���<�(�����F�ĺ�O*�}ެz�յ��<�΁��Y`v\�\ q0�>#�� �8;^��s�~gjfT �}� �b����uB��}q��y�28�X�_�ø��W�#aϗ$$��M�ÿ&Ǹb�/���-���O�b �������?��@<5/����Q�D�Z��7��R �����,1��?;���[�"���ʧ�e0�, }�����VW��{5��ê����=�
뢺=��l�\���%��>��Ȗ�1��r:27�>TT�:��D��T5�� l q��ӿ۫c��>ٳ���)[�:;�+�M�
�眝�ϼ�З{6��F�b>&���f��$f�6誷9��MO�d�����������^[|�Ϗ��x�\uo���GfS>����<���>�<��}?�:���&X }Ѭ[������[J}s<��9����]<�z�Ppy�)����-h~�F�}�2xˏ��ϩ�~d�W\v�T��I�7���3����g�'�q�S��u|o���p ��t���ԗ����M˭���ޙ��� ��})2�`׷QK�VT�b��?A�[�y���-p���t��-�Ý����+VI ~�8�c���m�4��~�CIr���U��eI�s��/���f�?��s��q~�<^+�-�}�)�-�qu�xv��oP�M�s� �{����y�/�+��~��KE��g r:��,�Ko��}�����nN�ˬ��rM�s�S��k�F`]X�K�wz��d���X�Mx�|� uIn=��d]��O��.��I��ΫΙৎ? �Ѷ.����7����>�J��^����z¶I�)� {��~a��Hc<;�x;8o2q��#n��FA».��1^�;��K���e�_�s�Wڂ�*����d�)��:� ��n�V ^��3^k�_#��A��[�{ �׊o�����D�����UWb�����2s������зag�?K��
�?2�+���0��^ό�탕�Go�>F"nf{� ���˵��q~q�/6?�-��.K�����}�|Ib�5 �y�䴿���q�� :3�7+�ep\l���x��-������]�����x1į��V��6�p�~T��z����kE��_A��>A����=�u�r0���̰����� ��JR��ybW��K����V��b��&{A�H�'��vkӄƵq1/�yDV�������?�����,�������|K�ӎX���S�ώ��OO>n���Z����#��������W�^���ꇙ|����XW�Y�%A��%�x������/G����v�kp�sp>go�>��?�jtĮ�y����������b��>V�_S\�Ơ/R� ����^l��^�?m�������:��2���|�f�� ����21� ��S�Ԯ�� �V�.��?֟ fל_X�٩>��| ��Ǽ���hY�X�i�V@�w} }��b|������y�0?>�������؏rh�P����/]�C����)��ྞ�j�u�����^I��]�Vy��Y��,�N�u�Rb}�Z�����i���C�=4;t������b�����Z�x�)�`o�����a��z_��*�wU#�I�¯�p�Vʓy�}Y�����Vn�#3T,������|'w��K��%~;��]�y��j��"��T�UJ�V�� {��⯇'�������ۧqv�KVZ� 5��ao����9�'�J���^�uQ׿�^Ĵ�q?$C��OG x���g'�9�>'���%�G�o�������ddp4�S�Ȇ�,�l ��-�9?y�n�v��� 3;.����<Gb���>/f<�V�q���� O�8�~� ��H`�e�s�?3�)�[E]�M �^� ̈́��jVp�d��a~ŝ���\ | �j8;z�,�~��D����?���1���
؋�����_�Oə��?��͍4Y�7_�� ���ʗ��y z}��.s���Q%�~T���K~C���y����sm�k�����{��������[N��y w\�Rm����g�t}6u������:���NEa�x=ŭ��9\ߦ���E;h^�R ��,����
}v� ��D<�yuo {Y�w�������`o�悽J���j@�n��ug� ���^\T)n���7�����X/;8tl\+���Z�� � \�fD}Qk�Ǣ|ā7�=��}‹�>�O��{]��}@+س�~�ѳ�c� ��*�!t���t.gB��o����6������f�Y؋F�����~O��Ӻˀ��\�y���]kJ�!�����/�~-�Zy�o����v}��ia���!������r��0��.�N���]�."n�Ġn��z�W3���K���#OD�����R^�{�|���a\U����o�B���1��kM���� ��U�3�G���u��ob�Y�׆=�>�82�ٛto0.���?��&Ƶ�(?y�#��g�ZԂ�ښtBρ�G��=�Ԕ�"�>p�e�m�'��(���4g�ͪ����z:n������&pU� ��9�ʌ�{t��t��M�_�� {����Ŧ����%��+6��Xܜˋ����C��
���'�I7�90� �[�ŧrvp��=ŭ6�J�u b^<\C��)D�{�Z�FC�y��An�*��M��j� :O�|I��Cp���62�x���v�9�2�|ԣ��7j�����g�&!�U�~�M�(��@+3| ��=����NS���C����P�]7|�G�������ȗ��K� ���?�C�:��zmsp}+->/�́��������W��Z��-����/�W؋�A��\���i����� 8�9 :lz<�Gϛ�w�@N��?��s����d��N���qJ��R�d���<б��a�2d!��ܓ���WC�ˮ�g����M����瑷��d��}F��� �C9�W<���|�U�}� � ��8ü�������*����.�%�-����%��7)�A]�n&�7��b]X�����!䧾�qfÖ��=��f���ꕸ�R��:w${>&7�Y҂�\�e�gsv o]���7_�����Y����>l)�M�}���̍�T�
�f>�>�͙����)T'���t^,�s���/���֨���5k���EZҹV8��?* �R�ľSKG�8};��E�/��M����,��'?G�f����^�W�g��*�W��4�Y�M��%��K�/�&���5�YCIu�es��4�I��(<���~���󠣛�"��U i�؛|઄�i��z��/a^r�,���T��k��"u�a�b�^j#�a�O�6�8*q �#݋�'YT��,��^i�-�x.��q]��>+F�z^��(��r��K$* �� i����
�~Q�� �z�Xʇ���9�/��g��S|R�G<M�3��ہ�H'�;_�h� ����/���A����2����N���^]�<�(���v���s��s��U��{b@<_�l��S��b�d�� �ӑ��X���ζ=�s���G�Y�ާ��ג�~�����*<;�W�Z�׈���y��&��������$���COt���i�M�ݹ��L��.�#�k٩ɾ�kd�ť��ڨ�)����ɔ��R��'���z�_x}6��/śwC>� }�:.��/i�V٦�����k�'1�����?��,a��N|��ֵj� �O�����ea}M����jKr��NQ��Z�:�g�(g�k[����%�p�ߵ���|_p�ڈ�K;���l~r*��}�K��I�����7���C���|�ا��a��|��Y����2��`�պ͸�q��d���6��� �C��8;u�֭��][�tfǵ*$�V�����Z�uU>�<�ޫ�|R�'�7��n;y��F��� 8.���峛t��S"��M�8Z��)���Ξ-̵<����15��f�Ž��C�{����5K������}�i��#��D ��1ӿ��rG��7�H.ӡ��v �w�����B��Z��e��|ry� ��ڜ�=k��?��`g.ND�k���E�E�{}���*����]�0/�������9}����lMF�܊��&��������Z-[w+���q�S��;��<s��M3kO'5�*^�m��t� �lWg7yQ~t���鈑G�����M�a��B�*�8�x��k��+��S�s}�4�Ao�w��� ������o;n}���Q��;�UKao�.��wy�RU�����Ai��������3����.v/��Vk>~�v������u��U�����7���D���̔�?Q����;���ĭ��#*M.�s�b������oU�z��I���鵭h?} @^�9������g����k����b둟�}�m��A��\�nb�3^�n�'��zTs����M�uE�lH���{sy���yy�"���������$p=�����7��,[t���_jo ���Q����;6�������=GT���$� ?���O�:2������w� n�mC���e�N���5��^b�et4�CH$�s���㼼��[��hT����.PolygonVertexIndexi��.xM��UU���FE����ADQ�SRZP����n��V�C�CEB�C��ÿ��?�s����]k�s���8\o���be��_,����葜�:�<$39��f�_+�$����)��hgg-�z�� 3KǍ�$����G9���'�,�s�����Ac4#b���z����Y�'��ϡ��X�"�LC���<�V����� ���>�}��.z�~���n�/�k��o&h�~N
���)�y��H�(��������� ':�:��y;�X��N/�&�������f��sΡ����3x ��vƲ������Ӏ?�����ߑ���N�O�O����ޗ?Ѳk���<���>������R��^A?����]_E[��Dۧ�
v���]�9��÷��}�:�w?�:̱?�9����~��7-�:��a�:��
ys������g�����z�rG:�3� x���{��29l�:�)t&�i2�Ԭ��V?�O�fpfr���g�t��p�'񭛛��nN�[77 ����q���M։�e�����7@�(��|A������8��/'��C!?��׳�ݐ�{�:;^.0�|O�78��gm0:7l-�s��;�}�Z��渗=��|��l=���왏����3�������6y�� !��Y���xf������������ij.�5���~]��{�沗��8@�@� ��ܾ�W�!ߑl'�o_{|3c�$`O���pO��e_}�h2����þމx�}�G��Ff\�#z �S�=v����G�;�O���ލ_�Ⱥm4��6h=kΙ���E�>����@?ᗆ��Х`�;�� ��] �|�w�[7�3�{����q�ْ`;:+�'/{��;�����k�c������C�����0��g�ڳ�i3�^�Jf{m��35�����) �k�ص�n��o�#���m�E�].~@�Yۂ�����f+��h={6�W��K�m���8x����'c��y~��V�2p9�9_�]��s�� Ϛ3�^�G��+�5�
��o����n�ty�,p/�ྛ�#�㜍�^�=ߠ͚�] 6���ހ_6� m��W�Wag9Ӻ�/�U#m����h�� �z֖����w��<�vD���{9۹��`{�ˬ��詰�0���D،g�n� �E����G���� ��:����º���հ53z�@ tu���usk��x�F[ �z5���u�j���g���e�z�[یv�����3���g~:ڽ\�B[�F���L+О�����z����#������;��
v�{��d���%h��Z����c1��3j��Aw��3�`�a_���>��0�9��eg}�vF}�����l�>���Fڌ����E:����l�.�:��m$�4�=<����=+����n�g�S�g�����ّ� ΰ�zN�g�����h��0�����[��+��&�Ϧ����|�����4�{�&x����5�{��M�����u�x��3�gf*�9l͙z�OC�n
�{�}�����ׁ�����6��f�ѳ"�y�ߌ�i ��{��?����ͺ��h=�[�W�O^�$��53�v������̞e ��v�g�n�Stg�~�`��(����v��'��)����7��O��z���`{������wE���~#�$��� ���|7�{�}�N&1u�g���[�}�~��m��C�I����>�o�
�Ǚ����?�{�^����}����¾|�^hŸ?�U��� �� ���z@�c�#|���?�[������E�g����?^?p���%�t/k���=��;��u|����e����g
��+�ӹ�i��A��f\��T�
=��m�L�C`�i~4z��? :�?�G�����:���m��)Γ�Zg|=�O⏍�?��1t@���q�Ys���]�53zS� ��7 ��׳��k=k�LO�ѓakm�z3A+���� ZϚ?��s�a�����7S���*�Ľ�W_�g�i�Etxh�����k���F�u�����_��}�����^�E/���z���E��2x9��ֳV }>
�u�
�����-���7�ka�s�Y�=�k�W�k@�صg�n%�u���� ���g
��C?��Yփjh=�T�g�5����u��]���^��*��f<[�װ�p~�] �~�t��@Y�߰g �1��usUўe#x�%�:�ӽ^��� ys�7�j�f���G�c�us��?�߃�h��)���L�7�
�?����^f�����G;������CoE{�^���[}�^xO�o)��"�^f����H���[7��3�^D{u�=Si����f��$@��J�����ֳf�3��蝑��_4��F?��v����{���b�?����.t,lg�����z� G�g*��,{"�Z����{�'x]��f:����{��P�g��{�F��w!�;�g���2_|�K����������'�� ں�,h��r���@�Ix?ȇ�����C�A�m�\�(
�}6g^�4H�> [��sh��Ͽ<e����3x�?Av��:�F�Y��f֞������z��/��ͤ����L=g=����L�S����q����4����Ɉ�~<����۟
?%�hO��t��r�W"|��$�߉z_�i��W�{^���(?�^���| x�^��h?�ּF={���u/��3ړ�|=�f�M���Y���%Cg�\ς ��k2s
�/l�kѳ?9�y�))�g��yN����[��ο �� ��I�� ��4k&�=]'D[�����YwV�����}�q�`�z���k��n�χ����̚��v/�q�ֳ��g��������;��ର�����W����cg��p�^�����|{����� ������0:���zp-�s��?|�97��{�g���
�<�d�����I|�4�|��lȻ� ֝������^g:�g�}�o�O��ɸ󝛗�!8a���<����C���`�h�����N���������1��L�0���\d�����h��?�y~���N�u�c2�o��B� ��X���+�z֖���Y'd�3n�Dh=���>gR�k�>����Wq}m��]�A�YO|v�L�3>�8+�f�����q��΢��~�|3�?���%�us�[�̀�Y77�l�3����Cg�����n� :#l�{Y7w� v��n�w��Y{�Fg�|���g�^��n�:;l�{Y7w �v��n�7��/��f�?_���t[��zs®=�u�E玴{9Ϲ~�����^f�D;C�:��W~ص3�ۿm]4���.�s�ߋ��T�^������q�us~����Z7��l�{�ֻ� ���
w���)
����f�S v�g�z)�=�B�\/���53z�Ao��Wu��� �^ �+�$l�O� ��mh�/��h��w���W��h��y�:�y����g0�:��~=���αי>[�����o-<|�$�90�E��LExh�֫ 6�+��~@{^kf��z�E��͛�nn+z$�ټF��tA[����s���k�K|����;ߙ��%ů��
��/W_���5�Z����h��Z��B{���h�M��5`��k_%���p�{g����Z#��(��6��י�Y���lmZ�k���~4ğ���e�����@�b�
X�~^
�A���
m��� �f�u�{����7�%��P_m����{�����f�f&�훰�� ��{�
�=Q�{ͭC���X����c�3k����`�k�������6l&��-�'��f�z,F/����{�C[7�]�����Vߟ�q����r�3V��Ή����z֜�;\��o�� a׋���9h��<t}�}0��31|3�I������܇����lm!�z`Z_=�v���d��G������wN�5w�)u��ΚA�9�L8�g~�k�
����t�'ދ��`k���� �{������
n����-�dt;�5���nn<� �/��n�����c�ٶ����a{��$f͌C;C?)�|$G߁];Ӻ� �D�38��>Ew��q�Ysc��`kf�:��h���Џ�����a��Z�T��6���{�!ڵ�]�0���9�C�8����:̱�/�>�z�=�t_�gZ7� �?���'f~?�sp2p�����C�C[ �q���1��W���衰{ A{�A�;��S��c� ���`��!��7�ڌ���@��̈́�9�{����5�G;�Y��3:˙��~y��| �Wz���K�}��{_�}�vvB|����z���L���M? ��v�=�a�?����� =�^�g��T^���?�L�G���O�Q�C�0x8���yςnh=k��wl-䧳nJ��A3����h_k�s|�pvz�{C�=Σ=�x����h��U���Nh=k���� ����%��Z������A�����z��"_mf2h��Om���k�������x����=k��z�Z���ٸ�&�Eh�f��w]t�����Lț���G�2�߹Wΰ��{? x6�����7;9_;_7���������sfUt)�6��x+����{��s�ž�{5���Y�Z}������f^�� ���X_��Y[ �Z̺}um�R؟��E�Z����g�N�8C_m��|���9���,��[��I�^i2o�W��y�z�~���Q���n�s��C�x���}s�7�]Wa�}[�v�^��� ��U� y��򻪵�����:y��}=�g+�3�[�o�g�a�������﹗���s�`����ף���sf����ɴ�n�3��?�| 2�@5�u�_���~*��Y��������*�3ꀅ�ꙟ����<���?��۳�:��o��K֞��[�,"߆�:��O$�^�T%o��y�d�'u����k���{f��nG~<�K�^����n &zx�4�fx#�D^�Zyt;�{��7�Ɠw淠=��{ �a�Q�>��}
�$���[�� ں�2�-�53z��,�s�Л"�k�m�g6k�e�g����|gxm���'0'��Y�^γ�?��^��<����z�@z|���E��x�� ���}M�y=��}�m�������O������/��^D��
ҡwG:��-�ߍk� �;s8׻v���)F����4Z��AQ����A��ugv������Rd�{��� �g~� |x~����+�e��>�7S�^�ڌ~I�^�k/������]�y��usE���y-��+�*�3��x�����`�\lB�� �9�Ά������Y}]�D�g�,{@.�I؜g��\f��HB�=r����@v����h��ZȻ��5��
��3ӛ��7���!������={z��O�r/g�_/�3��"\�ד��q���^�i������g�k1k���{���|ք牽��l�g��Y����hV�� ~V�sg֞����̞C��g�?N^�k���\�����S�����u���<�� 5�Kp���,����ڌ��T�?��k�Lb6-x&�X�3�gǼ�~�����������9�x�Y�~���= ���C��x���>�3���\^�]�&H��� ���[ ں����}6�����Fp6k�����Y�t�#����iO�i��ȏ��C�y�����q��[{�?��B�Z'�1x�B~,����ԠZ��}��y�~��w��<��D� ��$�:���7������c�5t
8>��N�����sb�f��/���C�= �A;�ߋ�D�Ys����7�)8��v�������?!��N
'���������^��f�^�W���y{�7���u��������^g�k^/-���e�4��6��]D��ǂ�����:���|�(o��5̛������4A?�������� ^i3A-|���y�g��u��6ھ��Ѭ=����&8�� ۯ6���G��ak����Z�й`��5s?� �B��\f�[��v���w��N�����y�m�}f<O878�� �+r���0�z�]^i3E���p�H�)v�ˮ��Y�~� �����$��K�E�Y3��
lG��?�_�t�K��2�U���Yv�/hg��F���o���#_Ϟ���Vߡ�W|g��+��f���EW�t��݀_^ ¾�o�/ [�W�9[��ak_��*��������us+�ރ�`����]u-��CW�����y3�����V���VD��������a{֠;��k�u�b���eh����{,�o7��5�f`��
LG�Y[�v�������u�3號���^x-��Z5�g�w?g:Ϲ����>C׃�����pK0�gm�1l-��G���;+�{���7�홏6�����-@�y_��vp[�^�c�xt ؚ{��;����h���S��K{�ˬ�MF����o�v�6�^g���Y{ơ��^�{}w���A�o�;�ֳ���`�f�� F�e�������(t�u�;kH��g�Ht<皷�����܏��]�`tOx ��� ���� |������ާ!`(���:��=�g �`�����¾��5����y\G�F�g�̺��h��Y�7�u��Ӂ~���Y��9<k�:��9��s��y����O����Ɍ�G�.�#���+z<�)����������us��"_mf6h����ѳ���)z*<�FO�'�h���}�|�ZK�\xN����_o xm���虰=�4; 4A{k��z�dzٻ�E/��ۙ�^ �C[7W�l.�K������Ÿ7��������H����AI�/��%�׻�F�: �M�s2���]��W�0�-2_�_C�ٓ��}h{�o�g�<��;�ڼ��������m��~m��1�7�QP�+x3ȁ���o`]�yΩ�ֳ'?z/l-��Y��� �� ��.�a�����M��e�\|�-h�|3e�ܧ�T@�����h{�o�2^�s��~ x�j{ʡ��|3��G@v�YkY�'`k!���٫ Zϼ���s}��Y�΢O�9+��e&�y3��w��zּF�=6τ���_/���=x��:�X�#/�{��p~�����w �Lj2����Kh��v�O������/��"y�ѻ������2����S?Zv�^�+���,�������@)�x{ ��I1����}��Fyk%�zW�y��ܙ��\?_z~�
��g�ϯ3]����p��Y?�7��Ѻ��h?+�@^���� ZϚ�O}��о������@��^��sv� m�:H��]gD����Ч`�!��L��p��y���w/ߧ9�{��~v��c���Ϡ�+�u��{���ۓ���k 9Zv�}��@���u�;�7�X���y�&H��C�u�c�!��΁���x�@:���m�6H�6�:�w����!�ܧ�����ΰ7�ϖ=�e���Sh��3>��0�/ؼ{/��h�{���eF�3�C���0G�' g�a�-�����e�,���~]��{����g����` ��v |��/�����7��$D{?<k|���W��ܱ���h���A�]�#t<�us~�W�>��f+���y����k��Z|���'�Y lDg0 �n��%��3hٵ�M��Ebp������� ��p�Nn�3™�����h�97|W�} ?3�L�� ��Dˮ����S��\G�]��{�I\���a_{�%��cm�Q���3�Gk���D;ϹS�cV��8Ϟ ��,�����V@�?�\&�
��Q]B?[��S�o���������5���w��K;#=�� 쬿�f���g:�����f���Pz��������O���W��?�������|3�7|}��˾6������zu�s�c��p0�!�9��= �l>p�g��َ`$�������WtIx臶7� .�s�������5�9����np^�9 �E�~t~�؋.�����a�f���F����}h=�����w����{� �
��<)C�U�� ��qO���}ؙ�73�y�݂. ��/��þ��{��a���<�~�~.���a��`���}���+�G�?��p�[�91��kv���7coy�����f��5�W����l�|�g�ZJE��r� �u�z�^������JpEf���ߍ�}�^����9�s~��>5 �����߳ �F��k��^�F���|��,���4� �����xN������� o�5����p�����J�u�'�ނ��
m�U�]��%Z� �]�>G�����Y�6km5�l�z���`��0c���hg�^����������5��F�3{^�����ڬB{�^�\t}�Z�^�<|gX�^�9k6�)�
xf�e<���:Ɓvh=kK�f=���kҟ�vO�/A����y����_�롧���L�������o����|=g����������������~k�n��Y�3�����n�v�٬��t�t�Y!o��u�����{���=��Yk��N��}��Rx%��n j�{D:�=Y���M@��ۀ�hg��ᛩ���g"�l70���wָ�W��v^��_/�������F�;�]���w�)��z��{ýb�������6k� t�g�� ����^����D{���y<���/��Qhg|>A{�̈́}ס_�o���y�h� �U���V=��k1�^����<��������� �(x80c�\g��0�L�Y�����^�>����7|�ֳ�=�'��>��������5G����}�uB{���{�u{����=��7�ϧ����� � y3�����q�Y��+ڳX���<S�lؼ�s@#��ڌ��@C���k�'��h�� ��g���=�Y;�=�,��=ݻ1ZϚ�5 Z���@���Y���Ռ�B�3�m֞wѓa������V虰{��9�3 `�-��=|�i:h���ښ��gO���>�l�g�}�羃�=�{�����^�=�����^x���y�}-��1d<��6�׳���Dޞ�wE�&oֳ�@���uuC���ֽG��|�g-�7��0��x�@]���V�O���������=��B�B�~m}7(��]�A/���������w���+�� ���|�ϼ�|�kAA���g��(�K�ў�^��l������ �=k�ѫ`�� �������A!��s8� ���� /Zv�z ����\�C޹���������*Q~} ߌ�#�{;ӽ~��9_�s���9�yAe�u����������E�������1g�3}~�Gۧ�6�g� z6��(�^g~̺��y������{�s���:���8ӽ�}�u?_/��Y�y8��=���M^6���>?���O�����Y�S�O/���� ����ވ����|3Y�= �G��:3�$����Wk���/E�gx'0?����h���"o]?|�%����c�c����x���d�����h�\�D[w��_ϣ�9��9 ������;������,�� 6�}���f�h={��}n8+�����0�>�~����<��u�}>\��;�?�N�/�_>��y"�~����Ќus~��|��F���:Kmf�&��M�{;Ӻ�
��ͅ��������=���c��A?��FF�Z\t��X�:������GQo�c��"#��I�};�#t*89�������2� l������ h_sk~F�|<���pdB��O����$Ȉֳv��D:�}�g�O��'�1�'y�u�0�3���=�g�s�+��i����;���>�|���=������e����=�usO������ _�T�Ͱ=����uy�� �s���i�׵v�L��·�~g�����e׾��s.(���
HI�*�~
t6���h�YY�N�_tt��ONF/8NƬ='��`3q��~� �Y�e�\��H�&o�H� �{͚K���������������#�۱�������<�S���������w+��k���,�{=��k�}�>�u2�u�����uR������]���wn2�����~���#Ю�������.{������|<�}��D��ϵ�0߹~��?�0Ǚ����Go��w�G�p�;��@l<�gs�s}昵��gF\�L�Y{�֋��Tv}N��u-�:��Uߺ~ �j8!���u��0��j�a3�щ�B`/z ���R���:l&����o�������B{n���L���zu���g����@'���=�b���wী�y�����O���6k&�f|&���y��6wm�ϓ���`�s���o��Ր�>'���g�u�S��ᬟХ����?�v��t����3����Zv�L��Yw� g}�~.�� �ڙ�w� hٵ3�k(��];ӽv�"h�ux��A����s�(��Dzp*�3�O�3�Y#_v����������F�>;����>w|����' …�Nt �0؅���܆�]�����+�y�80c�����ڌ��ǟ�/����x�G���Z7�� �،.���_�]���~|��]��� +�ٮC޹[���{�< ��e��u?�Ό_ .�E{ϰ]������� W��*�kt]�:؄�nnں9g:Ϲ_�_�ͨ���D�;˙��-@[7��q�E��c��j`=Zvm�ޫ`�>���^�%�-���z�O��hg��<t}��< a��e�2���]��g�R�k�Yx��E{���e����` � �M��nV����D7�[���pM0 ��X�ֳ���a�����vVȻ�t�:p=`�^�.A� ���=�3�����x�ޟ��^��n.ZϚ������杭���w~��}v/��;��{�f��M��o �3�z�f��V{���}3�
�G��3�=�'���S�[�m�d�}�OB[�?�m���G���Xt����>E�Y������ E�����:�[77��F���ֆ��>#�=`{�X77�|}��1�����` �7��B��{����t�m�� ��>����9�����5c���ѓ`��s����:��}�s���#�us � `kf������ =�z�z����B���Ѿ���nh=k=џ��� E�����ܮ�#ak��sV���Z��^������z*<�CO�]����o� ��4C�Y뀞[ y����[s��W�-Zv�힟�*��a{�f�������k�k��<���0g#��<x&h�����s�M� ں�h���}�}M�G/���Z��Z�����u�B��y���h=k�� g�E[7��%��{�پ�u�Ka�C~9�6�ϰ{���J�;�Yo�ͺ����c��e�x�Y���ֳfo\�,�
]���#�g$�����ڛ�/`kf���F�:��h��诇׀�հ��Ѿ���o���{ �믮�6�~��}o�c�us���g�<�����ћ�oA�����;�
Zv]���=�#��י���v������nPm������c�3��'����*�ֳ����z� �;ȁ�v�L��-��[s���JD��������?�Eл�� �O� (��n�i�us��^�ל�9�Fڌ��<��:�9y�`�������#��������wn.|�T{fg�wN�1���n.;��g͌��Ά> Y�'�s #Zv�}��ϡe���'���;�,Ȅ>_ι����: �Y{��^�Az��ڙ���ym�U���ܧ���8U�W���*p%� ��_��(�:�����9�]��a.����9����7��3s?lͼ�:��X4oo��� L���¹�Pt>88���3�祯�Ǚ�F�����u�� ���dz~ƍ��Hf l͟q>��cyg>K}Zۋ�W�����=܎_�
z��������aQj���Z�&_��������/�g��W�Y;��a���=}�v�;ýS�{�r�߸W�T�̓��Edgesi��x�c�XgЦ�mNl�fc۶mNl��1I&Nc�q��Өq�w��/8瞻��/���_ M��D$
шA,��x$ !�HFrR@JR����#=�Df�����"7y�G~
S���$�(MY�S�J�F5�S�ZԦu�Gј&4�-iE�с�t�+��AOzч~ `C�pF0�ьa<��$&3���`&���\�1�E,f+Y�Zֱ�Mla;�I0{��q�#�$�9�9�s�?��5np����}���y�^�?�� o��w|����|�?��~%4aG"�(D#:1�E���$ 1IHJ2R@JR��t�'�L�����"7y�K~
P���8%(Ii�P���Fe�Q�ԡ.�hD�Ҍ���hO�Еn��}��1�! c��8�D&1���d6�Y�B��e,g%�X�~g��&���m��`v��}��p�#��9�i�p��\�"���unp����]���������W�� ����|�3_����B�+a Gx"�h� ��C<Ⓚ$$#9)HI*R�� d$��Jvr����#?)LQ�S�R����@E~�
ըE�рF4��hC[�сNt�=�E�џ b0C�(�0��Ld2S��Lf3���g!�Y�rV�����:6���laAlg'{��>p�?8�a�r����4g9�E.q���w��C�7�yA���7��G>���� Th�!4aG"�h� q�G"����$5iIGz2���d''��K~
R����"��FujP�:ԣ�hL�ќ����@':Ӆn��}�G0�A a(��(F3�q�g"S��Lf3��,d1+Y�j~g���&�����d����G9�INs��\�2r���/�r��<�/��W��_������~�k���D"щA<Ⓚ$$#�$-�HOf�����"7)LQ�Q���4e(K9*�U�F jQ�z4�MhF Zцvt�]�Fzч� `#�8�df0���c> X�b���e,g%�X�~g��6���Nv��=�c?8�Q�q����4���e�r����q��<� �x� ��%�x�{>�����~ ��!�D���" HH"����$5iIOF2����$7y�K~
R���$�)K9�S�ߨB5jP�:ԣ iD3�ӂ6���D7zГ^��/��P�1�Q�a��g���tf2�9�e> X�rV�����:6���laAlg{����0G9� Nr����2r���.�y�#���y�+^���|����7B�� B��D Q�F b�$"�$5iIOF2���d''��OA�R����4e)OE�P�ZԦ�h@#�ќ�� ��@�ғ^����2��a,��D�1��f. Y�b���U��wֲ�Mla; f{��a�p����$�8�Y�s��\�O�q����}��'<#�x�+��/���'>����ҿ�pD "��B b�8�#> HD�@JR����#=�H�����$7y�O
R����)Ii�R��T��Q��Ԡ&u�G}ј&�� �hO�Ѝ���� �0��b ��D&3���d6s��b������:6��-l#�]�f�8��('9�.r����5np����]����y�3��������W�������W���D"
шALb�x$ !�HB2R��Ԥ!=�Df����$7y)Da�P�┤4e)OE~�
ըAMjQ�:ԣ> hH�ќV���DzГ>�c��0F0�Q�f �d<��T�1���a.�Y�"����wֲ� ld[��v����a/�8��0G9�qNp�Ӝ����e�p���]����y� B��W��-���O|�Ws� C8"�h�"q�G����Ԥ%=�L����$/��O
R���8�(M�R�
T�
U�FujP�:ԥ iDc�Ќ�� ��@'�Ѝ�����@3���d�K ��� f1�y�g�X�2V���l`#��J;f7�9�!�p�Ӝ�,���%�q���6w��C�7�y�sBx�k���w|�_���|�;?�%��!4a O"�(D%&��K|��D$&9)HEҒ� d" ��A.���"�%)E9�S��T�*��C]�Ӏ�4�-iKg�ҝ����K?�3�� e��h��D�0�i�a.�X�"V���ld3[ b; f/�9�!s����,�8�.q��\�7���r��<�!�� o��G>��/|��"˝D$��Jtb���'1IIN�HGz2��,d%9�I.rS����)Ai�P�rT���JujP��ԧ1MhJsZҊִ�=�LW�ӓ���?�P�1��d4cK ��d�0���`�����e�`�Y�Zֳ��le;f7{��Aq�#��$�8��q� \�
W��unr����y�c�����%�y�;>���|�?���PQ􇰄#"��N b���#>�IBRHEґ�,d%��A.r��|��)B1JP�2���De�R�Ԥ6�i@C�Дf4�%�iK:҉�t�;=�Io�З� b0��(F3�@&0�i�` X�rV��5�g#���V��A0���^�s����8�i�p� \�2W��5�s�;<�1Oy�s^�+^��|�+��I��:A8����$�IHrR��Ԥ!-��@&2���$y�G�Q�Ҕ��De�R��ԧ!MiNKZӆ�t���NO�ҟ� a(#�h��&1���`���"����b k��&6�vv��`v����� �8��q������%.s����6w��c���^��w|�_��wBG�-��Hd����%�IH"��R����#=�Df������E(F JQ�
T�2թAMjS�zԧ1MhJK�ў�t�7}� 3���#�I�`&���<泀%�b5kX�:ֳ�m�^�s����8�.q�����y�S�����%�x����������I���D&1�El���$&)�HI*2��<�%(H!�P�����@%*S��Ԥ�iHS�ӊ�t�+��I_1���d��8��T�1�Y�f�X�"���e�b5k��F6�� v�.vs�c��4g8�%�r����x�#������7��_��OBŐ��Jl��$$IIFrR��4�##��A.�Q���(�(G*Q��Ԥ6u�K}҈�4�9-hIk�Ж�t���Jwzқ���?C�0�3�ь%��L`"���4�3���a X����U�a-���&6�� v�n�����G8�INq�s��2W��unr����.�x�c�������׼�-���������'�b�a��D$��J4����#> ILR�@JR��td Y�J6r��<�%(Ei�P�
T�թC]ј&��=�LWzӇ� ` ��pF0���c��� �0�y,f KY�
V���l` [�����>�s����8�INq�3����unr����x�S��K����|����w~���U�K8���D!*1�O��R�� d" ��A�Q�B�%(E9�S�JT�
U�I-jS��4�1MhJ3�ӒV��-�Dg�ҝ��/�� 3���d,�d���4f0�,dKX�2���5�e=��6��N0���~r�����%.s�;��y��<�)�x� Bx�+^���|� _��w~�Kl�W���D&
Q�Ftb���!.�I@B�����Ԥ!��Lr������(B1JR�Ҕ��De�R��Ԣ6u�OCј津��H':ӕ���'��G0���d4��g���T�1�9,`!�X�rV��u�g���V���v����q�#�'9�9�s�K\�O�r������=����<�)�yA/y˿����W����q���D$2Q�Nl��x�'!�HLrHK:2���d#'��G~
P�b� ��oT�թM]�Ӑ�4�%�hK{:ҙ.t�'��M�ҟ� b0��F2�1�e���4�3�Y�c> X�b����d�Y�z6���la+A�`'��e?9�Nq� \�׹�-ns�{���y�sBx�k���|�3_��w~���.��%��Ltb�x�'1IHJ)IE2��,d%9�E�Q�B�%(C9�S��T�*5�Em�Q��4��iEk�Ӂ�t�3��Ao�З� d0C�HF3�@�3��La��������`�Y�F6��m�n�����8�)�p� \�W��5�s����w��C�7�y�sBx�k����|�+��I�x�%�%��JLb�8�'!�HL2���R���d" 9�C>�S�B�%(I)�Q��T�2U�NMjӐ�4��iAKZӆ�t� =�Eo�џ� e��X�&2�)Le3���2�,d�X�JV����g���V��A0{��~q�c�'9��q�+��U�s����.�x�#���<�!��-���*�] a�H$"���%> IL���R�� d"3Y�J6r��\�!�)@!�P�┠ e)G*R��T�:5�M]҈�4�)�iAKZӖ�t�#��JwzӇ� d8#K ��d�0��b X������b5kX�z6��m�.v��}��9��r���g8�y.p��\�:7������<�1OyN/y�k����|�3_��~:����D&
1�I,���$!)� iHO�����"�(@!�S������I-jS�4�)�hIk�ҁ�t�+��I�ҏ� d0C�HF1��2�ILa*���|��E,a�Y�*ְ��l`#A� ���a/�9�!�r�3\����U�s����.�x�c������׼�-��'������3Oh��h�& IJrҐ�td"9�E>
Q�b��e(Gy*P��T�թEm�P��4�-iK{:ӕ���7}��2�� g4c d���1�9�e X�b�����b-�X�f�����`'��f/���!s��� g9�y.p��\�*׹�-ns�����y�sBx�����|� ���OB'�3�Ftb�D$& IIA�HGz2���d!�)@1JQ����"��JujP��ԥ>�iJsZҚ���#]�Fwzҋ��g�`�2��d,�dS�� �0�,b �X�*V����c=[�F; f/�9�Aq�c��g8���'W��m���x�#������W�����'��_�I�Ķ��D&
Q�Ilⓐ�$%9�"5iHGz2��l�"�(@!
S�b��e)G%*S��T�5�K=�Ӑ�4�%�iC[�ӑ�t�'}��@3��2�ILa*Ә�l氀E,a)�X�j��;���F���v���q�c��g8�%�p����&���=���<�9/y�k���|�_��7���PI�NX���D'&�IH"���� d$��ANr�����(A)*P�jT���C҈f4�5��HW�ѝ��}� 3���#��Lf
S��Lf1�,d KY�rV��5l`#�b'�@�)^��GeometryVersionI|LLayerElementNormalI��VersionIf�NameS>�MappingInformationTypeSByPolygonVertexn� ReferenceInformationTypeSDirect�J@�Normalsd+V3�x��y�N���ӄ
���TJPƞ]�V*$I��(�Ҡ���!��,�<{��1�3��$��\�ֹ����>��w����sZ��\�u���^{�=ϋ�߾)��<s��[����I{L���a�юl������l�a��6��������N���ã�� ���=���K��͵q�j�G�f�'Ž��:��أ�=&%�.o8#�i�F_v������o�C� G?����%�?���AO�,=��C�x�6לj���ߪ�Ox�N���v+����1��By����~��3��h�ž�L{�6���a� {4ۊ�����=ƒA'����X*�x���W�J��W��ʶn|J���4ܻ�Ə;_w��� ����+��;���=�_�*�^φn�5j}����T� 75nQ�h�\��� ��CޟZ*ѩ����.�t��Z��o����Z������Θx�8a���?y���g�]�&<ZWe��g�������� �1��C�{^���x�w���%��E�ɵ'5F_6o\h�x�m,��
�m���r ����N�������s�?��4|Ju��y�*����N�컜^�+�7����Y���z�����g�_� :��}����w����R{�%�7�}>������x^��:� δ��ݶR��V��uiy���ph���ޭ~��e�dq��UC��xϊ�{=f���L�Ǥ�i�3� ��s틴��<��W��!���R��KO�s_f\�}�H�����;v�yz��WZ����}j�z�"�F٣�g��+x�k*(/I��m���e�k�O: ����K��>v�~�>T��=�~�}j�|��+�7�Y�4�SM�<�m��c3���y:���6Zܿi��8X�A�!�N�"^of�=�s�暌����eZ�P{�O8��x�O��w(X+��ʷ��+ݼxtd���{�k�e�����R^��o�q�oJi������_�K:�_�kJ�٫�z��U?;�|�g�I���o'��~%<i}R�,�@�?���3.�&<��]���h=�Ɖ[ T{�%��x�ںz�~�����w�j·�T���g7Y=a�+�7��t�xL��ö7��i'�6r>��#��}stޏ^>���;�����w����������Ӹ@΃��?)/���?��N<�������܊��m��ͣ������R|�X�>��^��������t'^�Oz���Y_��-�qL>����B��+Wj=�zk����6e|�I8�@���|��-?hu��gk�|t��;�4��ٶƭ�l4E<cצ�O: '�����N�����h�w����_����sD󹿧�h�k��)�_�����ۚ����?ȽG� �M^~E磠�c�Â�)Ϗ����F��Q�+�49�����
N�����;��?A��]l�0�I�/�i��3^����<�ɭ >��N�����);��C]�Z=��]��������*�-nޭ��N>�~���Z��8��K7���0��mVO�D��c���R⤓x�U �-����7x���Ã����˾;�xX��){��[b��?Zm��vH�{sw���;�ϚZ&���������M;m|��|��8���˽����y\�dɎ��/��c�n�퓌1������˕S�q��[-j!�������+h]k�� ���|�c�Z�J~����IjNS^H'��_��?�U�(���|�k&���xS�U�� ��o�_��N��� �-�u���T�%�O�7uZ��������ǿ�uZ4v��%�w���Z׭�7_�P=g�m���?���K��7{��wfHq�?
��G��fi~�NL�}-�I�s�:w�.ޤ����4� �<�=�L�� �y��n��3��3�%9�����%�o��R�����U��`�Qw}����ˍ�h~�ovx�8%|��<vVy�(��o�=�|��i�+�}�[����8��<�5��N� �@?�z�[��Ѽ���R���7�������^ۿp�}“ �Ir�����R����:���R=�?u�-�z�&�P��-����������� 2�w��T�b|�%���%���~�!����K�)>�Q�,W��_�o�P���Ln���wȩ:��[�8�p�I�T���x ���������j����3������O8�$�����?�ͧݼ�� �������f�N�.�w���������&+m|��+�ޘ��|��u�hi�3~��5��/+�'�t/�%��+Oލ���̝r����H�a��uF2h���\�����s�Ηa���)�]�Nq�:!^������� /�������y
x�e�~[�i�� ��%��΃t�'<:�=���76S�s.��X�¶�g�n����P�H'�i���sl��S��������rMd�'yꪝ����?�%?�g^�o��[�ν7zk~���p��^}�[��}U��U���T��G������"� �Z��>N�����٠~#�O�e^̋�]I듸���>7��'<ٓ���2;���ͣ5������T8�uw���w}|Cn����~�C���-�(���[Nr����'e
��퓂CT�a=w��^�G>]���3t�={"e�t�0Z�G�L^7��9ʍ��V��qQ4a��#�e�K�)Q�]��ȟh�_.�����q�;��yc��<���?d�}��4N���u$^��|����N���h��<���������z4_�~�l“������$�7�p�8�/S���禆{.��h���Q�u.U7j���do�LJ������Yj���'��a���za�nE��,�9�?*�b����5o6�����HO�y���5S{�Q���i�9L�?a�;;fZ:��w�����7҃��!��K: On�<��+4su���k���фw�ZL��4�E�r�A?����ޚ3l�`�=��x���&^�����K�)���ʛOI_ߊ��O3�������[�A��S3/��O��~�O����B8�4�_��c ����Z�y�g?�en?|�.���b������4���;�>�z~�œw�\g�f������t/�o��y����kވ7�n�����y5�1� �s���k_"�|����h��N�� JtS��A��x��?��k�*�~�|�SF� '���D~�/̮Y�M��:!���tN>��~����>�S�ڜ����/���O͒�]��|��U~/�Uͯ8f�f�U��o�p�I�����1Ϲ}�8���!��Kx�q�r�O|~��Gq�v��xɇh�@�L���2�����ċ:��pˍ�3/���*$����Z�jx3�w4�I��=�'|hi�>|i�ۿ}�����I�>�}\���?=��/�?�'���8"^jO��wi<�Wu�o� ���u��Λ�~��)�������ܮ�������m�R�G��_�K���ýl~�/KO�����C|�C�dwŏ��Ӹ�.q�C��?����������G�͍N?���e�l{���ڇoO����������>ײ|)��τ��� �͟T��S=Ӽ�8��Lk���/���0�p���< ��N������0�3�����U�P�ҭ����Z��YK����s"��{��n�D�/�+k��P�H'������I����Oo�?n|���tN�%^^A�s������pC��8�_�=��7�N+_q�yڷ!^ʯ���8'4�ܾP�����'^҉�f�S��z :PD�9�gp<B~1/��{y��|z�>i�In|A]Q�z ����V)/�>W���N���~�/���&w��?���Uo^�)������{C��A�Qn6�U�O�^��2�?�g�HO����~Ѹ <]ި�X��Y�խ����r}B�ƒv}�i���ϸ��//���јJMվ�FW?����i=@�©��L���͗��^��}čwЉ���e���P�X���f-W|�����$�:����s7�������L��Rxm����Ex����o@'�Ѣ�������4��;Ǹ��Ҥ����ᓟ�/��]��k�7���M��N�j�-�U���p����K���{�>��`0��;_om�������2�������ߤ_o�L�+<yh�p�O8�'^�/����S}oyI��o�?��͕��ߺ�;�'�t/�!�'��w�VBu�e�C��;u�����8�`��8�u�������S?^�O��ܦ~!/�$��D�������rT:Ö�Kgx�f[�/�����9�݇��ȭ3m>[w����O: ��%^�/�Oy$����Kq(��?�Ѯ��m�����cTf���'šz���n����߿2ё�`��}�㗟\��e�׬�1��J��~�Q�9Ƈ�%�T'���������h�D�^R=S�1��?��x�=�I��]�S�MS���?�H������ q�yO&�m�yz�~�?�������K�� :>��#���8�c�tQ� ��z��������չ]��7��w�_�K���7��5Ɓ�Kzp�/}G��Ky$��B���$�Cy$���x�{2t�K�N>/}W���o�������_D~���������S|w�����V���]�s�w��7�W~��Q� �^N�}��>:���p��#^���iV��v��������#���p�k�V���ԾLו�o�x���Bc]���ϻ}�R3��N��78��������������Y�O�����w��Â�_�٧~o4���>�����_U?��R���|J��p�{.��N8��xMV�Y�7h��� �kJy=�C�)>������������ዙ�����t�7����3����[w?�H��7�s�Q�m�Ox�g�F�>����Ļ��着׫���_��=?�i{��萹ީ��
F:�x �_�k�+ȼ�k�_��؄�T?�'�'^��x)��yA'� �u\r��Qt�q�ۢ���N�z��������|h��W�����A�Kߕ��N: ���K�kt^#��%�߈�ړ��������L<�:0����9\���khǵ��]w]�a�ky��B�)��6���}�ΌX�x�7�����M���A��n����)��_���}d������v��uN��8�ya���ʃz �������v�h�O�����xt>'���h��NX���үV���F�wN�z�G
*_��ڮ~�g҉x��^��1VO��I����S\�P^��p�S}�?�o��6���_�z�7������]�O� S��?+����|#| ^��o}�?f��v����8������]ߑo��p�L��'Î�o��������`�����z;�3��C���|#����K�U��k�I8��xiN���{�����pA���N�����ܓ���}$��z��Tu�q�{���{����/���=�V?��������N:���~����W������6]WƷ�W�h=C{�O>N>/}� 8����)��Η���Z�P� ����k��oD+�h�#\y^�[�;ᤓ�K���b��K���ߘ(��?��3]^St�&�'�����:��;�Q�N:����M��A��x��s�X���h��[~�;���6 �"nJϖ?��+�~���K��Tm�z7�׸� x|o����bk7>Fd�}ڼu�~oy�nv����nl�+C,(�uv��e�7�3���N��gM8�7M����t����e����~O��g�� �����d��<���Ʒ��q�? �a�s��ޓO���·[_�׭�?�i���~�/���W��Wk?�?VS��(���c�=�?����?���k]J����:/P��pz��x���5���ôމ��W��~�Ixڼ�;D��$^��"��#��~_ ���4��ty�==�M8=�M��߱���p������x~��xI'�R����2��� w���yqz6i]a>t�S{�i�L���cU6k�J��l�ǃ*��H��g�}Q� =��Wq��@�Q���:O�k����?�|�U����l�>[�ٝ�M�N��w��3�﹦�ģ�E���3�Xe�7Wp��7������ƹ�X���o���獞j�uTp|��9��j��gɵ���՞p�~��ux�U|��AjO����-�}�����ǡ���A��
G�?&<����}VC�و7x��ض*7;jۛQ�;[��'��$������',=f���w��� ���=���1O}��tь<�_� >��{+��,��{X^o�������&�� �gD>�<����5�N�5>w@>o �M�7<l��o��8��X/�(>��y�[�-oP�c���T^��0/�G�{�T�����O^ʧq�5���/�>�|���j�-8���dž� �䟡�]f��?�K: G��S~q��߱"�}� ���g� �^�q����������p��e��Ŏ�l|��Aw} �8�v�pq�=��� �l�<@� '���R�����̍���:M���| ������c�?�����o�O��</�$���x�^9�H���Z/�'
�y�� uH�i���&#�z����ws���Ԟ�N� �F7n��ꉷgh|���h|a}Bީ�s�����/i\�U*>���P��f���[��L��$<]^�O���B�i����a�Y�Rz> y�f��~z7����ŧ����)�;©�M:~�uW��.�7G]6I?��| <]ޠޯ��?��ӵ_j�����K8�#�}��j�������_5�y�|#����T���W�yڷ�./��c�ۅ�S�ͱu���2��_�򞛲[�z��J��-����������U�5p����t��G����C=����ƻ)垻�?t�s��uQ4���]�#�y�t�.o\�u�I�����37)_4��<F8��x��]U?�os���I�'=t!�������Y����/�z���z&ߠɇp�.�/��tg�u��E^���Eq�3����7xb�j�_ﯺ���K���8~a\'�K�ϫ���>������IW�;����wZ?�
��Z?�>M���'? O��T�����|_���ċ>�k�qm���˺�T�O8��<F� ��g��'v�z������'��b���:������*9u~�8�K8���K:M��5..>���k�j�H�.�l�y+�j�&e����P?�[��և^�Bl=�Jw+>�ħ�!�x��M7���s���'�_Wz�}�����n�G#7���>��G^���n����&�<��;�'�^��/�9����\���C�p��� �z��O���~�>*_V�y�C���8"�(<�� ʴ��n��K� uEyA|Fޭ�~�b-�w�Iyͫ�Kur���;�u���7��� �z�p�/������?�����<Q���������M��~�t�?�x �:!�pk�_�]d�9�����߉��w&�n��I��������� �z՗P���x�Փ�yP��~O�S���c�>�O8ݯߢkސ?����X��%4�����7��k��x�w����I'���b��Wi��c��:�2F� �^©����_�p׉[�N�z���h^����#F��_�\h����tо_r�[Z����N�#L�����KXs���0������G���[�/�{g������;��}������N�%ȷ����I�Gg����vSC�i��<婾7�bܠl��6~2n�G/\+<z�B��\�9��� ��;���4�k���
~)=Ԟ�Ny$^�|�`�"�?����tR����h�$�+�i�+��!ͫ����W�7*2W�p<���~�1ߩ=�!^�����,=~�+T��&�E�I'⻯q��W~��6������7ͦ����������{y!/������t>"�G���<_��D�i�!^��cگ �Vi�����������}x�����B�4ONz���é=�'��Ց�|�y��/������7k<�cڬ��������5��|G5N���qq(>��./�G���N�ot��͙v����E���|05�n�xRj�|3�Χ��`��~ox��_�&=a�b��N�O�>/������}��g@?��+��}!S��5����O������U��iu���Y�4�(>��q�~o��,Տ���j����=���=�����Ӽ8(���S�������N�� ̥~�����^��� �o�<��P�tߊ���O��7H��^*���`LWπS^��� /�$�| �x�7�~֍������ƒ5�\_2`�p�/��/��������軬u�������8�~/��?���� �{Aq���*�x!<]^��Cy$� �:A^��Um���f~��=/4n��'<~k�*��Ha��
�:��>��Ƈ:$���B�Q}b�3��5֟�O�������T����z~,����L���79�f�8����9�\��w���r�Ӛ�R'%�_qj��5m�{�GS�'�xZ�e�}x�`���f��_C������6���E����i�~��ړ?����y!��K: ��`]5�V�5��ؖq�פw��#?�����h~�k�R���e?^jO�����,�R�b�����7���|�og��<XQg��˜��?ͥ�E���/i~���s��wp�Oj >�$��B�x_8חZo�o�U]�W�:�|&��a�E?��0o3տ_a�V[�ޙ���~���l��}���薶��7(�s�گ����7O�v>/��p� ����q�Y��]V��o����9r��V�[��O�I���6/�I�}�IxP�����|�ˍ���/ʣߠ�l�p�T׾�@�_������6~��.����!�ye������k�\�/������x��W�{� �ߦ���H��Q���h��k<O����^._���u��{g�������C���CUI�p�mWK� �'�����w��ѶO2���� �IO\����?�z�K��?�'c�|o�x7���,v� �����l�ػB�$�W)>�$�| ޤ�ڡ�G�٫�c�� =O,����;ȸ>q�x�74���y�/�g���~)qo���}�����3q����+��㑳5��s�8�lq�э��k�Dw���)>᤟x�9#�>�O�p���/�C�)>�^�£�?q���gs�#�'^�KҤ�K�S,�� Og8��xI'���&���m�_��򛭮��j.�V��/�z�z��'oJ<�7Vq�'2�>�|i�7�����6��q�&;:�� ���p`���_Qћ�~���w�^ڇ��7�8��?ԯ�H���tߍ�3/� �$^©_�K����h��;��<����L��6��������р��߼��k?����]�Z����񶝺�}X��v�*=Ѫ�_�q����U礓p?Mޠa�-�n�[�����w}��)�Ux��Kx�ݾ.�$��K���\� �U�߸ݧ��|�z#����MNl�>D��������3�$<]^��6���|�����͇PW����K�^s���n�y/���~�����tyiߘ|�z ��/�{�Ϥ��ty�>�u�����S~.�o�g�I8��x��_i��y�:;�$��K��$<]^�ǣ8�_��A���K���I.�V~�F/�y{n>�Ix���o������q�B�O�7�_k��ʹo]���wd(>�$���xi?��`i\�~2��~>�'����K�@y�uD�Gf�B���c]��ݬzK��z�8��y�z��X����߱�����7���E��_s�����|�����cV��� �T�7Fg��=����Yjۇ'���Ѱ�)�'��p��xiߕ�����><��Ӿ"�'��S���?�����}Xq��$��_��t�./�!��$�������W��yx��]��R{�L����bN=o��yM� 7իk_=��cw�tou�tR�h8������u�G�x9�G�N�Q��v��U�x��J�t��%��� ��s>��s��F��y(s�œ�G4�Żk���|��o2hj ���C�oZ�/��~n����ƏV��&����E�xi��/ᔯty��KJ���W|�Nǟnt��z]o����/�=������]���K��g��X�����Q�m|��C�~I>�E�G���=�7�{�c��� ]_�]�(>�q���VO��=Z?�G��5�b��tNy!^�s����_�6p�oO~A�E<���㏯�֓k��i��d��K�s��ÓN�R�O@'�T'�����C�j��-�%�u}D��>�}%�O��Gkh�����}KjO� ��Jx�v�f�|�3������?�첹��^��R�oK�q���%OJ����}�Jj�� ��x���h�j�.o�c�h��n�}���Y�������a���o�b���~�/�Ԟ�E8�o�O�����>@����]�_��t�.or͓ӭ�����o��6�w��_��7�%�4�i�N�o���O [���䏮���8�K8�k��1�S�Efl;w_�M���!����or�#����S5v����}�?�t��ds�FO�N��l�O �/����A!7%��ׄ���@���O�Z��1�c��8a��۹��8�����B�OxH:��1hO� �?�@�uӰ�|�.\#����S|�#⦝��p�պ~��.=�<�I���}�!���u�c)���{ߖ�y���#��E8�z����%]?������>T�4.��~�p��������L�]����|�������3�����y1��g�(�gwG�/�O�"^z���S|�i^%^S�m7��;����L~��R���G,��w����{S�bF�;Cx�.)qF�1�]ؠ��KA�_\{�����-�!�b��Ћ�]�_���`��ɶ��c�����$=�����L�Eok���N��eݶ����o]�c��7��<��/6O��z��v<��<�V��_���ѾC�x�������7ࠍ箘2>�$������Q~�=zc �O��z�_�S�����E> uH�t^&=qZ��:$����1ޤ�����I���'�K��k���2��8�'�欷� �ܺ�͂e��a���6g^l�h�uW�����4~i\N�����!^�q�I��.�y���p/���O��Lx�����4���G=���g���N)>��p\'�s�1<7K�"��S�7�,�Ǝ�����3�S�]�Ϡ��{g�^k��ٮu�]%�*_ě�%=�"���x��:�S~�7���%��_x^��O�k�q�WWWϯ&{����k�4_o���t�� ��/���zΙx����>ip�e� @��<��P���[�j�����?ɻ^�C�䛿����mLk� ��8�p�O���u�
����\X��T���2��k��֍����w�e�k�i��A�S�w“W]{�b����k��q�7��K�cӵ����~_�)>�$<x�[__UG��w� �Ԟ�G�~T<�D_�V]����S>��u�� ��|���Y�~��k�����9�/��/�����ڇ�Oe:�S�+_^����� �9����S���{�~�b�X�_�������;_�טQj��������I��o�?(�Nz�u�\}/��8���n<5��|�l��#��x��4��m6�s����> ��"�d�\�^Č/��!�R���Ex��Q��U7~���sV�i �<o��r�/pd��S�����E�N���<^�M��_%���k���߫���Ù�\��*yԞ(�N�� ����㛝�ڍ���S|�M�����P�cM���O�T�x �z&^z�7�\A���./h��_�O�+z��pz�x��Z����k��������޺Ӯ���ͷ�d&�N: O����t�� �u�-o�o�ֽA�����������M��7�a������7���ɄC�����D��9m����&�d�sm�ͭY¬v�W!�1��p��R^HOT7K�yE'&�9�I���d��ʻ��� ��;ԃ �����w�i�)�����)>�$�| ��+�8�?��\7�v����0f����U����N�����N�I� O�yW��$C�e�z��[j�L޸A~n�����Uc�������� uK��R|��p�?]^jo�7�o�1_�P�����m]jۇ�g/�����N�gP��T���������Q'<�L�3/�'���fZ�Q��a�F�/���>hr��'*���o\��h���J����2>�$�| �d����������M��8�?<N�?o����VO0op�Փ\�PzH?��:L�7�k�(��;N�l^����l�x��#� J��txS�_�����h��Z�S���~�~x�;�'^�A�������.~�r.�ՍTWި�)>᤟x�+?c�u�E�%������4� ]5�������ì:.>��������':p����nw��N� �Ƥ]�����]��_C��:��B8=�o����g��b����'�Ӵ�Ž�8�TN���9w���g�=��/=����3�'��{�5��5k����y���j�����uz*���������x)��/�q�/��8�����?X?0~�����G�/�k���N8����۪���S�4o'� �9Ƨ�2�O����c#2/�����ΌDn��z�����Kubʜ|W���{���?Az0�Iu�6/�C�<Nx2gO?ۯd�v��_�I��������x\��|��E�G�/�I���zHWO�|�D��~_=_ �*��ο���ۄӼA�4���� ���G����|d�� ���oߖ���������ʹ��v�X����4[�޴V�Ǽ��s��=}�ڛ�����L�"=Q��C��Q�uZ'�5�]���|�����w������[G'n�����������Vw�Ф���R^�9d�O8�$^Z��/��p�~!^��`��������9��Q��>�L� '��K�����������u �nj�����V����#x.��E� G��K���E=�.�� hO��7©ni�nع��k�����1h�KuKϋ�����s��k.P�%��M��ZϦ��)������7i���T|� ��z^�|#<]^�WI'�'��G�K~�M�n�庵O���̃����:!�� ���h��Rڽ1��tn��u��Ckj�#*�B��7��[�_Ӽel}��z<e|��p�s��[:Gyy�|o�x}7JO��N�s�����������o��o��uW��u�Uj%��?ᤓ�K�z/���4���ꍻF�<�g��f����.���������V����������B��A'�0o o��t��s��������K��멾M�+��Kr���i�32/��6Tw�w�M�G �ּ'�����g���}���H�Azߊp_�K�y�<@� '���R� g�a�W����`���+ij]�<��M׃��C\¼V/�����*���󷥎�͑~zo�x�|Yzn�[Se��Gr��{�tR|���2�%��{|�=��������_����K
�垏�(>��|��t�Hq����t?���9�O��|��|�^�b����E�oQ������4�������ij�<n���� 5�/���z.1z�=wD��N:}�/�B{:���l��������U=OE��޿��)�=�GoYg�����<#/��/��(������ T?�{G������0��7���;����43��o������������N©������o��0N��n����E: X���7z��� ���w��<�t���k,������f�������/� ½�&��&���y�`�����7ϳ�ÿvɟ`�.=�J��z <<ux��o:d(~��]�y�_e�{��+������)̷�������)V�ߦ�� {<���uE��>oT��VO���._�8?�V�l�%K��of��wT��c���U^���ɟhSA�C:)>����%��琾�X>DOTq���[u��=�Y���}R������I_�|��'? OJ^p�_.���^������w�/�nxA��)���?j�l�����“�U�S|�I'���I�7�w�x�۝ҙ�?�ϗt�(���� ��%��7��$�z,�:�wO��4�����/�C�q8��ҵ��'yv���0��� �~��;�b��b�4~�!M����$�l���G[]��?��#�!^�i!��f��g���?~�O�?��t�4�"R?�lp��w�x�ū�����Z��k�I�`�����K�I�I'�4��7�7���'��D��F ��!^�����{�����Ez�m��'������Kz�7�j�6��uu�ʣN'��4�S��7>\n�����_�λ�� ����{5�&�Nd��eۛ�e��(chJ���F�7]��}�zx�J�/�V�1�4��»'��$/Tw�������K��7�i��������l8.�t���&��K}b�g|{e��a��x)������8A��g����'�t"����KP�����e�� ��������+�2��� ��?�KubrYm��C�����Y��O8�$ޤ��5�כ�Ty�WvT^��Ct�ה�#<�>G8�$<mު�i|EM�wu��"��N�O8�#���N,���M������.�W�վp��7^���<�����j7(~tb�� �q����N:��5�����O0/0OR|�I'���.��z�A�q�}�?/�^��<X����5�u�<N>���/����k]�t�˒Nw��N�/�zM�i��[}�t����t��D��$^3��"냙�%>3�:�O��p�[��u�����y�x������o�����|类��t~��=��Ӱ�#��>��/|v�f�kx�p͓���*��GN�~��NC7�o����6n�3�N{L�_���9;R���ٴ~Iʭ��2�N�"^oO"=����S4���P{�Oxr��n�c�| ��O�yn�t�.�������x �z���_�Sy�;���=����Gz�;Y�k5�<tj���P^�������O������:�:$^ġ_��c��W�����!����
|�y1��������'��/���������-��0O�?���ݾ�����{I�$)�P�\�B��{7=�q����a�S�������G�5Yy w=�2>�$�� ��y�捨�cZ�z��i� �{I����&n�Y��ͻ.��O�Ԟ��u�k]k2b7�OX�� 7
i~�O�wy.�Νw@g�ԯj����9[^���<�K8� ya����Nz�^����U����g�_��i�$<Z<_�|��A��8���W��ƚj�<YBz·~S}�?���tyI?���O�i>$^�N� �[�i\/}?���N�c'���O���@��8���W}��m5�xYU4�/�-�yD�'�Ȼ�����������p�9�;/�ǹ�Һ?z{�۟,v��^�������<�����K�!�&o��&��>��<|Q6�~�/�ޏ�蹽x�=�'����"��O �z�li���:����!��:*X�^���siB� '��K�����S]�W����ɛ{�y��K��oҵZ�%3�����:|� ��7���Z���W�>a�B�����'�j����Α;_9�w� ����v���W\�c*��8�pҏ���'?���:��,}���t�g�߈7�������g [ܦ�����{���n^�6g�y��1��F�"��O�[��0�!^�[�7�O8�$^��|�`�'��/����}�a>!^�/C�S��_�K����� �����.o������>i�x��O� '��K>�wh� '=���|E�q�Ǩ���_jO�B�Ì��{�}��b��FW��n�����}���Vi]ί�v������Z)�`���w|�����������!�℄þ
�&��(��y��Z���S ��ֻ��)~Pb��I���Ӿ���E~�>����҃��}K�Cq�ƒZe��0�S5ߛ
�t}���K�)>�� W�|���Z� ��n|��0}��� �i_��M� ��8��w�i���~Qbk��>=�My�r���/��/��}W����]my�A�R{f�n��P��Ew y���pX>w�t��{��Kx�v�5V�90g��W</�f���œJk��T.��2©_��z}.�̩죤g��._�'c��dvr��6��|N8����wPI?��p��.���Z!_���ty}��������� �/�����y��R^���;�:)�U��������"���i=���r���p҉���O�%n����=��>)>��x����mÖ����BӤǣ�i���w{?y��H�g0�O�'�R^�����Y�|����s�ߠ���?�KuE�O���Nu��P��x ����+��n��9�3J�"��y�x ��ݥ˛����f�_����j����p�|K*�'���\��8?k�f��:�����Ls��u����)��1����b6���v��c<a��o8��B�{��z+��y<��$Sq6>,=��7�����/� ������ٻ����Ǥ��S|½������^���E��[Bߣ���K:���K���Uz��3�|D�~>P�%<��[�wD�o�y0.���uEu��l��i����赡)yI� yờ��M�^(���2}2��%Z�~��۩_4�P�P~��p�*�'�{4?S�����|&���x����z�z?������u)�k�/�Oߙ'^�I��|&�|N�7��\{����]�Fr��t�$�tRM�N�,oR�s��L.�=[�Cq�y x�e�~e���;L��i~��'�@8��xi�Z} ��?�����N��p�y��WT(k���k��WR��$<B���WF�,W{��|�>�2���mc���׹u��"��יw����
N���� v�ȴ�͛K�Ox���������<C��W<�ꉎ�Z��W�����.�f�s�����^�O���ͱ񃅹�o�O۠�/����B|�%��K�U��|#� �C�� ����'[�������q�]� ����7Y���3�-�ǍG� �!��L��]>jO���o����̽'ge�q���� �?�-��/����� �;��}K�}���Ɋ�u]�����������h�Z�{��o���|O����?�҉��7yl��L���y�bK�����K�F�N�"��OH�34}+vS��i�������7½����o\r����7���x��r�tNߩ���%�V�i����a���k�Λ��h���^ա�a�p�C8}g�x��:YޠD7ݏ� w����F����Q�%�)��=+�����K8}G�xÇ�����/��s����3}a��N��/!��D��G����'F��C<ͼ�'����DM���ް�ݗ �����^V��Ô��MZi=W�G����O�'������g+~T}�������>��K��*�՞⤫���H��3�IW� ����V�:���1_K�'�Fx��U�����{�g��/����J7���-�q�C�����‹� M�po���x���OoeWW�O�K��xI'�|w��n�79�?̒⥺�8���<���#�4�f?-�A�)��~Nߙ$^�̷/��B��,S���`�+�C>o�N���I�Ts��}'WoSf|�q��+<��HJߨ��� ���}�`J^�&�/�������k�/����}^��?����S|��;��[���Ga��n>)5Cz�q�
�ՕNok˔:I?��x�����بT����xP7�]��Ӹ���W���n�9�h�i{�s���u^�6~��axt�����nVOX��I�>��A�#�'��U|��ӊC�!�v�
�o��������t��U��ej_��ǿMtq���S|t�|���Œ����?���/�!ߨ> ��(�����.T���>q�y��n�|���h�v�c���?�K߇���Q|�I'���Ԟ�Ny!^�t�uv�G�������姙�g��㾋����?V��J��ʋ�k���u���Y��/�U�����՞x�;���O����x1���S��8�⥼G�̵�
ީ�q�t�6� �!����|N�ᤓ����7Ky'��B�ə����ڣl~�6'��cr��F�+.���s_�G?G����=�����u?�����֯��ў��C�~��z��T߭����?��U�q�O�_��~��&�^M��/�Oן`r�5򷃻>��[�� �ё��m��̽�\��~���ٓS����甯������W�~���^S��o)�S �����ߏ��}�M�i~N���[jO� ����w>C��!�?�1� ��wM�=�'�|&^���Z�O�i ^:��~�/�T'��_��w�RI��y�����|#�ޫ%^�[��'�L8�9���[��k����n!?�7z�O�a�%ި̀�:>�W�g�ĥ�ױ��.�+5?��~�У������V���Ct}�V�!�����O8����~�&��N��U�M�M������M�uϼ?����ܷZG���?�g�������|�=N�]v��v���ן����{˴���U�N6���������N��WY����������cԢ�������ِO;/�gx�� �o��O�gF~*~�I8���H�����u,��dtz��S
+Wr�U��x����7u�S���r)��N��;��K�L�|M�W|�e�m��*��������������@�$�4�/�;���҃ߍIs�!��-�T'4�a�/����?�Ku�˭:�Ofi�ɼ>^�
�/�P��K����0oP�����~g�{4Cϓ�wh�� �s$A�Wܾ��<H� '�����H����3�>+^jO� ���^���K�N�A����I?��p�}7ޏ��=�F��s&���ҝ�ܾ��O��}�JZ���������9��L�56NRp�㫷L�$��*��>������2��8��nx\��[��Nҟ.o�j�Ȍ��ф�n�h����C� ����7����Ǣ/j^�+����yxz���$��1���g{��ߦ�?��:E����n�}
����cޗ����1L� &��w�~:ӽ������R|x���!6N\��������H��+���x�֭��WIOr�]�Ds����vk��p�I���2�}:�C8��./��I�!y���{1���Kx�oۀL[����l���y6z��������B^�[zO!<P���od�W������ �:��R�������y�o����J�=�{��_�%�� ���'���pz.�x��w[�=cwf\<&Y{����-O����������}ٛ��5?g���p���{l{���u�]xw�^���w�������ˑ�=�'<i�h������9���Nq������~pR߃
K4R|ƒ�E]K��ѽ�R�)��f����o�?﫽�Ѱ-O���/�K��q�g���wk���΍�n>Z��tF���]w����o���S~w?-�ھ����K8��x)/���m�:�w�k|y�f*_4 ��D^�����Buu�#ڏ ���~,����W��^�&��`�{�����T[�|ՉT��co��O: �:!^�D�UVOp���������ΐNA��|�� ѸY��h�R��O�=�f�ӛl|�����Zy'^Ӽ�Ƒi���'�����x 7�^Ym�$W��q�T��?�R~�0>��N��8P�����������!�'<����w�Bu� l�zw~�����o�S�ox�U�O���<z�������ty��+�|�t��ӣ�[o�j����+�}�}3� ���K�^��f�p�FݞJ9���A��7��^뫨��.69v�,�r���=��Ө�1��(>��򮩺���ۛ�}�����/��/��y�C�Ix����o�Sn��~_�x)N��3uc��i���[}�;����'�����w�v��̛4�D��7���u���S|�I'��cc�Y=��N�ϥ�5�P{�OxX���-��}HS�7~����m;�� �WNu7o�qG� '�����x����H��΃����N��FW ��͏7�����)��=m�m��M�'�>]���$��������E����{ܺ��'\�C��Kڼ��s�o�2�t=>�Yקa�g�/�o��_Sm���w������O<:��^�g�u�W�ݾG� 3,�e�����ē������O�z����o���e��?+���9��~)� �ճ���Əۺ��Z��� ���)0S����]��<N� Oj7��v?������V�x1/#�N˴��ͫ��ޗ�g�%��E�I�M�M�7^k�aJ^��@�/���$8�����ܪoI��x��?��:����>����'�IS�'�z��ɟh�ë�OVi�C�I'���'۸�3�5N������-�ڶON��d�,�Cq��p��x�[�mȴ��%r�̹1N�?TW�{�_o��Y���mW|��������Ϫ��_{��C��s�"���
���/Dxr|Ǐ֟䉮�o�o��!�0חm��͹z>ʿz�[�Ȼ��a��c>)�pا"=���^���3i������W��{?�ut�3�z5�1G���ߗ�H�}�3.��:lu�G����.��M�;�ߤw[���?Ԟ�>y���Z�4�%�H񒟴�I: ��ŋ�{�G�/���R=P|ڷA�hN�a��������)��|Hw���P��7 ��E�]����Y��U�a�_?�T���ut�(s���w���O��8�p�I����/]GN�B^��J�l�u�Y�Y��އ��6~�ړ�[ޯ����8����x����a�{g}���ߞ��I'�� j}{�w��[�+>�&О�����ߠ����[u!��1��ׯ���')7Xz�7����W��۷��w$(>�$��B�T�'��N�������P׭Q���[2��w9�O�/�C� ���Z����x�ۯ�P����]Kg��Ift���yeR�zK��f���m����W��O: '�����|��"���Q��aˁ�����5��7��߻3��o���ޛ�{>��=�u�z��v��6�x^��P����=?h���B�I'�To�K�IOt����>׵P���_“&�_��M�<Ο�j���. �~�yV(��Zw>����p��#ު�X�� ���${��z;x��p���\�n��:�3y�Ž�����WT��6L���۫���3�U�x�O�u�~�ma�\��[\p����E���p� ��i3��oȦ�#��3��6�ۻ�y���܂�R����������y1�������/���p����>!�F�%������E)>ᤓx����ۼ$w�~QR}����K~"����G�^�ю�0t�/���.N�Y�� >~���:�z�~�7��f�OTl��W4k���@�!���-����/0E�q�Ԟ���?���׷��5R=x^-����S|ڇ$<�����fE����^���t�>*�'��ø������~,�qr�� �vYo���)"��kK{~b��q����;㵮{�����:�G�Ϫ> �u��82[�k��e
j�2X�%^:�N��'�?�lʼ����x�R �Kz0� ���{���1է����wHO\��:������u�'�N©�����SϏ�cZk���Bu❽Z�~a�k�>@�K������{ի�WҺ�[��Pz(������ٴ��uKx��_���Ey1�j����� ��$�K���S�>�t������:3jPX�����,�󉹬��WK�4p��w<���ޛ
���#܌����fZ���I׹#����������y/�1^��7z��d�x���y�<*����*O���w�����q�x�' ����Jq� �����V�=K>s��&��1�F8�@�����ot��g�����72P>����{�
�C�'&X<�|�����$���/w)_���.i���ě�k�zH>Y��o�����c���s���ڼ�#�'�t/���!�������.ηm����������+�?A�?u$������^��I�Hy������7���K�"���-%G�SU>���:��R{�{���٢*��y6�s©n���Kq����o�������h��1���|��+�q��{O���B�Q©Ή7�Ǹ����*/�v)�%��~�ɿ�N�_n����!��S^�7(��p� xI�,^����RK���nR~ 7��a���[����;SփW�E��[��%����_�o�?.��uwy�a����deC��q)��\g]������O,V{�5y�Ѻ����͇7=��}�Pu���S��kjv��O����۟����!�ܑx�.s�u��Wq��os��S|�g�஗��,���]�����k�+<����Or�n�U������?��V�p�/�R��v��}���_#��:������It���c~��]���RI�'܃���K�/>��e����nׁ�uB��o���%��'��s���vu>���L8�9�@z�_�NC�{�K>�:�ֽ��o�i�R�9����VSϋ��oj����k=�ۨ����~��J�mg��y'�=����U���f�*{ n~A��7�󎱶]Xu��{��j�|w������t|��'j�ʺ ��i�^��Oٿ��|<���7����dXk�/�'�t"/�`���;��1�+/^4���S^H���S��M�s�.��$?�A'�����Z]��n._�̰��Vl���I�{�,S|3���,�^��}n4}��������ۧ�����xIg�(���f�k+�ѯ���'�t"/�����˭/��ąV�)���D9.s�J��i�=�w��'<���'-[[G/����h�?��o�}�������z��M�{9��� ��n���':_��T{?_I�/��Wm3?��Ê�^��ް�Ğ���Rу���e��w⬙��w�n���9��/�O8�!�pBͿI��,�y����/��/� ^._��H�����#�z����2.�^��?��������7����tR�tnN,�z>�xX���;��E����)�g������|L?��qŜg~����*����V�y8ɺ55~}�i�������˩=�Fs��x ����<ܧ�}�[h�D)sv!��E�r��$�2�mB*��B�BT�Lɰ�d�x�g�8�!3m��H�T���{���:���]߿�un�s��y�5���M7�2��y���)��� �2��'n:m��Tͫ)? �vG����t�[���<�\�L�O��S����K��~32~�jT�o��op5�|p�گ����+|���o��+�]w_�#���n����t"��x��s�H�+]�޽��~�P ��o�f�����h�o�c��nڜd�6��6�ש^Q8��Bq$^om���7���-�7~0�ڣ�7��9��?h�ڽ��,�'<���u�|0�����da�'^��=t�"�����;E����Cw�u�[����粌�����K�7�Ջp��F������M��w)��Kq���Xm���t�=�ӣS�����x��^^g�����������Z+�߷���w%���E����7������.<@��{Y��b{�~uB|).�K�Ջ�@8�s�7Z�m��c�Vo;m{X��xk���y��-a�t�C����^�K:�9y����3��~��.;X/����Ӆ����pj��K�]|��Ŋ�Ws�N�_n|:���F8��x�� �ܭ�ǝ=F�lЦR��*���_/ᘟ�瀇�+�7~���/�6;3�o�<�/�`�Q�ݽ�^��\a�'���o6��"y5�� J�<�R��^X�f���ym�:}��U�%��E�����隯�Y���7M��t��Dy�)7�J��C���3�Q�&'��n�:k��������V��6����-����*Gx�����*6(g�%��A`�t"�8���}�y�_����o�� �́���U^��h�f�=~��I���2���ַ*�ԩf�?�$��G}�8`��e)���wr��E���#��۲��Ԍg���S�����C��iq��Ν�?�g]��������g3Ń��: Wo��߹S��%�T_�I?������_�o��˓��;�����s�e߉��?��/5�S�K�����~V�Z�S?�>SW����' �=�SyE�"��E��O: �'4^g�0��Z� ������N�P.�;�E�����3��E� '�ċv�����Ymۑwu���� ���K�.�/���0�o�;���-�Zy���=�<� � ���*O��G⍖4Zd�?*��ڻ�r��g�},M�"�S����~1S�Ax�r�N����ڗ_r��C���*|��c',f�ɝ\uՏ�}�I'�F�l�0�Q�Gz�������0���'���zi~�v�G�e�J� �?��tY�oN5q��N�cح��#�%?P��}�I'�R���4���]к��Pʮk`����0Q^�'��p�I�����B� '��� |a��KԳ�]oV��� XWҺ��`��n��wT�g�^�#j/�K�������뾹Ey��c��R�J?�'��c��_|�&�ǰ���g�s}��$��S}���S{���G�C�~�o�U>W�g�1�ݣ~���}�I?�Ҹ��[�5)#�~�W���۫�';����Gl�`x��n�f�NJk����{+q��9����������l��
>�g����lT�$��M��;g�<�z�,�ݿ��H5<�nSy�C������(�U���~�6�O�T��O��0�[���]/���;tVyor�E�|̴�A'�%|w��g><y��_�Q�LyI� y�����K8� ��E����O�����_�@~�j]�����V�?-'������߀����#���_m�˜R��FuU_��[Wڪ�_ȑb����U>��������<�WnQ� ���N��{�a�C�T����i����Cz��Oϐ��ݵ�g/��{��K���N����c�?gJw���_˴� OP��{o��C8~�� ?��W�4��^����K�$?$�ͭ�sX��㺧�tZz����N�o�*�BSgه�����[?���^+����/����Կ��G��K�0�G��/�SE��d� �k%^�WP�(o �=5״���ߛg�����x����7���TH�=�X��C�� �[��y��[X;�.��v� oX����ʌ2�rj���'�T_����?)����w����~�p�C���Z"=�o#���n�,��R�o����~�wi����N����8��>�������|�qv_�� Ϸ�h�=��"s�����7��'�� ��Xk�x{GJőp� ��p�ڑ��G݋�'��yi~����.���K�1�>ᤓx����x ��!�K�+�oK+����y�Z������_��+��PW���<��c2�+�7�I��v��X ��5�h��vH���;©�/�#d�t>+�z��'?�ܯz!���ʏ��$�3~լ*�l����؉f��%!^����U���\��;���JՋx �z!o�l�?o�L7z��۔����K8���b;��d�pjw�߶t��K�~�y�sm�/I&n_��n޷������x�-����K��>� �+��z���_��՗x�<�R?Fx�7P{� �������I�&p�B� '�8NU-��q�o�;��w�=R�%�=Ԟ��ަ~,N�`�����od�p�I��ҾbԨ��GT7����a�7���6(��]��"ڷ'<�i�)���L�d�ܻ�����?���|�'@��"�������e�=�.h���3��������b귩���߀�9wfA����#귂�#2�%����82�ݰ��Mд��/�ˠ?!�?���ͯ�u֚&�O|ŞWR?I� �Q�^���oȾ��]���9/�Ǒ}�I'�B|I?���^*O��o��y(�� ^?h�?zt�`� ���<�ПS?�x�+���p���򶼭��xi\�l�����<�w��1���}�a�J������]Nɗ��`PY���T/�/�k��>���?��g4�t:�~g��H?������LP���+��x�]���>ᤓx�Sw���M7]�n�'��q��7��dbRF{t��{���l;�8n/���x>;�ږ>��
�7����+��8��@�?gc3�t��8��z����mFGب��I�!�-o���җ��R������}�����r��zY2ţ�/�2��Y-3O�qm[_����`ʹW�F*���L�Ǥ���m����,+�3��>�By�u���h�����g����x�����;������/�z��n1v�Q���g���y�O: w!.�K�(�> �$<Q^�I�I'��³K����?���;��x�<ڇ�Ex�F�q���-��)�~�x���;�~2_�����^�'�t/���<'�N~ ^ʟ�N�_�)m���=m������[k���߳?s<���kgې�a?R\q {���>�$ܯ8R��Օg�zĽߓ}���d?|!�t����vF����������Ly�� =�����>�$��yA?��{/t�M��!��N�o@��S��7=n���뙊�S���7��ս�9������W�o��~��D:�~/�~B��ͣ"�O8�$^���q��������}�Fz�Ix¼�C����� j���g�K: w>�eϏV�4���v��s�[鉓W�5���V���@x¼p~G���N��x�F���!;��>?�1*�^�j'�7���`�֧ެʊ����O����1ŗp�_�}�hMS受���=�R|�-�����Ô�����I� '��KyKv�o�SK���Oq'ܝh�Y��SǛ�{Qo��x)�h���N:�ׯ�]��n�2Ӎ�h�A�o�~�%<.8D�8���5�x ��<$^(O��o���������+���]Fh�pLߦxO�_�u�y���"گ�f�>A���LqȆ�N��gkd������S��O*_t���A���gp��>b�|��%�ҏ���N���p��WQ� S���`�1�p������k&h_'l���/�%��o���S<��>I�z�^�$k,*�K�ٸ������R\�
�P��w)�>6?� �[_�Gڧ8Mߵ� v��p�C�%�T���5�;��sv����~���;�g��<�O<5���Ȼ��m��Se?��d��Q'���/�'?$��J��� ���K:?�~��M�5���l����u�Q|�mS���+�^�>m{g�+������e�7 ����c����xc���O�%��S\�����/�Nφj'qի��Z+�����U�בr�=^����/����%�c�!Z�U�a��J�g����No������ا�|p����������O�&^���^� z�l�d?�[y��w�X�'^�\~Bv�a�g;���V'�'^��1�kP���P;"^���Ip�����/��t�~�}`������ L�DNh�F�FyBx��u{����3�}���< ��ʣ}�s�����v?gc�0�'����!�`��K�@8���:�>ᴮ'�����g�'��:H�35���'�!<����{�^�j��+��>�:3���N�����m�����0Q^�O�%�N�N���x%��+rQ�F��}N�Y)���ߦ�g���</�W��4�$6����g�����S3��+s�QS.>��9�?���A�A^�V�M� m�� Y;1��=��1󷓚��!���N�u��n`x�[��zn�I� ��G��7h��D�[t��y�/+�1z�gJ�l�-�h��%^�:O4v�N�d�����/�'��7��[���A�����.=��yH��`d'���yY5?�g�[���M�~q_{��� ��@��,8�yj�r��s)UZz�<�G�%����������� 0Ϗ�<����s�*/���s�ٵ�{a�+k���o�k���y��f��`�Ok�������^�D/��}gYv�w��(���#;����>��N�C� @'��ͯh��v_��F���� ���wJ�T���<u��-���N�+=���Ԟ��[U��S} O���9�����h;�<��N� '��KqG��> ��. ^�7*O� �u������O*�|��~/�����=S|������~��V۾������x�<��٭�jw��yI?՗�O8�ω7�]�g��hٗ�235 �a|���_�(^�м#����R\H��`���9�j�-�l��K�[���oǎVy��4����?����I����f;_^�I8��xɟ�;�����Wx�D;/���K�T��S~_�M���
f�Gs*�� :�a�C�oΩ��L�����`z������WT����{�|�{��0�ç�g�{��M���):G�~�� ���jn1�����8�'ej�t���h��?y��w�}߁x�O��6坦ɇ�L}�5��xƠa�O�wh.�x '?$��~p�$�'8|�Q�3.w����K8���:�>�y�S���49���zA>P����F�^a偻�}��-���Ub�)̸�����R\П���?Q���x����ٽ�����C�%�37��w5V>�����x��.���ַ��7�� ~#��'��<9f��9v��'�n��%;T_£���c��򿿴��?��~�$��Ӿ���V����8b�������Y���WB�����)� �!���F��Ҹ�xD�r��>V'���N�/�sԭv����;Ey���^q�zN�!^��x��8� ���d��@�I'��]�G�z�9�4��[j�^�K��~�e�T��N��{پ/I�7���Iz�A���W��m_���[I��4+n���UU���N�/ŅxI?�q/>������!��q���<�p��M��u4_rݡ��x�\;5�F�֩�ǵ.(��tN~ ^쇩���/ŋxɟ���ٔ���}�|5g�?<n����~������W剗���>�$��B�4��� �4"/����_�uT�x��k@x���ݧ��k��傮�ő���>�$�₼pnBv(��S\�\ �O��|�v��4q���V|��+(^��/�w�>�q�_�=��B�'-]h���
ʓ}w�U�_�������U�'�_sX��!Oh�~i����}��s��Y�|`Z~;o���8��K����P}�{j��V�o�pw�3��?���2Ogu�-~s~X�ٔ VP�y���?>�'�N~ ^��y�/�R���m����W7o�)��yU������Ox�!ʇh�|{Ϸc`�������e��-~�ޗ �������{��s���[<e���P/�I����������5|�?����85Y���*�����|��sd��$�Σ�����%��@��)O(�^xdAjFğ�ڢ��;��U �W ��R��Q�Z�i�a!?ݻ�i������߃�o*�����n(���'�+�������ZE���r�� i}�o�S�/�q��Wp�A;>7�"�Q} '�/�T/:W%��I���qn���`sM�OTĞ�S}�o�����O�*=�������r���o�q�/���{t��@8Ņ�H�$���p<w�s:� ��NO�u۽�Q�a�_ƒ~�����sU>:W��7�7��؞?~��ʇ:j>F�)�����ʾר��g� �O�T��S� <z����ͫ�y��u���tBy�O�F8���N� �3���鯢B_��6�W} �^�V��o�a�W?��8��o76���4/ ;�=L��F����d?��J��,i(��K��>��^���&!=^���C�T��S� ��<g�3����������d���p:�'�tNJ�t�A�sw;�oGy>����������H�L�{/>w���Q��g��{�? �}؞�U��Y��9/�Ry��>�����U��=��_R{'��ى��M��#�k���l�Ρ���j���Ε����N�r�#�e�M�� �h^��}X����x��/k��M���cǮ/��i�5G۪���.=��p߉�ʓ}���h�I�Q\�'�~��_���^0~r��w��� s���ݙ{�S����x�<٧zN�&��٫j�vK-���9<�Η�od�p�������'�"���a��xM�+�A��7+~ �+^�gП(o0��x�+(O����<I�j�ɟ�P^�k��׷��#���)�ܿ[yU�\���5� GU���Q{ϊx���ި���Z����tf�'�q�G�'._����K��>ŗ����C��n�����'=�KyB�I'��%�����p��E�?�����p�Q �7��ʓ}j���<�x�>�m��S�~��u1�gb�]j_�(�Ô��A{q �vA���2��p�[�>��\�������K����O�������Z=7��i�w��޻h��m�T�'A�/�%e�����L����������|�{�����C�Ρg5�
�ݭ�n���=���uo��r=S��O������#�⍿���u�\�x�S2�'�!<����׭i����T|�� {*.n��Z�D���uđ�Ox�����K�'<�����3m���M;�'^�ΟKM�F�vW��K�ϐߨ���/�Q�8K�s8�~��x�<٧z�,����q��Yۮk����O�?�o���[i|wN4����%l>/�'�4O ܛ�S�p߯;�?�t��IyB� �����*s��W�Q?I��:�F�O����� l��v=��rS>����;��W��d�t^�]���F>i����w�<�����( ��(������sc/[�u.�߶J7�q.�U�^^&�iSuO;�kиF8������K��|����搞`H�#���(�΃�m��Ϫ��)w�� U�댩�����~ܬ�IS.Z���y��ݟ�הօ��o�T�;{q�����{SS��}�I'�n^畋���EV�����X����s")��|�����yw�����)�n�3Ŕ� P� ���{�M�Ծ�?H�7��ʇ9Jhq��zvuN� @��_� ���/� ����8�3��Oj?0�<I���V�x+�S{���c���3�#՗�B�N��j�[�k�g�f�Ԯø�t��G��|��Q���?P܉��@��#�/�?��4Β}�I'��N�'��p�+� � ��q�p�!?��0�!������_��GV����X�Z���w��R��ze��������G�^���w�oUy��Ͷ���k��
u4yZv�>ᤓx�&�/����?��:#Z����@՗xC�C�˛h����J�xz/<���}�I'�Ҽ��/�^�1�
�)g�Q?\��(������l�o����zF���-���E����D��?��K������֤i���k,�8=v�?��U����|_[���m�ޡ�6���U�߿����H�-��Z���ݮݴ�O���l�;nd�p�O������3�y��:�O�I'�]���p����zYk�x�(��й����`ևZ��?I'� 򆠟�K�+G8�N�������ѩ_O������g*O� �߉C���&+�;zh�������(�H'� �B���t�H�����]b��/��w���nI2q<��Z= ��N��LN�1&^�Ha���������ڨ=FG/n����&�gpz���<��p�g�E������ӹHؾ�S>,z����K~ ^�I�W��&�í^u����H���~��~ϋ�Bx����KL�&�k��~oʣ}�+�/�x�{�/�%���x���SM|�4�h���������P��g�^��W�Nikt9�#�}�0N©���ݪ��A��-�o*J�'��G���W�w�%���������G���_q,tI��'�t&�K���G��T����5��F�����8/�y,�^�I���U�S3t����e�*���C^Q\w������֩���_�'���:�L9wx�i�>��d�x �� �׋�����C�鮝�C��>�?��^�!T����p���R� �;_�� ��?+���5����g�C���� N����{"d������x�3��� ��UI�&�����ڧy�'�8�P�'����{̎T��@�qA�^����y32�����ʓ}½i�L���Vc?�1î���ʓ}��!��V���4������|6@g|���;����(��x� � ��z��H�?ֶ�x�%�'^�O�Ҽ�pjG�K��:��D�������ΰ�v?�����Ƶ+��;��]t½�#�7�F�[�f��v�$�� �t������DyI?՗�'O8�{���UE�
��o��3O���0�'^�'���X{�y�%�'Ç����F��߹]� �;ƌ4�u���2�R|�6v��>[�������d ����v�q�8�N©����.Ey�|���|n���_��i������~o���3L\��C���O~ ܫ�|���������>���x� O�0��"[�yu��S��N½y).�O�/��7�O��/v�.�q�ǹ����F�%��;bxR���j����~��x)�QJN�W� �1qtV�о�'�t�[����K>����d��YV� /]Mx��~{�~ǁ~��~_#Q^� }?�p�I��~>���!���C���S���P�\��ӫ��������m��p�����������݂k5������+�] �� �+^���<�t�(/���|O��@�@��N!��N�a�C��;T_©}!o����f4��Ė%������C��:}/�����d�?�u���m����d���Nx4���8�-4z��o���K��>ͫ �y �zE��*^ó��©�B����{>�x���%��τ���ޗ'�nש��Њ�ʇqm����C~��^����)4��KK��D�P����F~��~={�ɇ�����ynU�������d�p�I��g����U�{�����x]�%����cS޿�˳����-O���;�������)���>�$��B�q�z=Q����㬲z�<�'�∼���`^�:����sD����'�y}�6��%�=��H�jO;^�m���[g�s��/9���3N뉨��>��J: ��"/����PK8���7jw��'�?{u&�1y�9W���Nz��Y�j���^���o
�lץ�&j^N���M~&��E�~�7���������v���>�$<�uJ���5����5E~F�onV�� _7��=����/�+��>�7��|�� �Y=���������4�<'X���`y!�⥼%;��S�o�7Kc��c��Ɵ�H;^�~�Ix¼0��N�O8�k���1��M������j�n����㲋��D�T���w�vM�T��ӸF8�c�K~ �������#�6}������<���6����Lq|�ۥ���N�z�;���_|��]F�3Y���@�!?1& �{%цN��g5{��x}(��i�����{���;��^9�1|:O?���wU~6���9���}%�X�;ӳ����k��OO����G
�kM�^YC����Sj^Vy�]���^�?�^p�� z�&:�����{'���g���n����n}R��Gf�G�v�Nܬ����)����7ͪys��Dz�%��J*�v+���r�Sm��o�� ���e��W���;����O�����Yx��U���ǧ�H���C��~\4o����� N����oT뚽�ݴ�J񴜤����,��=��Z��|�ǜ:�|�\sQj�� �)<�`��V���NR/�
5����m6g����q�n4彉_}h����4��U?b�v�7V~��)�Z������~���ε�����H��:'�{�n�O�?��꪿ [�~��`��*U��>5�?z���/���v��'�Ya�{�S�}�I'՗x�ޠ�����o�\���pЙ(/�o��2'�T_:����| <QɎ�;F�)��Q|���C�<�'<����x�Xk�����r/}��e�a���ګQR����W���� ^�?�z֧>�q��ꇃ �R���mQ�G^����6����m�i�qf���$��탷n�7���io��[�����#M&���/�1���P�E�t���xџ�� �$^�[�'���B�O�4�9���Q����f�Ż�ێ��0���o���9�Ѿ��L���K$NormalsWd�x�Ёà�S��Pa�� 0`�� 0`�� 0`�� 0`�� 0`�� 0`�� 0`�� 0`�� 0`�� 0`�� 0`�� 0`�� 0`�� 0`�� 0`�� 0`�� 0`�� 0`�� 0`�� 0`�� 0`�� 0`�� 0`�� 0`�� 0`�� 0`�� 0`�� 0`������h�LayerElementUVIALVersionIebLNameS UVChannel_1�LMappingInformationTypeSByPolygonVertex�LReferenceInformationTypeS IndexToDirect�x�+UVdj
�+x-�e|G�� ��3w)���S�08�Bp�V܋SX$X��R2�w܋CѾO�{r��sw|w�!�� V�����ǿ�5��޾�`��/��K��u����� V���� �2E�Y���&��Tl{���(�
��M@|���K?�����x��K~����T~;�7��W���H���Bw'�n�^�ؤ��v��{�_��c��G��;�?%�Q����_�ގY`[a#��0��-������{{�'��}�
n��_�� 'X^�p��׌�cn���3Y^�:�/b�����sW��� �˚c`/u���?y6����^l� ����ԛ|�l:�{g���{��F��M�v�������l2�^쳞����"�l^e����*~V�Ʃ��_IK����Y���.��m�l\�: �_�M��� {�܃0�]���E���|֍�Sϔw
�g���&~���Z
�?�v��{V�z鲿B���t��3��<B��)���u;a%�N;6�g���EǸ#|{}<��� �u=�;y̲��.r�A~������]��^���ւ\��L_����gA���Y_��u9�"t�-%t7<7ؖ ���Z��Ņ���7�fB��X�y���u�����_��>lx���-�,?�d>o~����XL{�·7��m���}m�b\{��,�٫��+�n)�G��qq{5�W�� .5Ʊ����7uƱ����˝��Ԗ�bRa�2�X�����e�@r�ˈg͇�l����)p����TDe�#OE�C��1<.z78pt�.�~����`�'+�m�Ǯz���� �����q�L �N>n:,��x�G��Y�JN�F���q�w��x_>��t�OGq=����=~��k�+t+'�M�I`9�5�� 6#w� �cy�3a�ɣ�{U�C���y��U5��*��BwYB����Vl�+�\2,ۦ�>��?{%炽�IqՑq�ψ��uH1r���B7hW��uu;o7X���|�vjQf\坋�wQ/p5���j��B7׋�z*�e�&��oo�P�)��gn�C�P_�j���$`�Ų=U�wYXn�0�j����:$��~�؃�o�����3�d���s�d��߀�{ {�&�q���O����@�0���m���|�,c=���uEx��������"͆�.�{���Y��
vE�C��b�v�O�O�z�_��o�~tg�M���� ���"`q�ث��s�.�R���w�vTc�b�ļ��c��7:b��U�P�����2��-X ݼg���C���r|�/���O���w���-��S ���V�`� A{�#�`oJ�|9����7�c�sIEr����!7�Ν��>>����l�R��_��x�n0�m[���2`5K�Ԙ��I� ��� ���w�d�Hr���_��^X����yQ-� ���o�_��n�b�d-�~�y-��Lݻ�,T t7o3�� �g��_d�����e�XU
`6��"_Q���Y߻#`��=�g^�?m#�������|e�c��X��.�5�{�,C�1����m�"`��0�Ž���kp~ЭW�<��#.>��V�a�;��ꢬ���h�|,X&l�|�>a},8D�Ns�ރ��s��`S�g�/����;Q�޸vl��;Ϙ
`�S2���l����}�<&.Ey�@i��s�]�q�7D�^Ϗ��!�韎�!� a>�^QO�lC������j�o�dX������ ��� ,�3^�%`U� �m� ���� w���w���~]������mK��w;�Y�~jsꁃ`/R�g�ݣ�kf���@�O�i��s����~ �n�=��,߻[3��w���/C ��#�"].��}�}f(�Y��Y���������oǛл��D�o^g�L�
�)c%��>����н�����Y~��(�~j�z�� �����DA����`�WBכ��u�����+���������/f ����`�6����`����� ���������f���`�z�0���,�U���/�� �*t�zi���1޹D`��y�N�'��D}�_:�mE�?���m�+,/h�5����e�bd��O�}�X��L����Ys�m��̧Q#���2�����Y���И�xJ�?��CDԆn2^��^s���M�1`�3 �C�"���9��|�ȗ�y?s�n�G���s1\ݡ]�*[�q��x�3�RoW/�j\��y l��-�~j�9��@��`;k+�{��XG��1~jf ؋�_�k� X_7������W�^�^����م�3o�b�������z�(+���##�:i/��6�.Y>�)���٪�`W*Ɵ�P�(���x�z�\�"փm�s�_�a`U?����F;���`s���\�����O�j��q��F3���1�E�c��V�X����͟�jJZ\u���˫�ԯ?]��*y��>����b�P<�y�K��9�B��&����6́z�&\��<�>�b4tS�2�m��|��������{-
3^Q��g���:Pn�Ϻ�y��Z�"|v}r�]��ǃ���g�7�"�e�����ċ�]���2�a���M�MːO��,/��M���ԯ��!c�o�wǁ��`rhƿ�k �=��|���Ŗ�`/l�*�I7�<�3z�}���p�H�W�RS|��6��I�,k���e6��Jh`o���yX���x�m����Ws���(����r��f>X�݉�l��CU�(�LT
�؊\2��?�,ؖ����b�y�� , g&������� ���1mv�,�c�j�y\� v�{� =0���e{}�"b���
�z1���}�����`���۝%���� ��m�/��5�����b���'�-��z��|{�e��� vq� ����C?}���H�P��զ#��d�|ǷS㾭��^�.���5�&�X�.���]���wd��K}�;�M����S��M>��_����X��Y��~Rw��o�}�^�������AA���{*�W�RA�W6�����Mڈxѷ��}���� ]/���`G�a����?ͻ��G����f�݀����=������ �{���_��+t�1������G���l���� �祬�o?��.����|d�m��w�jZƿ� ��&������f~�]����r�)yB��F�_nk��>p�j�D�׏}z��^�'N������,/]�ۀ5��Ԙ��1����$����B��T7���ʴ>��F0ދ��>�n� �;����,s�|�5�#��2��� ��-C<����u߁��,>�5����q2��c�?=3���U`3� �%���M{���1��1�L�D'}5''��O��v3�?
>��"�ڟ�� �����'�������)��3�Y_��'@|}o8y�P�j��h_�;�"���a}���<����Țn���4�C�V�e`/�ǂ��5�:́m����p�O��`Qs#♲}ݖ�����7`ް��rk�+v�2�,�m��K�ہ���������x4���:hZ�_�? پ+ʳ �.�N\����7�x��`�7.���k����1�m�*`�1�o���ǥ���w�8t�?�{3,��x҅_��������#?�
���@ފF<}��g��Ϲ^��?A��o7��\����n�{���Vp?+�BW���坲(O�Ͽ��ŭ�`g;��+����$�w���\�n�,�}�;�ۻ"٠�{����������0�#�������@��>�՜����B����D|��(ߧ5��K����������GYq)��/������`�7X����)�Ž`�)�Q� {Ӡ2X����:�D��M��Fώd� �*ѥK~>j�5��*)�Lj w��޼��p/��"$-�u��,��(�W���O���ms�'&�{SW"��r��N�֝磿�<ϯ�񥗋������ ������d�;Ei�l<�q��]�}�����%��� 䯚ND<5$%y�i�/zn@<��&t/r%���5?��� �N~������^\Ά��'�e�4`�g*���p����1�+6��#?�ku��|/$.D"_y��݅x���2�}���O ��-��f��vKG��V�������-(���V����
5���ʘ�D�@���H�n�p�����S���I��{8u\a~�3b�+%�x2q�'�}�&��L^��������,j텿g1��������Dy��r�O:���?��՚����� ]�����S3޾2�/ru���� �ˋ���Ԙ��Na��8�W�\'��*���^��,Y:��g���zs��}[�d��8fJ؛���3���>��b9w��j��B�*| �V�%��{Q.����!���%��,�C��ՠ1`5���K� ��i���`���ۀ��E�� ,;^C~^�����Q�3��E�>oe��Rw�_�����ԏ,�����c!?{z�4��T�P����nH�8� ��cb���нa����н�nG�?�w�n�K�E-�~����@V���?�lZ��,[�jG~�_wd�#Q���L���`�j-탺�Y���I���G���ͫ��^�")�{�/��]����������r?5p,X������ �gS�Ay�����6�'z� ����*�7�����B��{�w'�;*�,��vjοs*�߭ͅ����j1�����޵�н�G��Ү�|>���q}Q�>���%a�V����I����^Nod�[�9׻�g�^я�ODb�vg�+К�f1�Blo]M�E&�������W���E�ޖ`��(�����G���.>w��e?�9�ɶ�6��ۖ�-3��������̷�:�'�!�s����.rt�nK��&�*�S���m]� �B�ۛ�^�����-��m+ ���m�P�rE:���ṡ.8 ,&%�%��b�/�p(�<� ���P�<���ݻ��FB�n�͎��e ��|=������{ ���'@~z�F<�r4�����j:��|_��3����GW���&�ӵz��&�px>�7b'�s�3�u��`�������M�0�OwZ!�W�t;� �ŏYXl<�p�[a^ו&B�&q�1�bc�2{����v���9�e{��������J�<��릗�,ב��,��؋�s��� �e� ���ӌӴ�nO�}��爣gn��N�W���۶c���a>w=�CWۓA=O3^��\�*������W�|��c��)t�#�s�?��3ߋ����s����|&�u����]����
{��$۵�|�xq�����4)�E��Wg�~��ͅ,��T-��b�#�>��e��,����GdG�y��or?�[�?g����؄���Z�������'X6����~I��lN�������&����D|��0X�q���� v5#o�S�T8���y�+��=��?��ckX�b���7`�~��M����2�K����=��� ��le�tq�7�~�-j��s?�vF0�7\oUt:���,�K��~�x�?��=g��]H�� ٞ�?��t~�����<�)��5l�*��N~���+Wq?�����҂<yʗ5��Ń��g��Nc�ۖ�Sz�{����8߻4����gܟ��6�eh���t��6t�r+����&�O���j@}���2��W���Z l��͹t`�p�]g���9i�� ��MX^�0䧾m��W"=���
�g��ۗ��.�ɱ�]D �M-��=����h���*��D��9�_H �˸�`ow��q]�n������fz��G1��oA�7C�^W��l���ٹ���y.��X�N��4��5l�ߣ}�%�`��QQ/�rZC�z�r�^S�������/s"�����A1��c�D�b���Ń2`��:XM����F'��S���[lk�ܫ���/?�e�6 1��W�|#��Ŵ�R� 9V}_�œ���u������?�\�E��'|���]�y�gՅ�QT����e�B7CΟ�J�yRg,|�������h��}-�{W�b$�>��� vO��E�z�O��ү�o�q9W�����<��uPo���"{e�G𻵹�,�t���(؛�����.����:�d��`U��˄�<��X,����ߠ����?f>J����/���g���+������Wh=�u����y w �C�������o�0�����{���������s��F��K�/J���z3 �ِ<�WGn���ao�����3�/;�X����݀/`s#?�cb[(��`{}��?܊~m㽦���`O���1���7�۪\�tگ�L�8�<��8��nk��f<"�z�հ:,�!��Vlg�;�����$r��?�@=���׸�S�~<�xKS�U'��ܾ���;B�x��&m��;2^©`��������w����/�G���G�cs~����f�V'�@we*�u����<�E�`Y�8�,��������X�%�n�e���\�<�����s'S?=����ɦ�����{$XW��z-R��[:���5ƛ]���ZJ�� PO^��_��>I�L�RO���;�
��S|^�X,�7�����x���m 6ejs��y&�������3e��.u&�*�3�~y�%�����ɍ�
{�d����Ca/F����ZC��������I�þ��՟�����̩{�f0XK݋�s�����Ѝ: �. �)P�8��f���O ��~`Q�`������ �]<v-"�h��D�f��u����ӁU���%����x.�a������|������?�9-�<�q�������Y��O���`W��am���a����2I0�՘��(/y ��?��蝍��?��|h/�c�e����D���{�j��!�?��A���(Ο�{����0��TU�/O��z���|�E��.�k�������_$I�<��*�kk��P\����Z�����w�+�Kۮ���cq�c{��:Iy敠�._;�=� ��R�O��r�`��m�8j�o���V��f���<����y'a�B�3��i_� �Ȱ�*�~���<�z���~L��`s�<��R����oF��J2����O��`�k?�[E4�����y���]��0����e�K�A���U��CN!�d ��N`}D��z�ϣx��_���������� Q��y��۟����_�_���<�Jy�?i8������q|���Y�����mf9c�2��P/��e�l����I䀇���<��ſ��-���
��6�e���ϭx~�����y]��\�
����h~5�!��������g�ڀ�+��]����z��1сUy~�g;r=���s&r=����1?�U�q��U����^��x�����h �*�����c�W�zf M�}�E����#�������hm� I�~�U}i���������5-&����y7�r�k��]��(����L�h��Ф�߳8�W��6����1���dh� �l}�v���]�J�7��<�B���+q�����9��3 �{�m���,d��&`��z9�� �����9b�|��y���w��"��;��V5
���hw���^�m��`5w��c����q�M]�s1�<g��i��2�������Mwo���E,?y��>�G�.�<�a���Mǐ�;�sI�zJ����Y���_7�xRu����V�f�K��ߴk֡9��˵�P*���>����v�p�����V���|�)�t1�ט��_~D�,Gv���5z �}-��+|v+xN�޵�gq8;u{q=8��?v&� F��?6M�u�Y%���}����_|�
������M����n�[��j�����->�Q;��bR���� ��.� ���^��g��2�+� �U��`�*������z�~�^����۝�ol�W�/iM�?��N�M�t�̸��N�e�T�7�6����������.���^�c6lވ�;���{� �o;̧����3c��w"�(~�my �����M(_L��Z���������q�_��~��3��j�OM�B���ӭ�A�+����J�E��h?��Ѝ��?����mɕ`}t/�]�Yh� ���70;�4K��3Wn0�����Y4����^��,�|d����/Խ�h?������_��9 �m(�;��g�O�cy���ޕv�!_��5�˘����'���a�__Zo���`�l=�X�9�\����9.tq���m�X(�.. {��5�G���f�����ɳ�����y��c�=h��P�T���=��F*�j�.��s�m���Džf��F��)&�����]��������m�����G����fG�^�����~<�ۛ��`��D~�&�u�F�6'�j����M%����������'C�Lcػ�t��n�u_6��xM��6��!�� �j^$♓�����7�=���[���ޑ|��7�>��?���_U�(܏}!��[ē]��^�Ld��iݖ�wT����Q��o�>�;�������i?�9���;Y�[��l��;���,v'���V �ު�z����ݤ�\�δ�m�a/q�2Q�p?^���?�;�G���4N��g�q�-�b=��~{��B����[�!wt�.f�1<�eFք���'t[.�K�M��q^����vQi�I� ,�nF<����x��QA�/֊��:��l��\��}n��?��y�#�x������VY@��s<���8�*ʓ:�c��i�/Q/F��w�|�83≅1�/5�]�Sd�퀽��;��U�����u D�z u��
ܿ�ރ��,����uO��W,��s��UU��*�x�����"ܬ��?�Cn�>���s����}d �/{ν�v.�ϱ"�#ػ��O���a�����ܬ��t��e����i���$>����������H�{#b� � ���y #�ws
˯���G����]|nO8�ꦇ�:%ǯW�4���pϿ�&_�\��>����[�nV>���[֍v�<��ƛ�5���`���O<Y�sW�_V������P�j �ۻ��ύ�ǂmtv�wo����T����1����h_�Wc�7-X���ѰW�w�M�w�
�=��?w&�_0�7s��I;����'��>�ДP�������TӋ�m����ݲh�m�Eؗ��<�x���F��{ �� ���f��n[������x����/�W ����X�g�Eq*�������ޓ�g�a�}@y.|�m�����#Ӯf�ȶ��M:��;��_�w���� �2�Fy.t���x�7����Y_sʰ?�|�^So;��G��F�Y��D�q�<�7�ym4�{�b~?�> �boE��+G{o�O��t�z^#�yynX$N�����������Ʌ��O�f��&�x}��_�RT�}�_��lBá�,k���R�9r �biB��-i�~��#�K�z�v2���hSh��M��,ו�_�����廊|J�G�e'�5�}U�h�5��ɋT��sΪ�pđ'��~幺�����=����� ]� d��8?xr>�sco�=�b�;��Ӳ�o��}͎��o�{#��_�����f�S6�w�,ʳc�{���7�u���M�7`yztW"=ys ��t��c؋���2l,�� .�~H'����%�Z��^��S�EN�KQ/��*zͯ��V��Q�z�B����c����������o�{Sj�˕��e�`�,3�q�)���E���.]��+�O��oijo^��8)h�c%�m���/�����|��by�� ��i{���1d�1緲d��|����w��#X�;���P�'?wE=��u(O-�I����|ʊrŇ7��v�[l�t�݄���[�h;'o!�=��yd=K=�5���㸴C�ROT󝈸
���YynVG�@��w�����{��`/w]�'Y��A�p�^`z��r<��<ݓ1`oCeĕ�|���ȍ<�z�]�l׌��}7�Ŭ3���|k;=���џ]��Y/�s�U�������k���x��k� � o���.�����7حm��m�b`q0+�{?�{;;�}?�E|�* ������,�~p�*ƫ���������u�i��_v C<����L����_xNվ��u�N}{����� ��q(��a�f�9?��>ty���Inه�*�����^j�����]���A�삟"�LQ �b�M��~����w���a��<.]�Q�����o�#�>\<�93WW�~��Q�E쮰w�݈W`/滻�������[c[��]�����L��ɟ��.&��-�|c�5�1\4�o��M����{q��*�|w�] �+��W&�;����K6�J�F��0�"���8�˙1߱�U�������~��[���^���:�b%��m!���1�c?.���U* l7�����q�"���n���M���q��^m�y?��{٣�aoz�=�Nt�˹��|?z�C/���_0����.�����A��j�����<=�f%��K8�����벑`ٵ����q�2��}��c��øR����bܹ����֝
�_N�q���q??�LS��_c������#�������)_����G���U��rNG>�$���6�_�|/�r�7�xN]�N��簅���������v(Ϧ����Iγe�)��,�3)��Ω�-�˞��<r������@��;��ۘ�u�����5�ɠA���wŒ�M������K�����N�������қU �W�1���z�o?��Ng^B��v ۻev��y��M{����;`�=f�1��)d�m��X�0����(OD%˥��ω{#v@��A���g�sG��lē�Gq�՞�#2���_�3��X�����kuԟ����:cP�Z�
{Ֆ�0틂�+z��>�f�����E`/�T@~��{� h ֓������d�zg,�g�i�S�r�]��l���:e��k��m� �����zr���X~�E���i�jE:ܗ�U ,��@?1�c�I�O�q%���~߁��31�O_/�O(߭�����>�.ZQ;9ƥ��s�"[ڷ�������<G��������@����W�ܝk���]y����������K��)��So�A�'vt/�2��N/֗�����W�=���Gّ� ��
���5�ƻ�4t79�����𗯒c��c���;����<箂�0~�n��y֣��#;�� ���k�s|�MC�������p��)Ϲ�S��+���.��v���J<E[��!UVIndexi��!xM�خU��q��7���������n6��؀H�������
* H� ��g��y���5�̚���}�oo�3�p� 7b�� ��A9�T���:�����F �٣W��7V;�Q�Yn����8Ÿ��a� �:뉊�˙1����4L��nP֓g�\n����S�9{0U��i���4�������t�Dn�b�Dn�ʻ��v���,�7k�l�n��r���g�Ŝ�̘k����� s�����/(�P��a�bp"'r���3����m��g,Z��_N]�b���������%
��-Yy���n��� ��w� W��a��l�κ���U�c��ٷB��2��^)�X�m�J�+��Vk�U��ʭ�h�~ͬ���:��ϭ� jh�~�5��6�� ��ʉܦ�f�]�"�� {��:l�,�J�� �9Թ�Na�b�r;'��P�v����(g�nAu�Y��wN��Au���@/�Wp׾Ϟ��q� �:g�>����ܾa�` ���+���p�j���D��s;�����DξC˩�� �1 z9Xۏ�wd�<��qD�� dž����!����r'&��/NH��9:ȡΝN �@/wz8#�Z�V����04pg��C{�9uN �����pAP�@wa򞣦�>����pI���y.����.���pY���+
{�a��A��pU0W� ��WWΩq�u� ��_UΩqׇµ�u��ϩaX�;�o,nJn�����n�(�-��W���=��u�j��sW�7�p.wG�����yVu5��+k=}��Ysw=jhwO�f�Awo���7�̻�rN��?x�f� ��Z� s���>�{(k=f㷁{8�QC�G��x�x$p� ޫ�=����������vf������)�9��x��S�O9�9���wg�3Au�Yr5<8�����=����^/��+�/�B�=ߙ�yf��5gm��x1p�f�T�\����\��W��=�N4�~�8����=�˽^k=�ϽY���F���ۻ/7e0�\���Wksa.7E�ݳz�qkm?�r���~LZN����;���y�����׊r�[�w�o�sj���������B�ϊr��>
��8��^��`��s橷��}�|N/�YpO5 t�G�� �8�>|�/����/�U0S ����~5��|_�3�;ܷ�^s�M�� ��������i6�}���s?g��z��k{���=�}�z�km�r?u}h7Y־�j�����.|8߅������p���d�sh7||�Q�������Dy����7b���#�)�L���F�C��(Y� 5}>Owj��=q�0j1Zb����Pק������5c��K����*�'\��?Sq�� �����jr��������M���n����59g�hA�v��É�F�(�T�{(LQ9�p��'#z��s�$a�b�DnP�<LZLVn�ĩ�Ŕ���w~ba?7c��,�4��M�3n�bprn���%ʡ�͐�t��a������P�f
��39g�3����r5�������������Vn��9�?ߩ�ڜ�\�~>?k5�|V��A�:ܗ��b��������y7p׾O;u}���`�}Ogr =��n�����q�{��ݢY/̂n����z�%��>��-�
jh�t֞�,��-� 5�[����l�������S��~X!p�b�ޝ����z�b���\9��N��}�ֺ����V�fqk�ȡέU���,g��Au��� ܺ�n�.���=g�rfo�P�`���0pպ���&aQ?����6M\<N �8u�~w`�r�%.������z���v��a�8�k�E�
ɡ��z�ĕ�\ඎs7��V�s��+��8�����m�+���۾�fq��s7�;g����ù���a�r;ֺ�^n����N�v�u{��*���8�s��=�Y��s������-D}����,��=�na�Z��m�^�@M�a��y��۫�z����Y�lN�z�B/�O�j���7���>��V��������.�5g@a�F�j��
�`�,��xHp��;��>�l�^����r�W���������;*�(�,wl�j8&p���8�3��~s�!���;��(���#���/N(wb�j0�[/���9�}f�\�R���{��i������>��ܙ�n?��Y�������g��;��sq^���^P\X���{�^��pY�������W9Թ++v��rf\�P��N�e����ɹ5�������5��#�8=���É�
��ݵq����pׅՓ�����k'W�>��`�s�.܍�^5��)k{ՠ��9���v~f�5{�ϴ�jhwK���Awkp���Y��?���迭��ܯ+W����Kk�`��^] ����(�L���\ �s�z�.�)���{�^��`m?��s�u5�;#�{��qΓ�����������g��B�������{(<��ݣU����]X����{,��z�y�r5<^N����C"g��fp������r���u��`�����{�b����ܳ� O�$�{>��
u}�+ꁻs/�j�ǽ�M���qOw�^��Z�wo��`�>�{-���+ū���� �:�y����ș���n0��8��,=�k��?Q�����^��p�U��3r�� �/'r&r�O�Gſ�}Z��83���<Ιz���wȫ�;�>�u{���C=��<p_wtx'�wb��;�D��p&��̱_���͂w�]�t��˫���}̳���]^|��}��_Y��D���g��sj�Oa��ߓ&��r#�S����##�3g�^7Z��a�b�Dn̊r�Q���0������ =���q��v�y�x����;s�}�D�?A�u���MTQ� ˙k�޹�홵n^��O����ĩ��\ �&��4l=ܝ�Gn �d��냹��fq�4p�ʩA/wOͲfs�W]��W59��Y�LQL��=����ĩ�0u�7M�j�?p��Ӗ��򞣗�>Xۏ�7CPWC����%�X̔��f r�ssT���˙1g�C��+8�=�P�� ��b�r� ��������ۇ�g���o�.��~��y>����Ͳ��g��9�v f��BM�� �Z�����s���a�`��|���_�����+���y>����b�%����X"ܒa��95n��ݿt93�Y+�:��6� �~pf/[9�ƹ׳��b�rf�#�:���i�3�ϒ��T[>�s��Ÿ�܊孱B��S=�}�g��^8�V��Sk'�\���o����ln��z���n�x���ϻ+�Sߏsƚ�gןg�ZA ���z��v�N"�^ޕ���}��vW9�ډ��a��o�����<�FU��߇8X�{�)�q���>p=���<�9<�&Ŧ�fY����8ѻ���S��C�E9��[[%r[W��rSe����:9�M�u{���s�;`�r�'�1�n�Z�won�`�=�����|gC�sE9�r����.�/�ힸG�C�۫b��YΌ���ܾ�}���ۯ��݅;�����k�^/�,{�����j�^/wp���ێ?$xf��G�C����xT�C�;&x��ގ.g��AunHpF�9����9Թ‰A �N�ZMw����pr�s�u9�9w��]93<[�_�;-�̂����ڝ���<Ը3�}��=8����θs¹����r�%�?���.�(��.�u{s���%����]��^wY�<ȡ�S�������9����U����9�w立_��k�_%r׆�s�^g����]<�g�u��!�WC;u}���?�C���s�χw�7�����ύ����l9Թ���)p�}jhw[������~]9��y������ �@ww���]����P��'���󸑃����<ܽ�����M���l9�8��z~��;�]s\a/w|�_unh�?8 'N��j���������5}cWԃq��6���@�`"�;�[�w�{�r}xx�S���o����ʩ��`m? ��OQ��n��>����޼5&
ܔa��gV��:��c�'W�>��-⠧��G$��������"p���َ�}0 z��1�?j���yݯ���2�3�OAu��â�ٜ�u�?�[$Ѻ��Y�{*kg�~}φ����g�=�����{��/�3g��95�<�_*^.g�+��]
��3ۼ�3e�y&�a�sε����kq�g/f �~w����<�g�����4�����^O|2t�γ��@?��gP�f9�o���a�v�x�;�n�k����S_�rN�3���-pzս������X*pkV�c�r�'���^n��JX��{������3D9����̓n��~� ?S8?p�yH�� ˝wvP����eah�ƶ��(��|�]wyЃ�˩m������p]�Aj�$�g�~��9{��;�{$�>{�a9���Kģ�����>gX�7��W��fa��M��u{{����x�s�rOQ{�)�G��? r���'�Z�q���a�����S{?�W|\ΞO�n�nrN�Sÿg����b�gUׇO���x@��g���fp;f�^����"p{'�V9�ƙ)v�{pf|�Po�]���U���{�`�Mj[�݋/�}�xD�C��:�ݿ[<w@�6���)�m��>�8�(��pDŽS�3�<n� �{9w<<8���Ku}}�]�g�Ι�{�lN����<'�}8���rz� r�q�$��?���-~L�~�����Ԇ1wO���}�ǫ������pG�܈����rW&����{�+x6x&Νܭ���<�Z��<����s�9胳9�e_{=�(��9�r�U���9{������Su}V�!����D��ԏN�w6<��{3���袝��W�?�9�^�?�ߊ��Ysc%����^����Xqc��^����5��{.���{#���yn"����>���n0v"�ϙ�bPC�q����[p�����&�Ƌ�0gmT����������',&*?q�$���s���*���uz836�]ܡ���陼��ܔ���ln�08LUL]n�D���f͙g������Ln�����Ln�`^�i7S��US���܇�n�0[��^n���A�y�Q���V�������� r�ssW����sf��P���\ ���?Ѿ��ǹ����h'zF,�-  �[<Ѻ�bYs"�D�d93���p�g����l�ۛ�-��a���P��z���s��'���ʁ��8^������z��$��VI\5��5������>?w�a���,��3S�;�S�sz����é��%��I~V��|�|���]Y=�V�.q��Ω����(_�x�ܚ�w���������=]+��~�\���:�֭�����o�>�����/�[���w��w����܆����&aӰQ�q9��Pð��>y�7��,l���v������ϖ�>�����g�ո-�~=�"p�*� =�6�ˉ���6p���� ܢ�w��9����s�}9����� �wϹ�w��ܕۡ�5ܛ�1�w��A���*�A�s�ч��E��Vׇv����]�k8-{�,~QN�)vK��N���s{���Ş��I�7ȡΙg���~��O4�Y�����,��p`p6܃3Ϻϵ�;(�Tk�󹃳>$�38��f����}��=��YV���;"�8Z1N����?pf�,���9����}F���0���3��J���[���}S8��� �t���g
�Ԇ��ñ�q�NL<i�?!kN��A�8����s��1�����S��{z�������P����0�8�ܹ�煳�s������܅A?=�E���9���\ �������-L�.M���<�wy0���<s�(�����>�]����Y0��:�2���_�~���r��>; -�y��|�ۇkg�u�sj�����Akwƍ�s/���<������M���3�pj��Z�s��{0��yO�{��s��©�g��Lg�����_w�s�;x=���
jh���� w�$r�+�|O����>��+��@�� �-Jlg�>���]PׇG�Xx<��� �����+��8�?w�{s>��e�g��X�߃g���0��S�spg<8��T���׽<x�������=|~��.�w�C�3���]�Y���~5}����~u���;�߷��ss�P瞯\ fs/�����{yW���=r�q��K���ܫ���r�J�7�ۿ�5'roo�3��^wV�G����nhok�����-�W9�Ɲ��/�+箜���B{��}��>���(���I�s���C�Y�}�~gg��g?N �w����W��? �wh����j�> ���,r8�������"�ˠ���}gf���uP7�μS+�Ըۃ:�wG�&�a��6�3���]� ��λ���?��>��������������r�"��N�p#��_ ?�{����ljrς�s��s�sj�HY���a���;:[5��0j���Q9<�*�p�%���>n���0F��Ǿ��Ǎ��9�c�3��P��SooN������ ���w�r��xA�v�w������Ε�?� �Vo?A֜^��C���r5xG����y��$a��w��&S�ɊA妪\ SN�O]LSnp��o.�w������ǩaڬ9Q�J������ w��w���y��Ss�=�˙5C���3g�\ 3N��\�Rν��7�S����ߙ��ߵ��p�%�9Κ5p��^9�ƙ7G���U�� �����o�w�>��wgo ?�ܼa�`� �y�WΩqδ���ӫn&�sF��S�JT��`�D�=7p������"�O\"ȡ��z�b�rf,=���� ��9˔[.Ѻ��8����
�V�\ z9u��~�8�i����V �������ǩ� �}�ۯVn�D���rk�5��0�[;�i�V9��9�9�7��{� �����L��\rj�˭����-'r�����v���=��(���=���A�6
�VC;u}�c��m6 ���<q� �:�e�*���6Y�k�u֜�كm�]�>,]��r;T��w����r�~p>��Î�N�vI�E�C�ۭ��`�r�'��}\��s�.f�}9u�Lw����@�#��3r���Y��#p{竡��>����� ���ށ3�߷د����A/g��f����r���� �;�r5�#‘�������Q}P�wt�c.�
�1�>5�;���pl��{��� �և��iE96+wb⺹��af����j��{R������հarN��\lT��ʻ� N]����ɹ�*�9z9����0��όӋ%�s�T����������>3�(K�m]y�7��;��,��ٯ�m1��yjr,���g˖;���7�S�{v�Br���{�^n�����5�+w~�j0��0��� �]�h�^/�}�G Kn�Z��˙�����r�%Z��4k��r��lW}������w?,��~�pW���v���� �>N �� ��*�.wM�j�e�D������r3��g�}�ו��r5\8��1��rb�c�MU���v����vd�~G`��a��@�w'r �'����{b�b�D�g�|־����V�z�����z��s�ǭ�����ާ�{�n]�{��-a��SC�m��-�[���s��\ �N���;g������y��������}��.ٳMp�wWž��p���Sߩ���o�o�j�ǩ�5��r�=ָ7p����N]�;����6أN���C���~σ�'���~)g�y��K��\ ���|�=Q��n6 �<#���'���?$r
r�sO���o���r�'&k9�ۙ�s���mV��s�e߳�z`���� �
39�������'9�85���38��~��/g/���q��}<_�P��|�r�s�՞�/f��=4ȡ�y����K���A��>���^�wi���q�8�K��xa� �:�j�jx��k��u�>N]��D�^�(�ā{#�kڙū�����
��ʽ����v�N"��S��7i�$���ʉ���� ��w��0O��X���� j������(g��sj����� �9Թg����q�ۛ�}RQ�8�Z�����> �K�[�r5x��g�� ��y��7����_����W��&�c���,�����]��9K��.qðA�m"w`�(����^�1|��*����~��}���o��׳���Ǭ���g� 7��fv�O冏w���Ǚa�>�ǍXu}!pzF��S�FN%l�5����z�BM�h�oF-ǟ�{н�ǟ���B�U�EA ����>��}�чv�+���>ܘ��'�S�������ʉ���97v'���9���7%���7����q��?p��yʡƙa�ń��D���\n⪙ �8X;� ܤ���sc1I��o�S�>N]������iP��<7y�"� s��*WÔ妩u���s��u{38gZ� gs�u5�����pG��<����b�r"wg�ޜ�yG�l�93$N_<��{ X��1uN����)pb�c�����P��-����d���lUL���� ������&�,ɑ���g�B����3Y������dhx+��C����pB��͟_�ef���5Gr���?��L�v���f���6���3s��5Q���`��I�'�y�޳�� ��}n��'z���j�B��}�C]�3���漧1�>��k�(�Z�'�LayerElementVisibilityI��VersionIe��NameS�� MappingInformationTypeSByEdge� ReferenceInformationTypeSDirect��
Visibilityb��x�Qr�0 ����`
��$:�H�����u�9�i��2Z~i3�K��]7�����O�YP�a�
�b������]!:O�D����cȧ�ռuy�<W��E+AA�������e�ɦWAkH�v���X�+�(���D�qz���1�
�n�2(�E��i�}�����+�X�J=���ʝ(�J2M��oA�n#Q3���-��yC�T�ƪM^�L�Ɗ�9KKV��BL��4"[i:�qFom�~�� <�SЛC��/��m����}�I���`Y�Ќ�Y�L<"��>%��k=�|�%�tl ���SS:�(-��A����҆�QޜE&�F��T"�|w��;af�
�#耇`��hZη��-��8����a_�P�$# F�i!t!p���"S��! `F.8n܂{��I¡�Jh�)VDŽ��ꃮ�J=���LQ��t5e�cʊ��?��1If)� �lR����B��N`$�QU8�mB��|��`ӦP+�Ϩ <���AD��Q��!��!���i�����W�J3��biN�RƼFD����
t�ȌSu�If,�p��/H8T�"4��}[ח�IR���,F�@N,)L�x;�����*��$�ֆ&�$!]�)q�C|C�D��oz�i��I�Ɓ!{$�-�ʂZ�v�Q=]�u���0Ypb���"�ٟ&py�n��W�v˪]T[�ƛrAX��%��?��i|yr�KX&�8 ��$���x
�LayerElementMaterialIf�VersionIe|�NameS�� MappingInformationTypeSAllSame��ReferenceInformationTypeS IndexToDirect � Materialsi��LayerIF�VersionId�� LayerElement��TypeSLayerElementNormal��
TypedIndexI� LayerElement��TypeSLayerElementMaterial�
TypedIndexI�� LayerElementa�TypeSLayerElementVisibility}�
TypedIndexI�� LayerElementǠTypeSLayerElementUV��
TypedIndexIb�%ModelLp-s�SLowLeafModelSMeshZ�VersionI�� Properties70ɡHPS PreRotationSVector3DSVectorSD�V�D�D�+PSRotationActiveSboolSSI8�(PS InheritTypeSenumSSI��GPS
ScalingMaxSVector3DSVectorSDDDӢ8PSDefaultAttributeIndexSintSIntegerSI�.PS MaxHandleSintSIntegerSUHI2�ShadingCTU�CullingS
CullingOffy�)MaterialL�S�S02 - DefaultMaterialS��VersionIfܣ
ShadingModelSphong��
MultiLayerIl� Properties70P�1PS ShadingModelSKStringSSSphong��2PSEmissiveFactorSNumberSSADߤAPS AmbientColorSColorSSAD����?D����?D����?.�APS DiffuseColorSColorSSAD����?D����?D����?��EPSTransparentColorSColorSSAD�?D�?D�?ѥBPS SpecularColorSColorSSAD����?D����?D����?�2PSSpecularFactorSNumberSSADT�5PSShininessExponentSNumberSSAD����?��EPSEmissiveSVector3DSVectorSDDD��DPSAmbientSVector3DSVectorSD����?D����?D����?K�DPSDiffuseSVector3DSVectorSD����?D����?D����?��EPSSpecularSVector3DSVectorSDDDާ2PS ShininessSdoubleSNumberSD����?�0PSOpacitySdoubleSNumberSD�?_�5PS ReflectivitySdoubleSNumberSD1�$VideoL��&�S Map #2VideoSClipɨ TypeSClipp� Properties70c�sPSPathSKStringSXRefUrlSSHD:\Folders\Work\Photogrammetry\Tree\GroundLeaf\Max\GroundLeaf_Albedo.tga�� UseMipMapI��MFilenameSHD:\Folders\Work\Photogrammetry\Tree\GroundLeaf\Max\GroundLeaf_Albedo.tga$�RelativeFilenameSGroundLeaf_Albedo.tga)�"TextureL�U�SMap #2TextureS��TypeSTextureVideoClip��VersionI�Ҫ TextureNameSMap #2Texture�� Properties70&�-PSPremultiplyAlphaSboolSSId�0PSUVSetSKStringSSS UVChannel_1��(PS UseMaterialSboolSSI˫MediaS Map #2Video-�MFileNameSHD:\Folders\Work\Photogrammetry\Tree\GroundLeaf\Max\GroundLeaf_Albedo.tgad�RelativeFilenameSGroundLeaf_Albedo.tga��ModelUVTranslationDD¬ModelUVScalingD�?D�?��Texture_Alpha_SourceS Alpha_Black�CroppingIIII�&AnimationStackL�'Q�STake 001AnimStackS� Properties70��/PS LocalStopSKTimeSTimeSL�y]�#�3PS ReferenceStopSKTimeSTimeSL�y]�#j�'AnimationLayerL�W�SBaseLayerAnimLayerS�� Connections��CSOOLp-s�LݮCSOOL�W�L�'Q��CSOOL�NLp-s�+�CSOOL�S�Lp-s�c�*CSOPL�U�L�S�S DiffuseColor��CSOOL��&�L�U�t�Takes¯CurrentSg� TakeSTake 001�FileNameS Take_001.tak.� LocalTimeLL�y]�#Z� ReferenceTimeLL�y]�#������`�p���(z��Z�j���~�� �u�)

78
Assets/TestScenes/HDTest/Leaf/GroundLeaf/GroundLeaf.FBX.meta


fileFormatVersion: 2
guid: 646b4ac0331f8e447bd20f06eba916a3
timeCreated: 1460562588
licenseType: Pro
ModelImporter:
serializedVersion: 19
fileIDToRecycleName:
100000: //RootNode
400000: //RootNode
2300000: //RootNode
3300000: //RootNode
4300000: LowLeaf
9500000: //RootNode
materials:
importMaterials: 1
materialName: 0
materialSearch: 1
animations:
legacyGenerateAnimations: 4
bakeSimulation: 0
resampleCurves: 1
optimizeGameObjects: 0
motionNodeName:
animationImportErrors:
animationImportWarnings:
animationRetargetingWarnings:
animationDoRetargetingWarnings: 0
animationCompression: 1
animationRotationError: 0.5
animationPositionError: 0.5
animationScaleError: 0.5
animationWrapMode: 0
extraExposedTransformPaths: []
clipAnimations: []
isReadable: 1
meshes:
lODScreenPercentages: []
globalScale: 1
meshCompression: 0
addColliders: 0
importBlendShapes: 1
swapUVChannels: 0
generateSecondaryUV: 0
useFileUnits: 1
optimizeMeshForGPU: 1
keepQuads: 0
weldVertices: 1
secondaryUVAngleDistortion: 8
secondaryUVAreaDistortion: 15.000001
secondaryUVHardAngle: 88
secondaryUVPackMargin: 4
useFileScale: 1
tangentSpace:
normalSmoothAngle: 60
normalImportMode: 0
tangentImportMode: 3
importAnimation: 1
copyAvatar: 0
humanDescription:
human: []
skeleton: []
armTwist: 0.5
foreArmTwist: 0.5
upperLegTwist: 0.5
legTwist: 0.5
armStretch: 0.05
legStretch: 0.05
feetSpacing: 0
rootMotionBoneName:
rootMotionBoneRotation: {x: 0, y: 0, z: 0, w: 1}
hasTranslationDoF: 0
lastHumanDescriptionAvatarSource: {instanceID: 0}
animationType: 2
humanoidOversampling: 1
additionalBone: 0
userData:
assetBundleName:
assetBundleVariant:

57
Assets/TestScenes/HDTest/Leaf/GroundLeaf/GroundLeaf_Albedo.tga.meta


fileFormatVersion: 2
guid: 00447c5eeb984f54d92c80818840a36b
timeCreated: 1460562585
licenseType: Pro
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 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: 0
cubemapConvolution: 0
cubemapConvolutionSteps: 7
cubemapConvolutionExponent: 1.5
seamlessCubemap: 0
textureFormat: -3
maxTextureSize: 2048
textureSettings:
filterMode: -1
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: 1
spriteTessellationDetail: -1
textureType: -1
buildTargetSettings: []
spriteSheet:
sprites: []
outline: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:

57
Assets/TestScenes/HDTest/Leaf/GroundLeaf/GroundLeaf_Normal.tga.meta


fileFormatVersion: 2
guid: 0c3144d154991884c8aa53e7dc7893ff
timeCreated: 1460562586
licenseType: Pro
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 2
mipmaps:
mipMapMode: 0
enableMipMap: 1
linearTexture: 1
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 1
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
cubemapConvolution: 0
cubemapConvolutionSteps: 7
cubemapConvolutionExponent: 1.5
seamlessCubemap: 0
textureFormat: -1
maxTextureSize: 2048
textureSettings:
filterMode: -1
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: 1
buildTargetSettings: []
spriteSheet:
sprites: []
outline: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:

57
Assets/TestScenes/HDTest/Leaf/GroundLeaf/GroundLeaf_Roughness.tga.meta


fileFormatVersion: 2
guid: b24f69ff4ace9194fb0d9eee4f5cf1a4
timeCreated: 1460563486
licenseType: Pro
TextureImporter:
fileIDToRecycleName: {}
serializedVersion: 3
mipmaps:
mipMapMode: 0
enableMipMap: 1
linearTexture: 1
fadeOut: 0
borderMipMap: 0
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 0
cubemapConvolution: 0
cubemapConvolutionSteps: 7
cubemapConvolutionExponent: 1.5
seamlessCubemap: 0
textureFormat: -3
maxTextureSize: 2048
textureSettings:
filterMode: -1
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: 5
buildTargetSettings: []
spriteSheet:
sprites: []
outline: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:

9
Assets/TestScenes/HDTest/Leaf/GroundLeaf/Materials.meta


fileFormatVersion: 2
guid: 2c1704719515c3749a1c4f99bde03b83
folderAsset: yes
timeCreated: 1475755103
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

236
Assets/TestScenes/HDTest/Leaf/GroundLeaf/Materials/GroundLeaf_Albedo.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: GroundLeaf_Albedo
m_Shader: {fileID: 4800000, guid: e1a84346ee54f9f4993c2f05c59805a0, type: 3}
m_ShaderKeywords: _ALPHACUTOFFENABLE_OFF _DISTORTIONDEPTHTEST_OFF _DISTORTIONONLY_OFF
_DOUBLESIDED_LIGHTING_FLIP _EMISSION _MASKMAP _METALLICGLOSSMAP _NORMALMAP _NORMALMAP_TANGENT_SPACE
m_LightmapFlags: 1
m_CustomRenderQueue: -1
stringTagMap: {}
m_SavedProperties:
serializedVersion: 2
m_TexEnvs:
- first:
name: _BaseColorMap
second:
m_Texture: {fileID: 2800000, guid: 00447c5eeb984f54d92c80818840a36b, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _BumpMap
second:
m_Texture: {fileID: 2800000, guid: 0c3144d154991884c8aa53e7dc7893ff, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _DetailAlbedoMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _DetailMask
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _DetailNormalMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _DiffuseLightingMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _EmissionMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _EmissiveColorMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _HeightMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _MainTex
second:
m_Texture: {fileID: 2800000, guid: 00447c5eeb984f54d92c80818840a36b, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _MaskMap
second:
m_Texture: {fileID: 2800000, guid: b24f69ff4ace9194fb0d9eee4f5cf1a4, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _MetallicGlossMap
second:
m_Texture: {fileID: 2800000, guid: b24f69ff4ace9194fb0d9eee4f5cf1a4, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _NormalMap
second:
m_Texture: {fileID: 2800000, guid: 0c3144d154991884c8aa53e7dc7893ff, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _OcclusionMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _ParallaxMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _SpecularOcclusionMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- first:
name: _SubSurfaceRadiusMap
second:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- first:
name: _AlphaCutoff
second: 0.5
- first:
name: _AlphaCutoffEnable
second: 0
- first:
name: _BlendMode
second: 0
- first:
name: _BumpScale
second: 1
- first:
name: _CullMode
second: 0
- first:
name: _Cutoff
second: 0.5
- first:
name: _DetailNormalMapScale
second: 1
- first:
name: _DistortionDepthTest
second: 0
- first:
name: _DistortionOnly
second: 0
- first:
name: _DoubleSidedMode
second: 2
- first:
name: _DstBlend
second: 0
- first:
name: _EmissiveColorMode
second: 1
- first:
name: _EmissiveIntensity
second: 0
- first:
name: _GlossMapScale
second: 0.892
- first:
name: _Glossiness
second: 0.507
- first:
name: _GlossyReflections
second: 1
- first:
name: _HeightBias
second: 0
- first:
name: _HeightMapMode
second: 0
- first:
name: _HeightScale
second: 1
- first:
name: _MaterialId
second: 0
- first:
name: _Metallic
second: 0
- first:
name: _Mettalic
second: 0
- first:
name: _Mode
second: 1
- first:
name: _NormalMapSpace
second: 0
- first:
name: _OcclusionStrength
second: 1
- first:
name: _Parallax
second: 0.02
- first:
name: _Smoothness
second: 0.5
- first:
name: _SmoothnessTextureChannel
second: 0
- first:
name: _SpecularHighlights
second: 1
- first:
name: _SrcBlend
second: 1
- first:
name: _SubSurfaceRadius
second: 0
- first:
name: _SurfaceType
second: 0
- first:
name: _UVSec
second: 0
- first:
name: _ZWrite
second: 1
m_Colors:
- first:
name: _BaseColor
second: {r: 1, g: 1, b: 1, a: 1}
- first:
name: _Color
second: {r: 0.5882353, g: 0.5882353, b: 0.5882353, a: 1}
- first:
name: _EmissionColor
second: {r: 0, g: 0, b: 0, a: 1}
- first:
name: _EmissiveColor
second: {r: 0, g: 0, b: 0, a: 1}

8
Assets/TestScenes/HDTest/Leaf/GroundLeaf/Materials/GroundLeaf_Albedo.mat.meta


fileFormatVersion: 2
guid: 6d35c0ba34dda264db86b7d5eeb657e5
timeCreated: 1460562588
licenseType: Pro
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:

28
Assets/ScriptableRenderLoop/HDRenderLoop/Shaders/Material/CommonMaterial.hlsl


#ifndef UNITY_COMMON_MATERIAL_INCLUDED
#define UNITY_COMMON_MATERIAL_INCLUDED
//-----------------------------------------------------------------------------
// Parametrization function helpers
//-----------------------------------------------------------------------------
float PerceptualRoughnessToRoughness(float perceptualRoughness)
{
return perceptualRoughness * perceptualRoughness;
}
float RoughnessToPerceptualRoughness(float roughness)
{
return sqrt(roughness);
}
float PerceptualSmoothnessToRoughness(float perceptualSmoothness)
{
return (1 - perceptualSmoothness) * (1 - perceptualSmoothness);
}
float PerceptualSmoothnessToPerceptualRoughness(float perceptualSmoothness)
{
return (1 - perceptualSmoothness);
}
#endif // UNITY_COMMON_MATERIAL_INCLUDED

8
Assets/ScriptableRenderLoop/HDRenderLoop/Shaders/Material/CommonMaterial.hlsl.meta


fileFormatVersion: 2
guid: 71aa77c8ecebcc942b7914328d88f7d1
timeCreated: 1474465931
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

42
Assets/ScriptableRenderLoop/common/ShaderBase.cs


#if !__HLSL
using UnityEngine;
public struct Vec2
{
public static implicit operator Vec2(Vector2 v) { return new Vec2(v.x, v.y); }
public Vec2(Vec2 v) { x = v.x; y = v.y; }
public Vec2(float fX, float fY) { x = fX; y = fY; }
public float x, y;
};
public struct Vec3
{
public static implicit operator Vec3(Vector3 v) { return new Vec3(v.x, v.y, v.z); }
public static implicit operator Vec3(Vector4 v) { return new Vec3(v.x, v.y, v.z); }
public Vec3(Vec3 v) { x = v.x; y = v.y; z = v.z; }
public Vec3(float fX, float fY, float fZ) { x = fX; y = fY; z = fZ; }
public float x, y, z;
};
public struct Vec4
{
public static implicit operator Vec4(Vector4 v) { return new Vec4(v.x, v.y, v.z, v.w); }
public static implicit operator Vec4(Vector3 v) { return new Vec4(v.x, v.y, v.z, 1.0f); }
public Vec4(Vec4 v) { x = v.x; y = v.y; z = v.z; w = v.w; }
public Vec4(float fX, float fY, float fZ, float fW) { x = fX; y = fY; z = fZ; w = fW; }
public float x, y, z, w;
};
public struct Mat44
{
public Mat44( Matrix4x4 m ) { c0 = new Vec4(m.GetColumn(0)); c1 = new Vec4(m.GetColumn(1)); c2 = new Vec4(m.GetColumn(2)); c3 = new Vec4(m.GetColumn(3)); }
public Vec4 c0, c1, c2, c3;
};
#endif

12
Assets/ScriptableRenderLoop/common/ShaderBase.cs.meta


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

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

正在加载...
取消
保存