text:
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!181963792 &2655988077585873504
Preset:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInternal: {fileID: 0}
  m_Name: AlbedoTexture_Default
  m_TargetType:
    m_NativeTypeID: 1006
    m_ManagedTypePPtr: {fileID: 0}
    m_ManagedTypeFallback:
  m_Properties:
  - target: {fileID: 0}
    propertyPath: m_FileIDToRecycleName.Array.size
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_ExternalObjects.Array.size
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_MipMapMode
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_EnableMipMap
    value: 1
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_sRGBTexture
    value: 1
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_LinearTexture
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_FadeOut
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_BorderMipMap
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_MipMapsPreserveCoverage
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_AlphaTestReferenceValue
    value: 0.5
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_MipMapFadeDistanceStart
    value: 1
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_MipMapFadeDistanceEnd
    value: 3
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_ConvertToNormalMap
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_ExternalNormalMap
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_HeightScale
    value: 0.25
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_NormalMapFilter
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_IsReadable
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_StreamingMipmaps
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_StreamingMipmapsPriority
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_GrayScaleToAlpha
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_GenerateCubemap
    value: 6
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_CubemapConvolution
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_SeamlessCubemap
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_TextureFormat
    value: 1
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_MaxTextureSize
    value: 2048
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_TextureSettings.m_FilterMode
    value: -1
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_TextureSettings.m_Aniso
    value: 2
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_TextureSettings.m_MipBias
    value: -100
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_TextureSettings.m_WrapU
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_TextureSettings.m_WrapV
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_TextureSettings.m_WrapW
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_NPOTScale
    value: 1
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_Lightmap
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_CompressionQuality
    value: 50
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_SpriteMode
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_SpriteExtrude
    value: 1
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_SpriteMeshType
    value: 1
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_Alignment
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_SpritePivot.x
    value: 0.5
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_SpritePivot.y
    value: 0.5
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_SpritePixelsToUnits
    value: 100
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_SpriteBorder.x
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_SpriteBorder.y
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_SpriteBorder.z
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_SpriteBorder.w
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_SpriteGenerateFallbackPhysicsShape
    value: 1
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_AlphaUsage
    value: 1
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_AlphaIsTransparency
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_SpriteTessellationDetail
    value: -1
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_TextureType
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_TextureShape
    value: 1
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_SingleChannelComponent
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_MaxTextureSizeSet
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_CompressionQualitySet
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_TextureFormatSet
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.size
    value: 5
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[0].m_BuildTarget
    value: DefaultTexturePlatform
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[0].m_MaxTextureSize
    value: 8192
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[0].m_ResizeAlgorithm
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[0].m_TextureFormat
    value: -1
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[0].m_TextureCompression
    value: 1
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[0].m_CompressionQuality
    value: 50
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[0].m_CrunchedCompression
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[0].m_AllowsAlphaSplitting
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[0].m_Overridden
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[0].m_AndroidETC2FallbackOverride
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[1].m_BuildTarget
    value: Standalone
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[1].m_MaxTextureSize
    value: 8192
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[1].m_ResizeAlgorithm
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[1].m_TextureFormat
    value: -1
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[1].m_TextureCompression
    value: 1
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[1].m_CompressionQuality
    value: 50
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[1].m_CrunchedCompression
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[1].m_AllowsAlphaSplitting
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[1].m_Overridden
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[1].m_AndroidETC2FallbackOverride
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[2].m_BuildTarget
    value: iPhone
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[2].m_MaxTextureSize
    value: 8192
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[2].m_ResizeAlgorithm
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[2].m_TextureFormat
    value: -1
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[2].m_TextureCompression
    value: 1
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[2].m_CompressionQuality
    value: 50
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[2].m_CrunchedCompression
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[2].m_AllowsAlphaSplitting
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[2].m_Overridden
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[2].m_AndroidETC2FallbackOverride
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[3].m_BuildTarget
    value: Android
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[3].m_MaxTextureSize
    value: 8192
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[3].m_ResizeAlgorithm
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[3].m_TextureFormat
    value: -1
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[3].m_TextureCompression
    value: 1
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[3].m_CompressionQuality
    value: 50
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[3].m_CrunchedCompression
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[3].m_AllowsAlphaSplitting
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[3].m_Overridden
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[3].m_AndroidETC2FallbackOverride
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[4].m_BuildTarget
    value: Windows Store Apps
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[4].m_MaxTextureSize
    value: 8192
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[4].m_ResizeAlgorithm
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[4].m_TextureFormat
    value: -1
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[4].m_TextureCompression
    value: 1
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[4].m_CompressionQuality
    value: 50
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[4].m_CrunchedCompression
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[4].m_AllowsAlphaSplitting
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[4].m_Overridden
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettings.Array.data[4].m_AndroidETC2FallbackOverride
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_SpriteSheet.m_Sprites.Array.size
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_SpriteSheet.m_Outline.Array.size
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_SpriteSheet.m_PhysicsShape.Array.size
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_SpriteSheet.m_Bones.Array.size
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_SpriteSheet.m_SpriteID
    value:
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_SpriteSheet.m_Vertices.Array.size
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_SpriteSheet.m_Indices.Array.size
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_SpriteSheet.m_Edges.Array.size
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_SpriteSheet.m_Weights.Array.size
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_SpritePackingTag
    value:
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PSDRemoveMatte
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PSDShowRemoveMatteOption
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_UserData
    value:
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_AssetBundleName
    value:
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_AssetBundleVariant
    value:
    objectReference: {fileID: 0}


text:
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!181963792 &2655988077585873504
Preset:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInternal: {fileID: 0}
  m_Name: AudioDecompressOnLoad
  m_TargetType:
    m_NativeTypeID: 1020
    m_ManagedTypePPtr: {fileID: 0}
    m_ManagedTypeFallback:
  m_Properties:
  - target: {fileID: 0}
    propertyPath: m_ExternalObjects.Array.size
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_DefaultSettings.loadType
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_DefaultSettings.sampleRateSetting
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_DefaultSettings.sampleRateOverride
    value: 44100
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_DefaultSettings.compressionFormat
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_DefaultSettings.quality
    value: 1
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_DefaultSettings.conversionMode
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettingOverrides.Array.size
    value: 2
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettingOverrides.Array.data[0].first
    value: 4
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettingOverrides.Array.data[0].second.loadType
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettingOverrides.Array.data[0].second.sampleRateSetting
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettingOverrides.Array.data[0].second.sampleRateOverride
    value: 44100
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettingOverrides.Array.data[0].second.compressionFormat
    value: 3
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettingOverrides.Array.data[0].second.quality
    value: 1
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettingOverrides.Array.data[0].second.conversionMode
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettingOverrides.Array.data[1].first
    value: 7
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettingOverrides.Array.data[1].second.loadType
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettingOverrides.Array.data[1].second.sampleRateSetting
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettingOverrides.Array.data[1].second.sampleRateOverride
    value: 44100
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettingOverrides.Array.data[1].second.compressionFormat
    value: 1
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettingOverrides.Array.data[1].second.quality
    value: 1
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PlatformSettingOverrides.Array.data[1].second.conversionMode
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_ForceToMono
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_Normalize
    value: 1
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_PreloadAudioData
    value: 1
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_LoadInBackground
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_Ambisonic
    value: 0
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_3D
    value: 1
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_UserData
    value:
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_AssetBundleName
    value:
    objectReference: {fileID: 0}
  - target: {fileID: 0}
    propertyPath: m_AssetBundleVariant
    value:
    objectReference: {fileID: 0}

repo_name: CJT-Jackton/URP-Iridescence-Example

repo_language: HLSL

mime_type: text/plain


text:
fileFormatVersion: 2
guid: e7689051185d12f4298e1ebb2693a29f
NativeFormatImporter:
  externalObjects: {}
  mainObjectFileID: 0
  userData:
  assetBundleName:
  assetBundleVariant:


text:
fileFormatVersion: 2
guid: 8b6db50d53cb6c242a7eb82bc57305fe
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant:


text:
fileFormatVersion: 2
guid: 9081996b711da60409110445624614aa
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant:


text:
fileFormatVersion: 2
guid: 84f57d17f3688984db19a1401b068a44
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant:


text:
fileFormatVersion: 2
guid: c16807533f32ba642b0bf2272f413929
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant:


text:
fileFormatVersion: 2
guid: 38c276a3edaca934eaee8b754e164484
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant:


text:
#ifndef UNIVERSAL_LIGHTING_IRIDESCENCE_INCLUDED
#define UNIVERSAL_LIGHTING_IRIDESCENCE_INCLUDED

#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Shadows.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"

///////////////////////////////////////////////////////////////////////////////
//                         Helper Functions                                  //
///////////////////////////////////////////////////////////////////////////////

// Common constants
#define PI 3.14159265358979323846

// XYZ to CIE 1931 RGB color space (using neutral E illuminant)
static const half3x3 XYZ_TO_RGB = half3x3(2.3706743, -0.5138850, 0.0052982, -0.9000405, 1.4253036, -0.0146949, -0.4706338, 0.0885814, 1.0093968);

// Square functions for cleaner code
inline float sqr(float x) { return x * x; }
inline float2 sqr(float2 x) { return x * x; }

// Depolarization functions for natural light
inline float depol(float2 polV) { return 0.5 * (polV.x + polV.y); }
inline float3 depolColor(float3 colS, float3 colP) { return 0.5 * (colS + colP); }

// Evaluation XYZ sensitivity curves in Fourier space
float3 evalSensitivity(float opd, float shift) {

    // Use Gaussian fits, given by 3 parameters: val, pos and var
    float phase = 2 * PI * opd * 1.0e-6;
    float3 val = float3(5.4856e-13, 4.4201e-13, 5.2481e-13);
    float3 pos = float3(1.6810e+06, 1.7953e+06, 2.2084e+06);
    float3 var = float3(4.3278e+09, 9.3046e+09, 6.6121e+09);
    float3 xyz = val * sqrt(2.0 * PI * var) * cos(pos * phase + shift) * exp(-var * phase * phase);
    xyz.x += 9.7470e-14 * sqrt(2.0 * PI * 4.5282e+09) * cos(2.2399e+06 * phase + shift) * exp(-4.5282e+09 * phase * phase);
    return xyz / 1.0685e-7;
}

///////////////////////////////////////////////////////////////////////////////
//                         BRDF Functions                                    //
///////////////////////////////////////////////////////////////////////////////

struct BRDFDataAdvanced
{
    half3 diffuse;
    half3 specular;
    half perceptualRoughness;
    half roughness;
    half roughness2;
    half grazingTerm;

    // We save some light invariant BRDF terms so we don't have to recompute
    // them in the light loop. Take a look at DirectBRDF function for detailed explaination.
    half normalizationTerm;     // roughness * 4.0 + 2.0
    half roughness2MinusOne;    // roughness² - 1.0

#ifdef _IRIDESCENCE
    half iridescenceThickness;
    half iridescenceEta2;
    half iridescenceEta3;
    half iridescenceKappa3;
#endif
};

inline void InitializeBRDFDataAdvanced(SurfaceDataAdvanced surfaceData, out BRDFDataAdvanced outBRDFData)
{
#ifdef _SPECULAR_SETUP
    half reflectivity = ReflectivitySpecular(surfaceData.specular);
    half oneMinusReflectivity = 1.0 - reflectivity;

    outBRDFData.diffuse = surfaceData.albedo * (half3(1.0h, 1.0h, 1.0h) - surfaceData.specular);
    outBRDFData.specular = surfaceData.specular;
#else

    half oneMinusReflectivity = OneMinusReflectivityMetallic(surfaceData.metallic);
    half reflectivity = 1.0 - oneMinusReflectivity;

    outBRDFData.diffuse = surfaceData.albedo * oneMinusReflectivity;
    outBRDFData.specular = lerp(kDieletricSpec.rgb, surfaceData.albedo, surfaceData.metallic);
#endif

    outBRDFData.grazingTerm = saturate(surfaceData.smoothness + reflectivity);
    outBRDFData.perceptualRoughness = PerceptualSmoothnessToPerceptualRoughness(surfaceData.smoothness);
    outBRDFData.roughness = max(PerceptualRoughnessToRoughness(outBRDFData.perceptualRoughness), HALF_MIN);
    outBRDFData.roughness2 = outBRDFData.roughness * outBRDFData.roughness;

    outBRDFData.normalizationTerm = outBRDFData.roughness * 4.0h + 2.0h;
    outBRDFData.roughness2MinusOne = outBRDFData.roughness2 - 1.0h;

#ifdef _IRIDESCENCE
    outBRDFData.iridescenceThickness = surfaceData.iridescenceThickness;
    outBRDFData.iridescenceEta2 = surfaceData.iridescenceEta2;
    outBRDFData.iridescenceEta3 = surfaceData.iridescenceEta3;
    outBRDFData.iridescenceKappa3 = surfaceData.iridescenceKappa3;
#endif

#ifdef _ALPHAPREMULTIPLY_ON
    outBRDFData.diffuse *= surfaceData.alpha;
    surfaceData.alpha = surfaceData.alpha * oneMinusReflectivity + reflectivity;
#endif
}

// GGX distribution function
float GGX(float NdotH, float a) {
    float a2 = sqr(a);
    return a2 / (PI * sqr(sqr(NdotH) * (a2 - 1) + 1));
}

// Smith GGX geometric functions
float smithG1_GGX(float NdotV, float a) {
    float a2 = sqr(a);
    return 2 / (1 + sqrt(1 + a2 * (1 - sqr(NdotV)) / sqr(NdotV)));
}

float smithG_GGX(float NdotL, float NdotV, float a) {
    return smithG1_GGX(NdotL, a) * smithG1_GGX(NdotV, a);
}

// Fresnel equations for dielectric/dielectric interfaces.
void fresnelDielectric(in float ct1, in float n1, in float n2,
    out float2 R, out float2 phi) {

    float st1 = (1 - ct1 * ct1); // Sinus theta1 'squared'
    float nr = n1 / n2;

    if (sqr(nr) * st1 > 1) { // Total reflection

        float2 R = float2(1, 1);
        phi = 2.0 * atan(float2(-sqr(nr) * sqrt(st1 - 1.0 / sqr(nr)) / ct1,
            -sqrt(st1 - 1.0 / sqr(nr)) / ct1));
    }
    else {   // Transmission & Reflection

        float ct2 = sqrt(1 - sqr(nr) * st1);
        float2 r = float2((n2 * ct1 - n1 * ct2) / (n2 * ct1 + n1 * ct2),
            (n1 * ct1 - n2 * ct2) / (n1 * ct1 + n2 * ct2));
        phi.x = (r.x < 0.0) ? PI : 0.0;
        phi.y = (r.y < 0.0) ? PI : 0.0;
        R = sqr(r);
    }
}

// Fresnel equations for dielectric/conductor interfaces.
void fresnelConductor(in float ct1, in float n1, in float n2, in float k,
    out float2 R, out float2 phi) {

    if (k == 0) { // use dielectric formula to avoid numerical issues
        fresnelDielectric(ct1, n1, n2, R, phi);
        return;
    }

    float A = sqr(n2) * (1 - sqr(k)) - sqr(n1) * (1 - sqr(ct1));
    float B = sqrt(sqr(A) + sqr(2 * sqr(n2) * k));
    float U = sqrt((A + B) / 2.0);
    float V = sqrt((B - A) / 2.0);

    R.y = (sqr(n1 * ct1 - U) + sqr(V)) / (sqr(n1 * ct1 + U) + sqr(V));
    phi.y = atan2(2 * n1 * V * ct1, sqr(U) + sqr(V) - sqr(n1 * ct1)) + PI;

    R.x = (sqr(sqr(n2) * (1 - sqr(k)) * ct1 - n1 * U) + sqr(2 * sqr(n2) * k * ct1 - n1 * V))
        / (sqr(sqr(n2) * (1 - sqr(k)) * ct1 + n1 * U) + sqr(2 * sqr(n2) * k * ct1 + n1 * V));
    phi.x = atan2(2 * n1 * sqr(n2) * ct1 * (2 * k * U - (1 - sqr(k)) * V), sqr(sqr(n2) * (1 + sqr(k)) * ct1) - sqr(n1) * (sqr(U) + sqr(V)));
}

half3 EnvironmentBRDFIridescence(BRDFDataAdvanced brdfData, half3 indirectDiffuse, half3 indirectSpecular, half3 fresnelIridescent)
{
    half3 c = indirectDiffuse * brdfData.diffuse;
    float surfaceReduction = 1.0 / (brdfData.roughness2 + 1.0);
    c += surfaceReduction * indirectSpecular * lerp(brdfData.specular * fresnelIridescent, brdfData.grazingTerm, fresnelIridescent);
    return c;
}

#ifdef _IRIDESCENCE
// Evaluate the reflectance for a thin-film layer on top of a dielectric medum
// Based on the paper [LAURENT 2017] A Practical Extension to Microfacet Theory for the Modeling of Varying Iridescence
half3 ThinFilmIridescence(BRDFDataAdvanced brdfData, InputDataAdvanced inputData, float cosTheta1)
{
    float eta_1 = 1.0; // Air on top, no coat.
    float eta_2 = brdfData.iridescenceEta2;
    float eta_3 = brdfData.iridescenceEta3;
    float kappa_3 = brdfData.iridescenceKappa3;

    // iridescenceThickness unit is micrometer for this equation here. Mean 0.5 is 500nm.
    float Dinc = 2 * eta_2 * brdfData.iridescenceThickness;

    // Force eta_2 -> eta_1 when Dinc -> 0.0
    eta_2 = lerp(eta_1, eta_2, smoothstep(0.0, 0.03, Dinc));

    float cosTheta2 = sqrt(1.0 - sqr(eta_1 / eta_2) * (1 - sqr(cosTheta1)));

    // First interface
    float2 R12, phi12;
    fresnelDielectric(cosTheta1, eta_1, eta_2, R12, phi12);
    float2 R21 = R12;
    float2 T121 = float2(1.0, 1.0) - R12;
    float2 phi21 = float2(PI, PI) - phi12;

    // Second interface
    float2 R23, phi23;
    fresnelConductor(cosTheta2, eta_2, eta_3, kappa_3, R23, phi23);

    // Phase shift
    float OPD = Dinc * cosTheta2;
    float2 phi2 = phi21 + phi23;

    // Compound terms
    float3 I = float3(0, 0, 0);
    float2 R123 = clamp(R12 * R23, 1e-5, 0.9999);
    float2 r123 = sqrt(R123);
    float2 Rs = sqr(T121) * R23 / (float2(1.0, 1.0) - R123);

    // Reflectance term for m=0 (DC term amplitude)
    float2 C0 = R12 + Rs;
    float3 S0 = evalSensitivity(0.0, 0.0);
    I += depol(C0) * S0;

    // Reflectance term for m>0 (pairs of diracs)
    float2 Cm = Rs - T121;

    [unroll(3)]
    for (int m = 1; m <= 3; ++m)
    {
        Cm *= r123;
        float3 SmS = 2.0 * evalSensitivity(m * OPD, m * phi2.x);
        float3 SmP = 2.0 * evalSensitivity(m * OPD, m * phi2.y);
        I += depolColor(Cm.x * SmS, Cm.y * SmP);
    }

    // Convert back to RGB reflectance
    I = max(mul(I, XYZ_TO_RGB), float3(0.0, 0.0, 0.0));

    return I;
}

half3 DirectBDRFIridescence(BRDFDataAdvanced brdfData, InputDataAdvanced inputData, half3 lightDirectionWS)
{
    // Compute dot products
    float NdotL = dot(inputData.normalWS, lightDirectionWS);
    float NdotV = dot(inputData.normalWS, inputData.viewDirectionWS);

    float3 halfDir = SafeNormalize(float3(lightDirectionWS) + float3(inputData.viewDirectionWS));
    float NdotH = dot(inputData.normalWS, halfDir);
    float cosTheta1 = dot(halfDir, float3(lightDirectionWS));

    half3 I = ThinFilmIridescence(brdfData, inputData, cosTheta1);
    // Microfacet BRDF formula
    float D = GGX(NdotH, brdfData.perceptualRoughness);
    float G = smithG_GGX(NdotL, NdotV, brdfData.perceptualRoughness);

    half3 diffuseTerm = brdfData.diffuse;
    half3 specularTerm = D * G * I / (4 * NdotL * NdotV);

    half3 color = specularTerm * brdfData.specular + diffuseTerm;

    return color;
}
#endif

// Based on Minimalist CookTorrance BRDF
// Implementation is slightly different from original derivation: http://www.thetenthplanet.de/archives/255
//
// * NDF [Modified] GGX
// * Modified Kelemen and Szirmay-Kalos for Visibility term
// * Fresnel approximated with 1/LdotH
half3 DirectBDRFAdvanced(BRDFDataAdvanced brdfData, InputDataAdvanced inputData, half3 lightDirectionWS)
{
#ifndef _SPECULARHIGHLIGHTS_OFF
    float3 halfDir = SafeNormalize(float3(lightDirectionWS) + float3(inputData.viewDirectionWS));

    float NoH = saturate(dot(inputData.normalWS, halfDir));
    half LoH = saturate(dot(lightDirectionWS, halfDir));

    // GGX Distribution multiplied by combined approximation of Visibility and Fresnel
    // BRDFspec = (D * V * F) / 4.0
    // D = roughness² / ( NoH² * (roughness² - 1) + 1 )²
    // V * F = 1.0 / ( LoH² * (roughness + 0.5) )
    // See "Optimizing PBR for Mobile" from Siggraph 2015 moving mobile graphics course
    // https://community.arm.com/events/1155

    // Final BRDFspec = roughness² / ( NoH² * (roughness² - 1) + 1 )² * (LoH² * (roughness + 0.5) * 4.0)
    // We further optimize a few light invariant terms
    // brdfData.normalizationTerm = (roughness + 0.5) * 4.0 rewritten as roughness * 4.0 + 2.0 to a fit a MAD.
    float d = NoH * NoH * brdfData.roughness2MinusOne + 1.00001f;

    half LoH2 = LoH * LoH;
    half specularTerm = brdfData.roughness2 / ((d * d) * max(0.1h, LoH2) * brdfData.normalizationTerm);
    half3 diffuseTerm = brdfData.diffuse;

    // on mobiles (where half actually means something) denominator have risk of overflow
    // clamp below was added specifically to "fix" that, but dx compiler (we convert bytecode to metal/gles)
    // sees that specularTerm have only non-negative terms, so it skips max(0,..) in clamp (leaving only min(100,...))
#if defined (SHADER_API_MOBILE)
    specularTerm = specularTerm - HALF_MIN;
    specularTerm = clamp(specularTerm, 0.0, 100.0); // Prevent FP16 overflow on mobiles
#endif

    half3 color = specularTerm * brdfData.specular + diffuseTerm;
    return color;
#else
    return brdfData.diffuse;
#endif
}

///////////////////////////////////////////////////////////////////////////////
//                      Global Illumination                                  //
///////////////////////////////////////////////////////////////////////////////

half3 GlobalIlluminationAdvanced(BRDFDataAdvanced brdfData, InputDataAdvanced inputData, half occlusion)
{
    half3 reflectVector = reflect(-inputData.viewDirectionWS, inputData.normalWS);

    half3 indirectDiffuse = inputData.bakedGI * occlusion;
    half3 indirectSpecular = GlossyEnvironmentReflection(reflectVector, brdfData.perceptualRoughness, occlusion);

#ifdef _IRIDESCENCE
    float3 halfDir = SafeNormalize(float3(reflectVector) + float3(inputData.viewDirectionWS));
    float cosTheta1 = dot(halfDir, float3(reflectVector));

    half3 fresnelIridescent = ThinFilmIridescence(brdfData, inputData, cosTheta1);

    return EnvironmentBRDFIridescence(brdfData, indirectDiffuse, indirectSpecular, fresnelIridescent);

#else
    half fresnelTerm = Pow4(1.0 - saturate(dot(inputData.normalWS, inputData.viewDirectionWS)));
    return EnvironmentBRDF(brdfData, indirectDiffuse, indirectSpecular, fresnelTerm);

#endif
}

///////////////////////////////////////////////////////////////////////////////
//                      Lighting Functions                                   //
///////////////////////////////////////////////////////////////////////////////

half3 LightingAdvanced(BRDFDataAdvanced brdfData, half3 lightColor, half3 lightDirectionWS, half lightAttenuation, InputDataAdvanced inputData)
{
    half NdotL = saturate(dot(inputData.normalWS, lightDirectionWS));
    half3 radiance = lightColor * (lightAttenuation * NdotL);

#if _IRIDESCENCE
    return DirectBDRFIridescence(brdfData, inputData, lightDirectionWS) * radiance;
#else
    return DirectBDRFAdvanced(brdfData, inputData, lightDirectionWS) * radiance;
#endif
}

half3 LightingAdvanced(BRDFDataAdvanced brdfData, Light light, InputDataAdvanced inputData)
{
    return LightingAdvanced(brdfData, light.color, light.direction, light.distanceAttenuation * light.shadowAttenuation, inputData);
}

///////////////////////////////////////////////////////////////////////////////
//                      Fragment Functions                                   //
//       Used by ShaderGraph and others builtin renderers                    //
///////////////////////////////////////////////////////////////////////////////
half4 UniversalFragmentAdvanced(InputDataAdvanced inputData, SurfaceDataAdvanced surfaceData)
{
    BRDFDataAdvanced brdfData;
    InitializeBRDFDataAdvanced(surfaceData, brdfData);

    Light mainLight = GetMainLight(inputData.shadowCoord);
    MixRealtimeAndBakedGI(mainLight, inputData.normalWS, inputData.bakedGI, half4(0, 0, 0, 0));

    half3 color = GlobalIlluminationAdvanced(brdfData, inputData, surfaceData.occlusion);
    color += LightingAdvanced(brdfData, mainLight, inputData);

#ifdef _ADDITIONAL_LIGHTS
    int pixelLightCount = GetAdditionalLightsCount();
    for (int i = 0; i < pixelLightCount; ++i)
    {
        Light light = GetAdditionalLight(i, inputData.positionWS);
        color += LightingAdvanced(brdfData, light, inputData);
    }
#endif

#ifdef _ADDITIONAL_LIGHTS_VERTEX
    color += inputData.vertexLighting * brdfData.diffuse;
#endif

    color += surfaceData.emission;
    return half4(color, surfaceData.alpha);
}
#endif // UNIVERSAL_LIGHTING_IRIDESCENCE_INCLUDED


text:
fileFormatVersion: 2
guid: 3ba28c3e1c47ab84f8927483d04b7bbd
ShaderImporter:
  externalObjects: {}
  defaultTextures: []
  nonModifiableTextures: []
  userData:
  assetBundleName:
  assetBundleVariant:


text:
fileFormatVersion: 2
guid: 0dddc842d70097d468e21bbf73181a07
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant:


text:
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Scripting.APIUpdating;

namespace UnityEditor.Rendering.Universal.ShaderGUI
{
    public static class IridescenceGUI
    {
        public enum IridescenceMode
        {
            None = 0,
            ThinFilm = 1
        }

        public static class Styles
        {
            public static GUIContent iridescenceText = new GUIContent("Iridescence", "Select the iridescence mode.");

            public static GUIContent iridescenceThicknessText = new GUIContent("Thickness",
                "Thickness of the thin-film. Unit is micrometer, means 0.5 is 500nm.");

            public static GUIContent iridescenceThicknessMapText = new GUIContent("Thickness Map",
                "Specifies the Iridescence Thickness map (R) for this Material.");

            public static GUIContent iridescenceThicknessRemapText = new GUIContent("Remap",
                "Iridescence Thickness remap");

            public static GUIContent iridescenceEta2Text = new GUIContent("Thin-film IOR (η₂)",
                "Index of refraction of the thin-film.");

            public static GUIContent iridescenceEta3Text = new GUIContent("Base IOR (η₃)",
                "The real part of the index of refraction of the base layer. Refer to https://refractiveindex.info/ for more information.");

            public static GUIContent iridescenceKappa3Text = new GUIContent("Base IOR (κ₃)",
                "The imaginary part of the index of refraction of the base layer. Refer to https://refractiveindex.info/ for more information.");

            public static readonly string[] iridescenceModeName = { "None", "Thin-film" };
        }

        public struct IridescenceProperties
        {
            public MaterialProperty iridescence;
            public MaterialProperty iridescenceThickness;
            public MaterialProperty iridescenceThicknessMap;
            public MaterialProperty iridescenceThicknessRemap;
            public MaterialProperty iridescenceEta2;
            public MaterialProperty iridescenceEta3;
            public MaterialProperty iridescenceKappa3;

            public IridescenceProperties(MaterialProperty[] properties)
            {
                iridescence = BaseShaderGUI.FindProperty("_Iridescence", properties, false);
                iridescenceThickness = BaseShaderGUI.FindProperty("_IridescenceThickness", properties, false);
                iridescenceThicknessMap = BaseShaderGUI.FindProperty("_IridescenceThicknessMap", properties, false);
                iridescenceThicknessRemap = BaseShaderGUI.FindProperty("_IridescenceThicknessRemap", properties, false);
                iridescenceEta2 = BaseShaderGUI.FindProperty("_IridescneceEta2", properties, false);
                iridescenceEta3 = BaseShaderGUI.FindProperty("_IridescneceEta3", properties, false);
                iridescenceKappa3 = BaseShaderGUI.FindProperty("_IridescneceKappa3", properties, false);
            }
        }

        public static void DoIridescenceArea(IridescenceProperties properties, MaterialEditor materialEditor)
        {
            EditorGUI.BeginChangeCheck();
            var iridescenceMode = (int)properties.iridescence.floatValue;
            iridescenceMode = EditorGUILayout.Popup(Styles.iridescenceText, iridescenceMode, Styles.iridescenceModeName);
            if (EditorGUI.EndChangeCheck())
                properties.iridescence.floatValue = iridescenceMode;

            if ((IridescenceMode)iridescenceMode == IridescenceMode.ThinFilm)
            {
                bool hasThicknessMap = properties.iridescenceThicknessMap.textureValue != null;
                materialEditor.TexturePropertySingleLine(
                hasThicknessMap ? Styles.iridescenceThicknessMapText : Styles.iridescenceThicknessText,
                properties.iridescenceThicknessMap,
                hasThicknessMap ? properties.iridescenceThicknessRemap : properties.iridescenceThickness);

                EditorGUI.indentLevel++;
                materialEditor.ShaderProperty(properties.iridescenceEta2, Styles.iridescenceEta2Text);
                materialEditor.ShaderProperty(properties.iridescenceEta3, Styles.iridescenceEta3Text);
                materialEditor.ShaderProperty(properties.iridescenceKappa3, Styles.iridescenceKappa3Text);
                EditorGUI.indentLevel--;
            }
        }

        public static void SetMaterialKeywords(Material material)
        {
            if (material.HasProperty("_Iridescence"))
            {
                IridescenceMode iridescenceMode = (IridescenceMode)material.GetFloat("_Iridescence");

                CoreUtils.SetKeyword(material, "_IRIDESCENCE", iridescenceMode == IridescenceMode.ThinFilm);
            }

            //if (material.HasProperty("_EnableIridescence"))
            //    CoreUtils.SetKeyword(material, "_IRIDESCENCE", material.GetFloat("_EnableIridescence") == 1.0f);

            if (material.HasProperty("_IridescenceThicknessMap"))
                CoreUtils.SetKeyword(material, "_IRIDESCENCE_THICKNESSMAP", material.GetTexture("_IridescenceThicknessMap"));
        }
    }
}


text:
fileFormatVersion: 2
guid: 93ab088fd28c7e04ba612ccaacffd41c
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:


text:
fileFormatVersion: 2
guid: 0278c68eb7d264447a25ec1ca26e7e60
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant:


text:
using System;
using UnityEngine;

namespace UnityEditor.Rendering.Universal.ShaderGUI
{
    internal class LitIridescenceShader : BaseShaderGUI
    {
        // Properties
        private LitGUI.LitProperties litProperties;
        private IridescenceGUI.IridescenceProperties iridescenceProperties;

        // collect properties from the material properties
        public override void FindProperties(MaterialProperty[] properties)
        {
            base.FindProperties(properties);
            litProperties = new LitGUI.LitProperties(properties);
            iridescenceProperties = new IridescenceGUI.IridescenceProperties(properties);
        }

        // material changed check
        public override void MaterialChanged(Material material)
        {
            if (material == null)
                throw new ArgumentNullException("material");

            SetMaterialKeywords(material, LitGUI.SetMaterialKeywords, IridescenceGUI.SetMaterialKeywords);
        }

        // material main surface options
        public override void DrawSurfaceOptions(Material material)
        {
            if (material == null)
                throw new ArgumentNullException("material");

            // Use default labelWidth
            EditorGUIUtility.labelWidth = 0f;

            // Detect any changes to the material
            EditorGUI.BeginChangeCheck();
            if (litProperties.workflowMode != null)
            {
                DoPopup(LitGUI.Styles.workflowModeText, litProperties.workflowMode, Enum.GetNames(typeof(LitGUI.WorkflowMode)));
            }
            if (EditorGUI.EndChangeCheck())
            {
                foreach (var obj in blendModeProp.targets)
                    MaterialChanged((Material)obj);
            }
            base.DrawSurfaceOptions(material);
        }

        // material main surface inputs
        public override void DrawSurfaceInputs(Material material)
        {
            base.DrawSurfaceInputs(material);
            LitGUI.Inputs(litProperties, materialEditor, material);
            IridescenceGUI.DoIridescenceArea(iridescenceProperties, materialEditor);
            DrawEmissionProperties(material, true);
            DrawTileOffset(materialEditor, baseMapProp);
        }

        // material main advanced options
        public override void DrawAdvancedOptions(Material material)
        {
            if (litProperties.reflections != null && litProperties.highlights != null)
            {
                EditorGUI.BeginChangeCheck();
                {
                    materialEditor.ShaderProperty(litProperties.highlights, LitGUI.Styles.highlightsText);
                    materialEditor.ShaderProperty(litProperties.reflections, LitGUI.Styles.reflectionsText);
                    EditorGUI.BeginChangeCheck();
                }
            }

            base.DrawAdvancedOptions(material);
        }

        public override void AssignNewShaderToMaterial(Material material, Shader oldShader, Shader newShader)
        {
            if (material == null)
                throw new ArgumentNullException("material");

            // _Emission property is lost after assigning Standard shader to the material
            // thus transfer it before assigning the new shader
            if (material.HasProperty("_Emission"))
            {
                material.SetColor("_EmissionColor", material.GetColor("_Emission"));
            }

            base.AssignNewShaderToMaterial(material, oldShader, newShader);

            if (oldShader == null || !oldShader.name.Contains("Legacy Shaders/"))
            {
                SetupMaterialBlendMode(material);
                return;
            }

            SurfaceType surfaceType = SurfaceType.Opaque;
            BlendMode blendMode = BlendMode.Alpha;
            if (oldShader.name.Contains("/Transparent/Cutout/"))
            {
                surfaceType = SurfaceType.Opaque;
                material.SetFloat("_AlphaClip", 1);
            }
            else if (oldShader.name.Contains("/Transparent/"))
            {
                // NOTE: legacy shaders did not provide physically based transparency
                // therefore Fade mode
                surfaceType = SurfaceType.Transparent;
                blendMode = BlendMode.Alpha;
            }
            material.SetFloat("_Surface", (float)surfaceType);
            material.SetFloat("_Blend", (float)blendMode);

            if (oldShader.name.Equals("Standard (Specular setup)"))
            {
                material.SetFloat("_WorkflowMode", (float)LitGUI.WorkflowMode.Specular);
                Texture texture = material.GetTexture("_SpecGlossMap");
                if (texture != null)
                    material.SetTexture("_MetallicSpecGlossMap", texture);
            }
            else
            {
                material.SetFloat("_WorkflowMode", (float)LitGUI.WorkflowMode.Metallic);
                Texture texture = material.GetTexture("_MetallicGlossMap");
                if (texture != null)
                    material.SetTexture("_MetallicSpecGlossMap", texture);
            }

            MaterialChanged(material);
        }
    }
}


text:
fileFormatVersion: 2
guid: 56c9e3136f9cf0a4b9bef277e9ca429c
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:


text:
fileFormatVersion: 2
guid: 55ed02a0910f07748b8671024c89e766
ShaderImporter:
  externalObjects: {}
  defaultTextures: []
  nonModifiableTextures: []
  userData:
  assetBundleName:
  assetBundleVariant:


text:
fileFormatVersion: 2
guid: b5583d07f471cf844bce227491fca6b3
ShaderImporter:
  externalObjects: {}
  defaultTextures: []
  nonModifiableTextures: []
  userData:
  assetBundleName:
  assetBundleVariant:


text:
#ifndef UNIVERSAL_FORWARD_IRIDESCENCE_LIT_PASS_INCLUDED
#define UNIVERSAL_FORWARD_IRIDESCENCE_LIT_PASS_INCLUDED

#include "../ShaderLibrary/IridescenceLighting.hlsl"

struct Attributes
{
    float4 positionOS   : POSITION;
    float3 normalOS     : NORMAL;
    float4 tangentOS    : TANGENT;
    float2 texcoord     : TEXCOORD0;
    float2 lightmapUV   : TEXCOORD1;
    UNITY_VERTEX_INPUT_INSTANCE_ID
};

struct Varyings
{
    float2 uv                       : TEXCOORD0;
    DECLARE_LIGHTMAP_OR_SH(lightmapUV, vertexSH, 1);

#if defined(REQUIRES_WORLD_SPACE_POS_INTERPOLATOR)
    float3 positionWS               : TEXCOORD2;
#endif

    float3 normalWS                 : TEXCOORD3;
#ifdef _NORMALMAP
    float4 tangentWS                : TEXCOORD4;    // xyz: tangent, w: sign
#endif
    float3 viewDirWS                : TEXCOORD5;

    half4 fogFactorAndVertexLight   : TEXCOORD6; // x: fogFactor, yzw: vertex light

#if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR)
    float4 shadowCoord              : TEXCOORD7;
#endif

    float4 positionCS               : SV_POSITION;
    UNITY_VERTEX_INPUT_INSTANCE_ID
    UNITY_VERTEX_OUTPUT_STEREO
};

void InitializeInputData(Varyings input, half3 normalTS, out InputData inputData)
{
    inputData = (InputData)0;

#if defined(REQUIRES_WORLD_SPACE_POS_INTERPOLATOR)
    inputData.positionWS = input.positionWS;
#endif

    half3 viewDirWS = SafeNormalize(input.viewDirWS);
#ifdef _NORMALMAP
    float sgn = input.tangentWS.w;      // should be either +1 or -1
    float3 bitangent = sgn * cross(input.normalWS.xyz, input.tangentWS.xyz);
    inputData.normalWS = TransformTangentToWorld(normalTS, half3x3(input.tangentWS.xyz, bitangent.xyz, input.normalWS.xyz));
#else
    inputData.normalWS = input.normalWS;
#endif

    inputData.normalWS = NormalizeNormalPerPixel(inputData.normalWS);
    inputData.viewDirectionWS = viewDirWS;

#if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR)
    inputData.shadowCoord = input.shadowCoord;
#elif defined(MAIN_LIGHT_CALCULATE_SHADOWS)
    inputData.shadowCoord = TransformWorldToShadowCoord(inputData.positionWS);
#else
    inputData.shadowCoord = float4(0, 0, 0, 0);
#endif

    inputData.fogCoord = input.fogFactorAndVertexLight.x;
    inputData.vertexLighting = input.fogFactorAndVertexLight.yzw;
    inputData.bakedGI = SAMPLE_GI(input.lightmapUV, input.vertexSH, inputData.normalWS);
}

///////////////////////////////////////////////////////////////////////////////
//                  Vertex and Fragment functions                            //
///////////////////////////////////////////////////////////////////////////////

// Used in Standard (Physically Based) shader
Varyings LitPassVertex(Attributes input)
{
    Varyings output = (Varyings)0;

    UNITY_SETUP_INSTANCE_ID(input);
    UNITY_TRANSFER_INSTANCE_ID(input, output);
    UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output);

    VertexPositionInputs vertexInput = GetVertexPositionInputs(input.positionOS.xyz);

    // normalWS and tangentWS already normalize.
    // this is required to avoid skewing the direction during interpolation
    // also required for per-vertex lighting and SH evaluation
    VertexNormalInputs normalInput = GetVertexNormalInputs(input.normalOS, input.tangentOS);
    float3 viewDirWS = GetCameraPositionWS() - vertexInput.positionWS;
    half3 vertexLight = VertexLighting(vertexInput.positionWS, normalInput.normalWS);
    half fogFactor = ComputeFogFactor(vertexInput.positionCS.z);

    output.uv = TRANSFORM_TEX(input.texcoord, _BaseMap);

    // already normalized from normal transform to WS.
    output.normalWS = normalInput.normalWS;
    output.viewDirWS = viewDirWS;
#ifdef _NORMALMAP
    real sign = input.tangentOS.w * GetOddNegativeScale();
    output.tangentWS = half4(normalInput.tangentWS.xyz, sign);
#endif

    OUTPUT_LIGHTMAP_UV(input.lightmapUV, unity_LightmapST, output.lightmapUV);
    OUTPUT_SH(output.normalWS.xyz, output.vertexSH);

    output.fogFactorAndVertexLight = half4(fogFactor, vertexLight);

#if defined(REQUIRES_WORLD_SPACE_POS_INTERPOLATOR)
    output.positionWS = vertexInput.positionWS;
#endif

#if defined(REQUIRES_VERTEX_SHADOW_COORD_INTERPOLATOR)
    output.shadowCoord = GetShadowCoord(vertexInput);
#endif

    output.positionCS = vertexInput.positionCS;

    return output;
}

// Used in Standard (Physically Based) shader
half4 LitPassFragment(Varyings input) : SV_Target
{
    UNITY_SETUP_INSTANCE_ID(input);
    UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input);

    SurfaceDataAdvanced surfaceData;
    InitializeStandardLitSurfaceData(input.uv, surfaceData);

    InputDataAdvanced inputData;
    InitializeInputData(input, surfaceData.normalTS, inputData);

    half4 color = UniversalFragmentAdvanced(inputData, surfaceData);

    color.rgb = MixFog(color.rgb, inputData.fogCoord);
    color.a = OutputAlpha(color.a);

    return color;
}

#endif


text:
Shader "Universal Render Pipeline/Iridescence Lit"
{
    Properties
    {
        // Specular vs Metallic workflow
        [HideInInspector] _WorkflowMode("WorkflowMode", Float) = 1.0

        [MainColor] _BaseColor("Color", Color) = (1,1,1,1)
        [MainTexture] _BaseMap("Albedo", 2D) = "white" {}

        _Cutoff("Alpha Cutoff", Range(0.0, 1.0)) = 0.5

        _Smoothness("Smoothness", Range(0.0, 1.0)) = 0.5
        _GlossMapScale("Smoothness Scale", Range(0.0, 1.0)) = 1.0
        _SmoothnessTextureChannel("Smoothness texture channel", Float) = 0

        _Metallic("Metallic", Range(0.0, 1.0)) = 0.0
        _MetallicGlossMap("Metallic", 2D) = "white" {}

        _SpecColor("Specular", Color) = (0.2, 0.2, 0.2)
        _SpecGlossMap("Specular", 2D) = "white" {}

        [ToggleOff] _SpecularHighlights("Specular Highlights", Float) = 1.0
        [ToggleOff] _EnvironmentReflections("Environment Reflections", Float) = 1.0

        _BumpScale("Scale", Float) = 1.0
        _BumpMap("Normal Map", 2D) = "bump" {}

        _OcclusionStrength("Strength", Range(0.0, 1.0)) = 1.0
        _OcclusionMap("Occlusion", 2D) = "white" {}

        _EmissionColor("Color", Color) = (0,0,0)
        _EmissionMap("Emission", 2D) = "white" {}

        [Enum(None, 0, ThinFilm, 1)] _Iridescence("Iridescence", Float) = 1.0
        _IridescenceThickness("Iridescence Layer Thickness", Range(0.0, 2.5)) = 0.5
        _IridescenceThicknessMap("Iridescence Layer Thickness Map", 2D) = "white" {}
        [MinMax(0, 2.5)] _IridescenceThicknessRemap("Iridescence Layer Thickness Remap", Vector) = (0.3, 1.8, 0.0, 0.0)
        _IridescneceEta2("Thin-film IOR (η₂)", Range(0.0, 5.0)) = 1.33
        _IridescneceEta3("Base IOR (η₃)", Range(0.0, 5.0)) = 1.85
        _IridescneceKappa3("Base IOR (κ₃)", Range(0.0, 5.0)) = 0.0

        // Blending state
        [HideInInspector] _Surface("__surface", Float) = 0.0
        [HideInInspector] _Blend("__blend", Float) = 0.0
        [HideInInspector] _AlphaClip("__clip", Float) = 0.0
        [HideInInspector] _SrcBlend("__src", Float) = 1.0
        [HideInInspector] _DstBlend("__dst", Float) = 0.0
        [HideInInspector] _ZWrite("__zw", Float) = 1.0
        [HideInInspector] _Cull("__cull", Float) = 2.0

        _ReceiveShadows("Receive Shadows", Float) = 1.0
        // Editmode props
        [HideInInspector] _QueueOffset("Queue offset", Float) = 0.0

        // ObsoleteProperties
        [HideInInspector] _MainTex("BaseMap", 2D) = "white" {}
        [HideInInspector] _Color("Base Color", Color) = (1, 1, 1, 1)
        [HideInInspector] _GlossMapScale("Smoothness", Float) = 0.0
        [HideInInspector] _Glossiness("Smoothness", Float) = 0.0
        [HideInInspector] _GlossyReflections("EnvironmentReflections", Float) = 0.0
    }

    SubShader
    {
        // Universal Pipeline tag is required. If Universal render pipeline is not set in the graphics settings
        // this Subshader will fail. One can add a subshader below or fallback to Standard built-in to make this
        // material work with both Universal Render Pipeline and Builtin Unity Pipeline
        Tags{"RenderType" = "Opaque" "RenderPipeline" = "UniversalPipeline" "IgnoreProjector" = "True"}
        LOD 300

        // ------------------------------------------------------------------
        //  Forward pass. Shades all light in a single pass. GI + emission + Fog
        Pass
        {
            // Lightmode matches the ShaderPassName set in UniversalRenderPipeline.cs. SRPDefaultUnlit and passes with
            // no LightMode tag are also rendered by Universal Render Pipeline
            Name "ForwardLit"
            Tags{"LightMode" = "UniversalForward"}

            Blend[_SrcBlend][_DstBlend]
            ZWrite[_ZWrite]
            Cull[_Cull]

            HLSLPROGRAM
            // Required to compile gles 2.0 with standard SRP library
            // All shaders must be compiled with HLSLcc and currently only gles is not using HLSLcc by default
            #pragma prefer_hlslcc gles
            #pragma exclude_renderers d3d11_9x
            #pragma target 2.0

            // -------------------------------------
            // Material Keywords
            #pragma shader_feature _NORMALMAP
            #pragma shader_feature _ALPHATEST_ON
            #pragma shader_feature _ALPHAPREMULTIPLY_ON
            #pragma shader_feature _EMISSION
            #pragma shader_feature _METALLICSPECGLOSSMAP
            #pragma shader_feature _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
            #pragma shader_feature _OCCLUSIONMAP

            #pragma shader_feature _IRIDESCENCE
            #pragma shader_feature _IRIDESCENCE_THICKNESSMAP

            #pragma shader_feature _SPECULARHIGHLIGHTS_OFF
            #pragma shader_feature _ENVIRONMENTREFLECTIONS_OFF
            #pragma shader_feature _SPECULAR_SETUP
            #pragma shader_feature _RECEIVE_SHADOWS_OFF

            // -------------------------------------
            // Universal Pipeline keywords
            #pragma multi_compile _ _MAIN_LIGHT_SHADOWS
            #pragma multi_compile _ _MAIN_LIGHT_SHADOWS_CASCADE
            #pragma multi_compile _ _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHTS
            #pragma multi_compile _ _ADDITIONAL_LIGHT_SHADOWS
            #pragma multi_compile _ _SHADOWS_SOFT
            #pragma multi_compile _ _MIXED_LIGHTING_SUBTRACTIVE

            // -------------------------------------
            // Unity defined keywords
            #pragma multi_compile _ DIRLIGHTMAP_COMBINED
            #pragma multi_compile _ LIGHTMAP_ON
            #pragma multi_compile_fog

            //--------------------------------------
            // GPU Instancing
            #pragma multi_compile_instancing

            #pragma vertex LitPassVertex
            #pragma fragment LitPassFragment

            #include "IridescenceLitInput.hlsl"
            #include "IridescenceLitForwardPass.hlsl"
            ENDHLSL
        }

        Pass
        {
            Name "ShadowCaster"
            Tags{"LightMode" = "ShadowCaster"}

            ZWrite On
            ZTest LEqual
            Cull[_Cull]

            HLSLPROGRAM
            // Required to compile gles 2.0 with standard srp library
            #pragma prefer_hlslcc gles
            #pragma exclude_renderers d3d11_9x
            #pragma target 2.0

            // -------------------------------------
            // Material Keywords
            #pragma shader_feature _ALPHATEST_ON

            //--------------------------------------
            // GPU Instancing
            #pragma multi_compile_instancing
            #pragma shader_feature _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A

            #pragma vertex ShadowPassVertex
            #pragma fragment ShadowPassFragment

            #include "IridescenceLitInput.hlsl"
            #include "Packages/com.unity.render-pipelines.universal/Shaders/ShadowCasterPass.hlsl"
            ENDHLSL
        }

        Pass
        {
            Name "DepthOnly"
            Tags{"LightMode" = "DepthOnly"}

            ZWrite On
            ColorMask 0
            Cull[_Cull]

            HLSLPROGRAM
            // Required to compile gles 2.0 with standard srp library
            #pragma prefer_hlslcc gles
            #pragma exclude_renderers d3d11_9x
            #pragma target 2.0

            #pragma vertex DepthOnlyVertex
            #pragma fragment DepthOnlyFragment

            // -------------------------------------
            // Material Keywords
            #pragma shader_feature _ALPHATEST_ON
            #pragma shader_feature _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A

            //--------------------------------------
            // GPU Instancing
            #pragma multi_compile_instancing

            #include "IridescenceLitInput.hlsl"
            #include "Packages/com.unity.render-pipelines.universal/Shaders/DepthOnlyPass.hlsl"
            ENDHLSL
        }

        // This pass it not used during regular rendering, only for lightmap baking.
        Pass
        {
            Name "Meta"
            Tags{"LightMode" = "Meta"}

            Cull Off

            HLSLPROGRAM
            // Required to compile gles 2.0 with standard srp library
            #pragma prefer_hlslcc gles
            #pragma exclude_renderers d3d11_9x

            #pragma vertex UniversalVertexMeta
            #pragma fragment UniversalFragmentMeta

            #pragma shader_feature _SPECULAR_SETUP
            #pragma shader_feature _EMISSION
            #pragma shader_feature _METALLICSPECGLOSSMAP
            #pragma shader_feature _ALPHATEST_ON
            #pragma shader_feature _ _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A

            #pragma shader_feature _SPECGLOSSMAP

            #include "Packages/com.unity.render-pipelines.universal/Shaders/LitInput.hlsl"
            #include "Packages/com.unity.render-pipelines.universal/Shaders/LitMetaPass.hlsl"

            ENDHLSL
        }
        Pass
        {
            Name "Universal2D"
            Tags{ "LightMode" = "Universal2D" }

            Blend[_SrcBlend][_DstBlend]
            ZWrite[_ZWrite]
            Cull[_Cull]

            HLSLPROGRAM
            // Required to compile gles 2.0 with standard srp library
            #pragma prefer_hlslcc gles
            #pragma exclude_renderers d3d11_9x

            #pragma vertex vert
            #pragma fragment frag
            #pragma shader_feature _ALPHATEST_ON
            #pragma shader_feature _ALPHAPREMULTIPLY_ON

            #include "Packages/com.unity.render-pipelines.universal/Shaders/LitInput.hlsl"
            #include "Packages/com.unity.render-pipelines.universal/Shaders/Utils/Universal2D.hlsl"
            ENDHLSL
        }

    }
    FallBack "Hidden/Universal Render Pipeline/FallbackError"
    CustomEditor "UnityEditor.Rendering.Universal.ShaderGUI.LitIridescenceShader"
}


text:
fileFormatVersion: 2
guid: 173a384c259e26d40b94f77315869b9e
ShaderImporter:
  externalObjects: {}
  defaultTextures: []
  nonModifiableTextures: []
  userData:
  assetBundleName:
  assetBundleVariant:


text:
#ifndef UNIVERSAL_IRIDESCENCE_LIT_INPUT_INCLUDED
#define UNIVERSAL_IRIDESCENCE_LIT_INPUT_INCLUDED

#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/CommonMaterial.hlsl"
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/SurfaceInput.hlsl"

// Duplicate from Input.hlsl
struct InputDataAdvanced
{
    float3  positionWS;
    half3   normalWS;
    half3   viewDirectionWS;
    float4  shadowCoord;
    half    fogCoord;
    half3   vertexLighting;
    half3   bakedGI;
};

// Duplicate from SurfaceInput.hlsl
struct SurfaceDataAdvanced
{
    half3 albedo;
    half3 specular;
    half  metallic;
    half  smoothness;
    half3 normalTS;
    half3 emission;
    half  occlusion;
    half  alpha;
#ifdef _IRIDESCENCE
    half iridescenceThickness;
    half iridescenceEta2;
    half iridescenceEta3;
    half iridescenceKappa3;
#endif
};

CBUFFER_START(UnityPerMaterial)
float4 _BaseMap_ST;
half4 _BaseColor;
half4 _SpecColor;
half4 _EmissionColor;
half4 _IridescenceThicknessRemap;
half _Cutoff;
half _Smoothness;
half _Metallic;
half _BumpScale;
half _OcclusionStrength;
half _IridescenceThickness;
half _IridescneceEta2;
half _IridescneceEta3;
half _IridescneceKappa3;
CBUFFER_END

TEXTURE2D(_OcclusionMap);               SAMPLER(sampler_OcclusionMap);
TEXTURE2D(_MetallicGlossMap);           SAMPLER(sampler_MetallicGlossMap);
TEXTURE2D(_SpecGlossMap);               SAMPLER(sampler_SpecGlossMap);
TEXTURE2D(_IridescenceThicknessMap);    SAMPLER(sampler_IridescenceThicknessMap);

#ifdef _SPECULAR_SETUP
    #define SAMPLE_METALLICSPECULAR(uv) SAMPLE_TEXTURE2D(_SpecGlossMap, sampler_SpecGlossMap, uv)
#else
    #define SAMPLE_METALLICSPECULAR(uv) SAMPLE_TEXTURE2D(_MetallicGlossMap, sampler_MetallicGlossMap, uv)
#endif

half4 SampleMetallicSpecGloss(float2 uv, half albedoAlpha)
{
    half4 specGloss;

#ifdef _METALLICSPECGLOSSMAP
    specGloss = SAMPLE_METALLICSPECULAR(uv);
    #ifdef _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
        specGloss.a = albedoAlpha * _Smoothness;
    #else
        specGloss.a *= _Smoothness;
    #endif
#else // _METALLICSPECGLOSSMAP
    #if _SPECULAR_SETUP
        specGloss.rgb = _SpecColor.rgb;
    #else
        specGloss.rgb = _Metallic.rrr;
    #endif

    #ifdef _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
        specGloss.a = albedoAlpha * _Smoothness;
    #else
        specGloss.a = _Smoothness;
    #endif
#endif

    return specGloss;
}

half SampleOcclusion(float2 uv)
{
#ifdef _OCCLUSIONMAP
// TODO: Controls things like these by exposing SHADER_QUALITY levels (low, medium, high)
#if defined(SHADER_API_GLES)
    return SAMPLE_TEXTURE2D(_OcclusionMap, sampler_OcclusionMap, uv).g;
#else
    half occ = SAMPLE_TEXTURE2D(_OcclusionMap, sampler_OcclusionMap, uv).g;
    return LerpWhiteTo(occ, _OcclusionStrength);
#endif
#else
    return 1.0;
#endif
}

half SampleIridescenceThickness(float2 uv)
{
    half iridescenceThickness;

#if _IRIDESCENCE_THICKNESSMAP
    iridescenceThickness = SAMPLE_TEXTURE2D(_IridescenceThicknessMap, sampler_IridescenceThicknessMap, uv).r;
    iridescenceThickness = _IridescenceThicknessRemap.x + iridescenceThickness * (_IridescenceThicknessRemap.y - _IridescenceThicknessRemap.x);
#else
    iridescenceThickness = _IridescenceThickness;
#endif

    return iridescenceThickness;
}

inline void InitializeStandardLitSurfaceData(float2 uv, out SurfaceDataAdvanced outSurfaceData)
{
    half4 albedoAlpha = SampleAlbedoAlpha(uv, TEXTURE2D_ARGS(_BaseMap, sampler_BaseMap));
    outSurfaceData.alpha = Alpha(albedoAlpha.a, _BaseColor, _Cutoff);

    half4 specGloss = SampleMetallicSpecGloss(uv, albedoAlpha.a);
    outSurfaceData.albedo = albedoAlpha.rgb * _BaseColor.rgb;

#if _SPECULAR_SETUP
    outSurfaceData.metallic = 1.0h;
    outSurfaceData.specular = specGloss.rgb;
#else
    outSurfaceData.metallic = specGloss.r;
    outSurfaceData.specular = half3(0.0h, 0.0h, 0.0h);
#endif

    outSurfaceData.smoothness = specGloss.a;
    outSurfaceData.normalTS = SampleNormal(uv, TEXTURE2D_ARGS(_BumpMap, sampler_BumpMap), _BumpScale);
    outSurfaceData.occlusion = SampleOcclusion(uv);
    outSurfaceData.emission = SampleEmission(uv, _EmissionColor.rgb, TEXTURE2D_ARGS(_EmissionMap, sampler_EmissionMap));

#if _IRIDESCENCE
    outSurfaceData.iridescenceThickness = SampleIridescenceThickness(uv);
    outSurfaceData.iridescenceEta2 = _IridescneceEta2;
    outSurfaceData.iridescenceEta3 = _IridescneceEta3;
    outSurfaceData.iridescenceKappa3 = _IridescneceKappa3;
#endif
}

#endif // UNIVERSAL_IRIDESCENCE_LIT_INPUT_INCLUDED


text:
fileFormatVersion: 2
guid: 9cc4b73e18557394f882fec145df3f45
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant:


text:
fileFormatVersion: 2
guid: 775826be131996b4b8fd7f7329e7f5ae
NativeFormatImporter:
  externalObjects: {}
  mainObjectFileID: 2100000
  userData:
  assetBundleName:
  assetBundleVariant:


text:
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &-3027772912061521097
MonoBehaviour:
  m_ObjectHideFlags: 11
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 0}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  version: 1
--- !u!21 &2100000
Material:
  serializedVersion: 6
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_Name: Iridescence_mat 6
  m_Shader: {fileID: 4800000, guid: b5583d07f471cf844bce227491fca6b3, type: 3}
  m_ShaderKeywords: _IRIDESCENCE _IRIDESCENCE_THICKNESSMAP
  m_LightmapFlags: 6
  m_EnableInstancingVariants: 0
  m_DoubleSidedGI: 0
  m_CustomRenderQueue: 2000
  stringTagMap:
    RenderType: Opaque
  disabledShaderPasses: []
  m_SavedProperties:
    serializedVersion: 3
    m_TexEnvs:
    - _BaseMap:
        m_Texture: {fileID: 0}
        m_Scale: {x: 2, y: 2}
        m_Offset: {x: 0, y: 0}
    - _BumpMap:
        m_Texture: {fileID: 0}
        m_Scale: {x: 20, y: 20}
        m_Offset: {x: 0, y: 0}
    - _EmissionMap:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _IridescenceThicknessMap:
        m_Texture: {fileID: 2800000, guid: 8c236fcde7142fe419638025483fd341, type: 3}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _MainTex:
        m_Texture: {fileID: 0}
        m_Scale: {x: 2, y: 2}
        m_Offset: {x: 0, y: 0}
    - _MetallicGlossMap:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _OcclusionMap:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _SpecGlossMap:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    m_Floats:
    - _AlphaClip: 0
    - _Blend: 0
    - _BumpScale: 0.04
    - _Cull: 0
    - _Cutoff: 0.5
    - _DstBlend: 0
    - _EnableIridescence: 1
    - _EnvironmentReflections: 1
    - _GlossMapScale: 0
    - _Glossiness: 0
    - _GlossyReflections: 0
    - _Iridescence: 1
    - _IridescenceThickness: 0.4
    - _IridescneceEta2: 2.9
    - _IridescneceEta3: 2.7
    - _IridescneceEta_2: 1.33
    - _IridescneceEta_3: 1.85
    - _IridescneceKappa3: 2.8
    - _IridescneceKappa_3: 1.02
    - _Metallic: 1
    - _OcclusionStrength: 0.03
    - _QueueOffset: 0
    - _ReceiveShadows: 1
    - _Smoothness: 0.853
    - _SmoothnessTextureChannel: 0
    - _SpecularHighlights: 1
    - _SrcBlend: 1
    - _Surface: 0
    - _WorkflowMode: 1
    - _ZWrite: 1
    m_Colors:
    - _BaseColor: {r: 0.2924528, g: 0.2924528, b: 0.2924528, a: 1}
    - _Color: {r: 0.5, g: 0.5, b: 0.5, a: 1}
    - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
    - _IridescenceThicknessRemap: {r: 0.000000029802322, g: 0.07819772, b: 0, a: 0}
    - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}


text:
fileFormatVersion: 2
guid: 68594a4cf0c7730489b65203c85edef8
NativeFormatImporter:
  externalObjects: {}
  mainObjectFileID: 2100000
  userData:
  assetBundleName:
  assetBundleVariant:


text:
fileFormatVersion: 2
guid: 9b430aebef8ce5c41ae9277221c7e2d1
NativeFormatImporter:
  externalObjects: {}
  mainObjectFileID: 2100000
  userData:
  assetBundleName:
  assetBundleVariant:


text:
fileFormatVersion: 2
guid: 7880bd211c607924093690e344f41224
NativeFormatImporter:
  externalObjects: {}
  mainObjectFileID: 2100000
  userData:
  assetBundleName:
  assetBundleVariant:


text:
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &-3027772912061521097
MonoBehaviour:
  m_ObjectHideFlags: 11
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 0}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  version: 1
--- !u!21 &2100000
Material:
  serializedVersion: 6
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_Name: Iridescence_mat 4
  m_Shader: {fileID: 4800000, guid: b5583d07f471cf844bce227491fca6b3, type: 3}
  m_ShaderKeywords: _IRIDESCENCE
  m_LightmapFlags: 4
  m_EnableInstancingVariants: 0
  m_DoubleSidedGI: 0
  m_CustomRenderQueue: 2000
  stringTagMap:
    RenderType: Opaque
  disabledShaderPasses: []
  m_SavedProperties:
    serializedVersion: 3
    m_TexEnvs:
    - _BaseMap:
        m_Texture: {fileID: 0}
        m_Scale: {x: 20, y: 20}
        m_Offset: {x: 0, y: 0}
    - _BumpMap:
        m_Texture: {fileID: 0}
        m_Scale: {x: 20, y: 20}
        m_Offset: {x: 0, y: 0}
    - _EmissionMap:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _IridescenceThicknessMap:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _MainTex:
        m_Texture: {fileID: 0}
        m_Scale: {x: 20, y: 20}
        m_Offset: {x: 0, y: 0}
    - _MetallicGlossMap:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _OcclusionMap:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _SpecGlossMap:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    m_Floats:
    - _AlphaClip: 0
    - _Blend: 0
    - _BumpScale: 0.04
    - _Cull: 0
    - _Cutoff: 0.5
    - _DstBlend: 0
    - _EnableIridescence: 1
    - _EnvironmentReflections: 1
    - _GlossMapScale: 0
    - _Glossiness: 0
    - _GlossyReflections: 0
    - _Iridescence: 1
    - _IridescenceThickness: 0.38
    - _IridescneceEta2: 1.43
    - _IridescneceEta3: 2.21
    - _IridescneceEta_2: 1.33
    - _IridescneceEta_3: 1
    - _IridescneceKappa3: 0.95
    - _IridescneceKappa_3: 0
    - _Metallic: 1
    - _OcclusionStrength: 0.03
    - _QueueOffset: 0
    - _ReceiveShadows: 1
    - _Smoothness: 0.93
    - _SmoothnessTextureChannel: 0
    - _SpecularHighlights: 1
    - _SrcBlend: 1
    - _Surface: 0
    - _WorkflowMode: 1
    - _ZWrite: 1
    m_Colors:
    - _BaseColor: {r: 0.33962262, g: 0.33962262, b: 0.33962262, a: 1}
    - _Color: {r: 0.5, g: 0.5, b: 0.5, a: 1}
    - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
    - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0}
    - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}


text:
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &-3027772912061521097
MonoBehaviour:
  m_ObjectHideFlags: 11
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 0}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  version: 1
--- !u!21 &2100000
Material:
  serializedVersion: 6
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_Name: SoapBubble_mat
  m_Shader: {fileID: 4800000, guid: b5583d07f471cf844bce227491fca6b3, type: 3}
  m_ShaderKeywords: _ALPHAPREMULTIPLY_ON _IRIDESCENCE _IRIDESCENCE_THICKNESSMAP
  m_LightmapFlags: 4
  m_EnableInstancingVariants: 0
  m_DoubleSidedGI: 1
  m_CustomRenderQueue: 3000
  stringTagMap:
    RenderType: Transparent
  disabledShaderPasses:
  - SHADOWCASTER
  m_SavedProperties:
    serializedVersion: 3
    m_TexEnvs:
    - _BaseMap:
        m_Texture: {fileID: 0}
        m_Scale: {x: 2, y: 2.75}
        m_Offset: {x: 0, y: 0}
    - _BumpMap:
        m_Texture: {fileID: 0}
        m_Scale: {x: 20, y: 20}
        m_Offset: {x: 0, y: 0}
    - _EmissionMap:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _IridescenceThicknessMap:
        m_Texture: {fileID: 2800000, guid: 8c236fcde7142fe419638025483fd341, type: 3}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _MainTex:
        m_Texture: {fileID: 0}
        m_Scale: {x: 2, y: 2.75}
        m_Offset: {x: 0, y: 0}
    - _MetallicGlossMap:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _OcclusionMap:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _SpecGlossMap:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    m_Floats:
    - _AlphaClip: 0
    - _Blend: 1
    - _BumpScale: 0.04
    - _Cull: 0
    - _Cutoff: 0.5
    - _DstBlend: 10
    - _EnableIridescence: 1
    - _EnvironmentReflections: 1
    - _GlossMapScale: 0
    - _Glossiness: 0
    - _GlossyReflections: 0
    - _Iridescence: 1
    - _IridescenceThickness: 0.27
    - _IridescneceEta2: 1.36
    - _IridescneceEta3: 1
    - _IridescneceEta_2: 1.36
    - _IridescneceEta_3: 1
    - _IridescneceKappa3: 0
    - _IridescneceKappa_3: 0
    - _Metallic: 0
    - _OcclusionStrength: 1
    - _QueueOffset: 0
    - _ReceiveShadows: 1
    - _Smoothness: 0.953
    - _SmoothnessTextureChannel: 0
    - _SpecularHighlights: 1
    - _SrcBlend: 1
    - _Surface: 1
    - _WorkflowMode: 1
    - _ZWrite: 0
    m_Colors:
    - _BaseColor: {r: 1, g: 1, b: 1, a: 0}
    - _Color: {r: 0.5, g: 0.5, b: 0.5, a: 1}
    - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
    - _IridescenceThicknessRemap: {r: 0.26160893, g: 0.29334402, b: 0, a: 0}
    - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}


text:
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &-3027772912061521097
MonoBehaviour:
  m_ObjectHideFlags: 11
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 0}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  version: 1
--- !u!21 &2100000
Material:
  serializedVersion: 6
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_Name: Iridescence_mat 5
  m_Shader: {fileID: 4800000, guid: b5583d07f471cf844bce227491fca6b3, type: 3}
  m_ShaderKeywords: _IRIDESCENCE
  m_LightmapFlags: 4
  m_EnableInstancingVariants: 0
  m_DoubleSidedGI: 1
  m_CustomRenderQueue: 2000
  stringTagMap:
    RenderType: Opaque
  disabledShaderPasses: []
  m_SavedProperties:
    serializedVersion: 3
    m_TexEnvs:
    - _BaseMap:
        m_Texture: {fileID: 0}
        m_Scale: {x: 20, y: 20}
        m_Offset: {x: 0, y: 0}
    - _BumpMap:
        m_Texture: {fileID: 0}
        m_Scale: {x: 20, y: 20}
        m_Offset: {x: 0, y: 0}
    - _EmissionMap:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _IridescenceThicknessMap:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _MainTex:
        m_Texture: {fileID: 0}
        m_Scale: {x: 20, y: 20}
        m_Offset: {x: 0, y: 0}
    - _MetallicGlossMap:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _OcclusionMap:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    - _SpecGlossMap:
        m_Texture: {fileID: 0}
        m_Scale: {x: 1, y: 1}
        m_Offset: {x: 0, y: 0}
    m_Floats:
    - _AlphaClip: 0
    - _Blend: 0
    - _BumpScale: 0.04
    - _Cull: 0
    - _Cutoff: 0.5
    - _DstBlend: 0
    - _EnableIridescence: 1
    - _EnvironmentReflections: 1
    - _GlossMapScale: 0
    - _Glossiness: 0
    - _GlossyReflections: 0
    - _Iridescence: 1
    - _IridescenceThickness: 0.29
    - _IridescneceEta2: 1.46
    - _IridescneceEta3: 3.16
    - _IridescneceEta_2: 1.33
    - _IridescneceEta_3: 1
    - _IridescneceKappa3: 0
    - _IridescneceKappa_3: 0
    - _Metallic: 1
    - _OcclusionStrength: 0.03
    - _QueueOffset: 0
    - _ReceiveShadows: 1
    - _Smoothness: 0.93
    - _SmoothnessTextureChannel: 0
    - _SpecularHighlights: 1
    - _SrcBlend: 1
    - _Surface: 0
    - _WorkflowMode: 1
    - _ZWrite: 1
    m_Colors:
    - _BaseColor: {r: 1, g: 1, b: 1, a: 1}
    - _Color: {r: 0.5, g: 0.5, b: 0.5, a: 1}
    - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
    - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0}
    - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}


text:
fileFormatVersion: 2
guid: 8c236fcde7142fe419638025483fd341
TextureImporter:
  internalIDToNameTable: []
  externalObjects: {}
  serializedVersion: 10
  mipmaps:
    mipMapMode: 0
    enableMipMap: 1
    sRGBTexture: 0
    linearTexture: 0
    fadeOut: 0
    borderMipMap: 0
    mipMapsPreserveCoverage: 0
    alphaTestReferenceValue: 0.5
    mipMapFadeDistanceStart: 1
    mipMapFadeDistanceEnd: 3
  bumpmap:
    convertToNormalMap: 0
    externalNormalMap: 0
    heightScale: 0.25
    normalMapFilter: 0
  isReadable: 0
  streamingMipmaps: 0
  streamingMipmapsPriority: 0
  grayScaleToAlpha: 0
  generateCubemap: 6
  cubemapConvolution: 0
  seamlessCubemap: 0
  textureFormat: 1
  maxTextureSize: 2048
  textureSettings:
    serializedVersion: 2
    filterMode: -1
    aniso: 2
    mipBias: -100
    wrapU: 0
    wrapV: 0
    wrapW: 0
  nPOTScale: 1
  lightmap: 0
  compressionQuality: 50
  spriteMode: 0
  spriteExtrude: 1
  spriteMeshType: 1
  alignment: 0
  spritePivot: {x: 0.5, y: 0.5}
  spritePixelsToUnits: 100
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
  spriteGenerateFallbackPhysicsShape: 1
  alphaUsage: 0
  alphaIsTransparency: 0
  spriteTessellationDetail: -1
  textureType: 10
  textureShape: 1
  singleChannelComponent: 1
  maxTextureSizeSet: 0
  compressionQualitySet: 0
  textureFormatSet: 0
  platformSettings:
  - serializedVersion: 3
    buildTarget: DefaultTexturePlatform
    maxTextureSize: 8192
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Standalone
    maxTextureSize: 8192
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: iPhone
    maxTextureSize: 8192
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Android
    maxTextureSize: 8192
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  - serializedVersion: 3
    buildTarget: Windows Store Apps
    maxTextureSize: 8192
    resizeAlgorithm: 0
    textureFormat: -1
    textureCompression: 1
    compressionQuality: 50
    crunchedCompression: 0
    allowsAlphaSplitting: 0
    overridden: 0
    androidETC2FallbackOverride: 0
    forceMaximumCompressionQuality_BC6H_BC7: 0
  spriteSheet:
    serializedVersion: 2
    sprites: []
    outline: []
    physicsShape: []
    bones: []
    spriteID:
    internalID: 0
    vertices: []
    indices:
    edges: []
    weights: []
    secondaryTextures: []
  spritePackingTag:
  pSDRemoveMatte: 0
  pSDShowRemoveMatteOption: 0
  userData:
  assetBundleName:
  assetBundleVariant:


text:
%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: 9
  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_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
  m_SkyboxMaterial: {fileID: 2100000, guid: 6cc1bc15b376f2547bc229773cdd1294, type: 2}
  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, g: 0, b: 0, a: 1}
  m_UseRadianceAmbientProbe: 0
--- !u!157 &3
LightmapSettings:
  m_ObjectHideFlags: 0
  serializedVersion: 11
  m_GIWorkflowMode: 1
  m_GISettings:
    serializedVersion: 2
    m_BounceScale: 1
    m_IndirectOutputScale: 1
    m_AlbedoBoost: 1
    m_EnvironmentLightingMode: 1
    m_EnableBakedLightmaps: 1
    m_EnableRealtimeLightmaps: 1
  m_LightmapEditorSettings:
    serializedVersion: 12
    m_Resolution: 2
    m_BakeResolution: 60
    m_AtlasSize: 512
    m_AO: 1
    m_AOMaxDistance: 3
    m_CompAOExponent: 10
    m_CompAOExponentDirect: 10
    m_ExtractAmbientOcclusion: 0
    m_Padding: 2
    m_LightmapParameters: {fileID: 15200, guid: 0000000000000000f000000000000000,
      type: 0}
    m_LightmapsBakeMode: 1
    m_TextureCompression: 1
    m_FinalGather: 0
    m_FinalGatherFiltering: 1
    m_FinalGatherRayCount: 256
    m_ReflectionCompression: 2
    m_MixedBakeMode: 0
    m_BakeBackend: 1
    m_PVRSampling: 1
    m_PVRDirectSampleCount: 2
    m_PVRSampleCount: 500
    m_PVRBounces: 2
    m_PVREnvironmentSampleCount: 500
    m_PVREnvironmentReferencePointCount: 2048
    m_PVRFilteringMode: 2
    m_PVRDenoiserTypeDirect: 0
    m_PVRDenoiserTypeIndirect: 0
    m_PVRDenoiserTypeAO: 0
    m_PVRFilterTypeDirect: 0
    m_PVRFilterTypeIndirect: 0
    m_PVRFilterTypeAO: 0
    m_PVREnvironmentMIS: 0
    m_PVRCulling: 1
    m_PVRFilteringGaussRadiusDirect: 1
    m_PVRFilteringGaussRadiusIndirect: 5
    m_PVRFilteringGaussRadiusAO: 2
    m_PVRFilteringAtrousPositionSigmaDirect: 0.5
    m_PVRFilteringAtrousPositionSigmaIndirect: 2
    m_PVRFilteringAtrousPositionSigmaAO: 1
    m_ExportTrainingData: 0
    m_TrainingDataDestination: TrainingData
    m_LightProbeSampleCountMultiplier: 4
  m_LightingDataAsset: {fileID: 112000000, guid: d4089b3859a5c244188768be1576d386,
    type: 2}
  m_UseShadowmask: 0
--- !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
    manualTileSize: 0
    tileSize: 256
    accuratePlacement: 0
    debug:
      m_Flags: 0
  m_NavMeshData: {fileID: 0}
--- !u!1 &84489349
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 84489350}
  m_Layer: 0
  m_Name: '[Object]'
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!4 &84489350
Transform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 84489349}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 155359701}
  m_Father: {fileID: 0}
  m_RootOrder: 2
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &155359700
PrefabInstance:
  m_ObjectHideFlags: 0
  serializedVersion: 2
  m_Modification:
    m_TransformParent: {fileID: 84489350}
    m_Modifications:
    - target: {fileID: 100000, guid: 9971d6c963d5a9a44ba7a65e6abda6f9, type: 3}
      propertyPath: m_Name
      value: Soap Bubble
      objectReference: {fileID: 0}
    - target: {fileID: 100000, guid: 9971d6c963d5a9a44ba7a65e6abda6f9, type: 3}
      propertyPath: m_IsActive
      value: 1
      objectReference: {fileID: 0}
    - target: {fileID: 100000, guid: 9971d6c963d5a9a44ba7a65e6abda6f9, type: 3}
      propertyPath: m_StaticEditorFlags
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 400000, guid: 9971d6c963d5a9a44ba7a65e6abda6f9, type: 3}
      propertyPath: m_LocalPosition.x
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 400000, guid: 9971d6c963d5a9a44ba7a65e6abda6f9, type: 3}
      propertyPath: m_LocalPosition.y
      value: 0.0035
      objectReference: {fileID: 0}
    - target: {fileID: 400000, guid: 9971d6c963d5a9a44ba7a65e6abda6f9, type: 3}
      propertyPath: m_LocalPosition.z
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 400000, guid: 9971d6c963d5a9a44ba7a65e6abda6f9, type: 3}
      propertyPath: m_LocalRotation.x
      value: -0
      objectReference: {fileID: 0}
    - target: {fileID: 400000, guid: 9971d6c963d5a9a44ba7a65e6abda6f9, type: 3}
      propertyPath: m_LocalRotation.y
      value: -0
      objectReference: {fileID: 0}
    - target: {fileID: 400000, guid: 9971d6c963d5a9a44ba7a65e6abda6f9, type: 3}
      propertyPath: m_LocalRotation.z
      value: -0
      objectReference: {fileID: 0}
    - target: {fileID: 400000, guid: 9971d6c963d5a9a44ba7a65e6abda6f9, type: 3}
      propertyPath: m_LocalRotation.w
      value: 1
      objectReference: {fileID: 0}
    - target: {fileID: 400000, guid: 9971d6c963d5a9a44ba7a65e6abda6f9, type: 3}
      propertyPath: m_RootOrder
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 400000, guid: 9971d6c963d5a9a44ba7a65e6abda6f9, type: 3}
      propertyPath: m_LocalEulerAnglesHint.x
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 400000, guid: 9971d6c963d5a9a44ba7a65e6abda6f9, type: 3}
      propertyPath: m_LocalEulerAnglesHint.y
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 400000, guid: 9971d6c963d5a9a44ba7a65e6abda6f9, type: 3}
      propertyPath: m_LocalEulerAnglesHint.z
      value: 0
      objectReference: {fileID: 0}
    - target: {fileID: 400000, guid: 9971d6c963d5a9a44ba7a65e6abda6f9, type: 3}
      propertyPath: m_LocalScale.x
      value: 0.106624454
      objectReference: {fileID: 0}
    - target: {fileID: 400000, guid: 9971d6c963d5a9a44ba7a65e6abda6f9, type: 3}
      propertyPath: m_LocalScale.y
      value: 0.106624454
      objectReference: {fileID: 0}
    - target: {fileID: 400000, guid: 9971d6c963d5a9a44ba7a65e6abda6f9, type: 3}
      propertyPath: m_LocalScale.z
      value: 0.106624454
      objectReference: {fileID: 0}
    - target: {fileID: 2300000, guid: 9971d6c963d5a9a44ba7a65e6abda6f9, type: 3}
      propertyPath: m_Materials.Array.data[0]
      value:
      objectReference: {fileID: 2100000, guid: 7880bd211c607924093690e344f41224, type: 2}
    - target: {fileID: 2300000, guid: 9971d6c963d5a9a44ba7a65e6abda6f9, type: 3}
      propertyPath: m_Enabled
      value: 1
      objectReference: {fileID: 0}
    m_RemovedComponents: []
  m_SourcePrefab: {fileID: 100100000, guid: 9971d6c963d5a9a44ba7a65e6abda6f9, type: 3}
--- !u!4 &155359701 stripped
Transform:
  m_CorrespondingSourceObject: {fileID: 400000, guid: 9971d6c963d5a9a44ba7a65e6abda6f9,
    type: 3}
  m_PrefabInstance: {fileID: 155359700}
  m_PrefabAsset: {fileID: 0}
--- !u!1 &199391772
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 199391773}
  - component: {fileID: 199391777}
  - component: {fileID: 199391776}
  - component: {fileID: 199391775}
  - component: {fileID: 199391774}
  m_Layer: 0
  m_Name: MainCamera
  m_TagString: MainCamera
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!4 &199391773
Transform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 199391772}
  m_LocalRotation: {x: -0.0018247305, y: 0.99808836, z: -0.04977513, w: -0.036589403}
  m_LocalPosition: {x: 0.04338662, y: 0.169, z: 0.59097874}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 592657226}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 5.71, y: 184.19899, z: 0}
--- !u!114 &199391774
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 199391772}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 172515602e62fb746b5d573b38a5fe58, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  isGlobal: 1
  priority: 0
  blendDistance: 0
  weight: 1
  sharedProfile: {fileID: 11400000, guid: 6ac5d18a0e51ce945848d19f01015a9d, type: 2}
--- !u!114 &199391775
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 199391772}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  m_RenderShadows: 1
  m_RequiresDepthTextureOption: 2
  m_RequiresOpaqueTextureOption: 2
  m_CameraType: 0
  m_CameraOutput: 0
  m_Cameras: []
  m_RendererIndex: -1
  m_VolumeLayerMask:
    serializedVersion: 2
    m_Bits: 1
  m_VolumeTrigger: {fileID: 0}
  m_RenderPostProcessing: 1
  m_Antialiasing: 2
  m_AntialiasingQuality: 2
  m_StopNaN: 0
  m_Dithering: 0
  m_RequiresDepthTexture: 0
  m_RequiresColorTexture: 0
  m_Version: 2
--- !u!81 &199391776
AudioListener:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 199391772}
  m_Enabled: 1
--- !u!20 &199391777
Camera:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 199391772}
  m_Enabled: 1
  serializedVersion: 2
  m_ClearFlags: 1
  m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
  m_projectionMatrixMode: 1
  m_GateFitMode: 2
  m_FOVAxisMode: 0
  m_SensorSize: {x: 21.95, y: 9.35}
  m_LensShift: {x: 0, y: 0}
  m_FocalLength: 50
  m_NormalizedViewPortRect:
    serializedVersion: 2
    x: 0
    y: 0
    width: 1
    height: 1
  near clip plane: 0.3
  far clip plane: 1000
  field of view: 40
  orthographic: 0
  orthographic size: 5
  m_Depth: 0
  m_CullingMask:
    serializedVersion: 2
    m_Bits: 4294967295
  m_RenderingPath: -1
  m_TargetTexture: {fileID: 0}
  m_TargetDisplay: 0
  m_TargetEye: 3
  m_HDR: 0
  m_AllowMSAA: 0
  m_AllowDynamicResolution: 0
  m_ForceIntoRT: 0
  m_OcclusionCulling: 1
  m_StereoConvergence: 10
  m_StereoSeparation: 0.022
--- !u!1 &336893335
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 336893338}
  - component: {fileID: 336893337}
  - component: {fileID: 336893336}
  m_Layer: 0
  m_Name: Reflection Probe
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!114 &336893336
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 336893335}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: d0ef8dc2c2eabfa4e8cb77be57a837c0, type: 3}
  m_Name:
  m_EditorClassIdentifier:
--- !u!215 &336893337
ReflectionProbe:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 336893335}
  m_Enabled: 1
  serializedVersion: 2
  m_Type: 0
  m_Mode: 1
  m_RefreshMode: 0
  m_TimeSlicingMode: 0
  m_Resolution: 256
  m_UpdateFrequency: 0
  m_BoxSize: {x: 4.81, y: 1.49, z: 6.49}
  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: 0
  m_HDR: 1
  m_BoxProjection: 0
  m_RenderDynamicObjects: 0
  m_UseOcclusionCulling: 1
  m_Importance: 1
  m_CustomBakedTexture: {fileID: 0}
--- !u!4 &336893338
Transform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 336893335}
  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
  m_LocalPosition: {x: 0, y: 0.3498, z: 0.405}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children: []
  m_Father: {fileID: 947805581076350541}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &592657225
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 592657226}
  m_Layer: 0
  m_Name: '[Camera]'
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!4 &592657226
Transform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 592657225}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 199391773}
  m_Father: {fileID: 0}
  m_RootOrder: 0
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!4 &947805581076350541
Transform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 8925222032347501163}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_Children:
  - {fileID: 336893338}
  m_Father: {fileID: 0}
  m_RootOrder: 1
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &8925222032347501163
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 947805581076350541}
  m_Layer: 0
  m_Name: '[Scene]'
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1


text:
fileFormatVersion: 2
guid: 6cc404676ff54e14f8d06996c4f7c1e1
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant:


text:
fileFormatVersion: 2
guid: 3b549185869940d45a98659f366cc87c
DefaultImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant: