squash commits
@@ -0,0 +1,203 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 8
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: HairMat 1
|
||||
m_Shader: {fileID: -6465566751694194690, guid: 8b6ed7fef664d3547a898fe1f5df5bbc,
|
||||
type: 3}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords: []
|
||||
m_InvalidKeywords:
|
||||
- _ALPHABLEND_ON
|
||||
- _METALLICGLOSSMAP
|
||||
- _NORMALMAP
|
||||
- _WINDQUALITY_NONE
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap:
|
||||
Keep: Keep
|
||||
disabledShaderPasses: []
|
||||
m_LockedProperties:
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _AlbedoMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _BaseMap:
|
||||
m_Texture: {fileID: 2800000, guid: ef1ad9f8e5c727b40a0836c37b78df41, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _BumpMap:
|
||||
m_Texture: {fileID: 2800000, guid: b801212351ee38640ad808ad284e7fa8, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailAlbedoMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailMask:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailNormalMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _EmissionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ExtraTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MainTex:
|
||||
m_Texture: {fileID: 2800000, guid: 1afdf426d6c18d94d958683356478fc5, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MaskMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MetallicGlossMap:
|
||||
m_Texture: {fileID: 2800000, guid: 52f5bb85dbf10b249884940c5c44ebc2, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _NormalMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _OcclusionMap:
|
||||
m_Texture: {fileID: 2800000, guid: 52f5bb85dbf10b249884940c5c44ebc2, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ParallaxMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _SpecGlossMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _Specular:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _SubsurfaceTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ThicknessMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _texcoord:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_Lightmaps:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_LightmapsInd:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_ShadowMasks:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _AlphaClip: 0.5
|
||||
- _AlphaMod: 2
|
||||
- _AlphaModulation: 1
|
||||
- _BillboardKwToggle: 0
|
||||
- _BillboardShadowFade: 0.5
|
||||
- _BumpScale: 1
|
||||
- _BumpStrength: 0.4
|
||||
- _ColorModulation: 1
|
||||
- _CullMode: 2
|
||||
- _Cutoff: 0.5
|
||||
- _DetailAlbedoStrength: 1
|
||||
- _DetailNormalMapScale: 1
|
||||
- _DetailNormalStrength: 1
|
||||
- _DetailSmoothnessStrength: 1
|
||||
- _DoubleSidedNormalMode: 1
|
||||
- _DstBlend: 10
|
||||
- _EmissionStrength: 1
|
||||
- _FadeFactor: 2
|
||||
- _GlossMapScale: 0
|
||||
- _Glossiness: 0
|
||||
- _GlossyReflections: 1
|
||||
- _HalfLambertStrength: 1
|
||||
- _HueVariationKwToggle: 0
|
||||
- _InvertThickness: 0
|
||||
- _MaskClipValue: 0.5
|
||||
- _Metallic: 0
|
||||
- _MetallicAdd: 0
|
||||
- _MetallicModulation: 1
|
||||
- _MetallicStrength: 0.5
|
||||
- _Mode: 2
|
||||
- _NormalMapKwToggle: 0
|
||||
- _NormalStrength: 1
|
||||
- _NormalStrength0: 1
|
||||
- _OcclusionStrength: 1
|
||||
- _OverlayCount: 0
|
||||
- _Parallax: 0.02
|
||||
- _RimLightPower: 4
|
||||
- _RimLightingModulation: 0
|
||||
- _SSSLevel: 0.3
|
||||
- _Smoothness: 0
|
||||
- _SmoothnessAdd: 0
|
||||
- _SmoothnessModulation: 1
|
||||
- _SmoothnessStrength: 0.5
|
||||
- _SmoothnessTextureChannel: 0
|
||||
- _SpecularHighlights: 1
|
||||
- _SrcBlend: 5
|
||||
- _SubsurfaceIndirect: 0.25
|
||||
- _SubsurfaceKwToggle: 0
|
||||
- _Tile0_0: 1
|
||||
- _Tile0_1: 1
|
||||
- _Tile0_2: 1
|
||||
- _TwoSided: 2
|
||||
- _UVSec: 0
|
||||
- _UseDetail: 0
|
||||
- _UseEmission: 0
|
||||
- _UseHalfLambert: 0
|
||||
- _UseMaskMap: 0
|
||||
- _WindQuality: 0
|
||||
- _ZWrite: 0
|
||||
- __dirty: 1
|
||||
m_Colors:
|
||||
- _Add0_0: {r: 0, g: 0, b: 0, a: 0}
|
||||
- _Add0_1: {r: 0, g: 0, b: 0, a: 0}
|
||||
- _Add0_2: {r: 0, g: 0, b: 0, a: 0}
|
||||
- _BlueColor0: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _Color: {r: 1, g: 0.5887637, b: 0.572327, a: 1}
|
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
- _GreenColor0: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _HueVariationColor: {r: 1, g: 0.5, b: 0, a: 0.1}
|
||||
- _RedColor0: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _RimLightColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _SSSColor: {r: 1, g: 0.39999998, b: 0.39999998, a: 1}
|
||||
- _SubsurfaceColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _Tint: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _Tint0_0: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _Tint0_1: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _Tint0_2: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_BuildTextureStacks: []
|
||||
@@ -0,0 +1,15 @@
|
||||
fileFormatVersion: 2
|
||||
guid: dd53ba3e96096e046bdd75a512a41f42
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 35611
|
||||
packageName: UMA 2
|
||||
packageVersion: 2.13
|
||||
assetPath: Assets/UMA/Content/Hair/HairMat 1.mat
|
||||
uploadId: 679826
|
||||
@@ -0,0 +1,397 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 8
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: HairMat
|
||||
m_Shader: {fileID: 4800000, guid: def76a94c229c2a4dae4e0ec3bcd8cca, type: 3}
|
||||
m_ValidKeywords: []
|
||||
m_InvalidKeywords:
|
||||
- EFFECT_BUMP
|
||||
- EFFECT_HUE_VARIATION
|
||||
- _ALPHABLEND_ON
|
||||
- _METALLICGLOSSMAP
|
||||
- _NORMALMAP
|
||||
- _USEHALFLAMBERT_ON
|
||||
- _USEHASHING_OFF
|
||||
- _WINDQUALITY_NONE
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 1
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap:
|
||||
Keep: Keep
|
||||
disabledShaderPasses: []
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _Albedo:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _Albedo1:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _Albedo2:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _Albedo3:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _AlbedoMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _AlphaMask1:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _AlphaMask2:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _AlphaMask3:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _BRDFTex:
|
||||
m_Texture: {fileID: 2800000, guid: 438762e23bc56bf4188ce947bf60e0e3, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _BaseMap:
|
||||
m_Texture: {fileID: 2800000, guid: ef1ad9f8e5c727b40a0836c37b78df41, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _BlueNoiseCrossfade:
|
||||
m_Texture: {fileID: 2800000, guid: 23fd7a3ab1a69344a9eda1a6ca4223f7, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _BumpMap:
|
||||
m_Texture: {fileID: 2800000, guid: b801212351ee38640ad808ad284e7fa8, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ColorMask:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ColorMask1:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ColorMask2:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ColorMask3:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailAlbedoMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailBumpMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailMask:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailMetallicGlossMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailNormalMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _EmissionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ExtraTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MainTex:
|
||||
m_Texture: {fileID: 2800000, guid: ef1ad9f8e5c727b40a0836c37b78df41, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MaskMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MetallicGlossMap:
|
||||
m_Texture: {fileID: 2800000, guid: 52f5bb85dbf10b249884940c5c44ebc2, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _NormalMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _NormalMask:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _NormalMask1:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _NormalMask2:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _NormalMask3:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _OcclusionMap:
|
||||
m_Texture: {fileID: 2800000, guid: 1afdf426d6c18d94d958683356478fc5, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _OverlayMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ParallaxMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _SpecGlossMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _Specular:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _SubsurfaceTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _TanNoise:
|
||||
m_Texture: {fileID: 2800000, guid: 277542933fc54bc489eed73f42225800, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _TangentMap:
|
||||
m_Texture: {fileID: 2800000, guid: adbbfee8a2eaf1a4386f6b3044005ece, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ThicknessMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _texcoord:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _texcoord2:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_Lightmaps:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_LightmapsInd:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_ShadowMasks:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _AlphaClip: 0.5
|
||||
- _AlphaModulation: 2
|
||||
- _AnisoFour: 4.61
|
||||
- _AnisoOffset: 1
|
||||
- _AnisoRot: 0.25
|
||||
- _AnisoThree: 0.89
|
||||
- _AnisoTwo: 1
|
||||
- _AnisotropicFrequency: 1.091
|
||||
- _AnisotropicRoughness: 0.25
|
||||
- _Anisotropy: 1
|
||||
- _BillboardKwToggle: 0
|
||||
- _BillboardShadowFade: 0.5
|
||||
- _Blend: 0
|
||||
- _BumpScale: 0.905
|
||||
- _BumpStrength: 0.4
|
||||
- _ClearCoatMask: 0
|
||||
- _ClearCoatSmoothness: 0
|
||||
- _ColorModulation: 2
|
||||
- _Cull: 2
|
||||
- _CullMode: 2
|
||||
- _Cutoff: 0.6
|
||||
- _CutoffOffset: 0.409
|
||||
- _Cutout: 0.15
|
||||
- _DetailAlbedoStrength: 1
|
||||
- _DetailBumpMapScale: 1
|
||||
- _DetailNormalMapScale: 1
|
||||
- _DetailNormalStrength: 1
|
||||
- _DetailSmoothnessStrength: 1
|
||||
- _Distortion: 1.267
|
||||
- _DoubleSidedNormalMode: 2
|
||||
- _DstBlend: 10
|
||||
- _EmissionStrength: 1
|
||||
- _EmissiveModulation: 1
|
||||
- _EnvironmentReflections: 1
|
||||
- _FadeFactor: 2
|
||||
- _Flatness: 1.06
|
||||
- _Fresnel: 2.36
|
||||
- _FresnelDamp: 1
|
||||
- _Gloss: 0.37
|
||||
- _GlossMapScale: 0.499
|
||||
- _Glossiness: 0.164
|
||||
- _GlossyReflections: 1
|
||||
- _HalfLambertStrength: 4
|
||||
- _HueVariationKwToggle: 1
|
||||
- _MaskClipValue: 0.5
|
||||
- _Metallic: 0.422
|
||||
- _MetallicAdd: 0
|
||||
- _MetallicModulation: 0.668
|
||||
- _MetallicStrength: 0.5
|
||||
- _MipScale: 0.379
|
||||
- _MipScaleOffset: 1.083
|
||||
- _Mode: 2
|
||||
- _NormalMapKwToggle: 1
|
||||
- _NormalStrength: 0.763
|
||||
- _NormalStrength0: 1
|
||||
- _NormalStrength1: 1
|
||||
- _NormalStrength2: 1
|
||||
- _NormalStrength3: 1
|
||||
- _OcclusionStrength: 1
|
||||
- _OcclusionUVSource: 0
|
||||
- _OverlayCount: 0
|
||||
- _Parallax: 0.02
|
||||
- _Power: 1.977
|
||||
- _PrimaryShift: 0.5
|
||||
- _QueueOffset: 0
|
||||
- _ReceiveShadows: 1
|
||||
- _RimAngle: 1.82
|
||||
- _RimLightPower: 4
|
||||
- _RimLightingModulation: 0
|
||||
- _RimPower: 0.296
|
||||
- _SSSAmbient: 0
|
||||
- _SSSDist: 1
|
||||
- _SSSIntensity: 1
|
||||
- _SSSPow: 1
|
||||
- _SSSShadow: 1
|
||||
- _Scale: 0.908
|
||||
- _ScatteringByAlbedo: 0
|
||||
- _SecondUVSource: 0
|
||||
- _SecondaryShift: -0.5
|
||||
- _ShadowScaleOffset: -0.001
|
||||
- _Smoother: -2.61
|
||||
- _Smoothness: 0.077
|
||||
- _SmoothnessAdd: 0
|
||||
- _SmoothnessFromAlbedo: 0
|
||||
- _SmoothnessModulation: 0.522
|
||||
- _SmoothnessStrength: 0.5
|
||||
- _SmoothnessTextureChannel: 0
|
||||
- _SpecularHighlights: 1
|
||||
- _SrcBlend: 5
|
||||
- _Subsurface: 0.355
|
||||
- _SubsurfaceIndirect: 0.25
|
||||
- _SubsurfaceKwToggle: 0
|
||||
- _Surface: 0
|
||||
- _ThicknessMapInvert: 0
|
||||
- _ThicknessMapPower: 1
|
||||
- _ThicknessUVSource: 0
|
||||
- _Tile0_0: 1
|
||||
- _Tile0_1: 1
|
||||
- _Tile0_2: 1
|
||||
- _Tile1_0: 1
|
||||
- _Tile1_1: 1
|
||||
- _Tile1_2: 1
|
||||
- _Tile2_0: 1
|
||||
- _Tile2_1: 1
|
||||
- _Tile2_2: 1
|
||||
- _Tile3_0: 1
|
||||
- _Tile3_1: 1
|
||||
- _Tile3_2: 1
|
||||
- _TwoSided: 2
|
||||
- _UVSec: 0
|
||||
- _UseAlphaClip: 0
|
||||
- _UseAlphaToMask: 0
|
||||
- _UseCutout: 1
|
||||
- _UseDetail: 0
|
||||
- _UseEmission: 0
|
||||
- _UseHalfLambert: 1
|
||||
- _UseHashing: 0
|
||||
- _UseMaskMap: 0
|
||||
- _UseSkinScattering: 0
|
||||
- _WindQuality: 0
|
||||
- _WrappingFactor: 0.01
|
||||
- _WrappingPowerFactor: 1
|
||||
- _ZWrite: 0
|
||||
- __dirty: 1
|
||||
m_Colors:
|
||||
- _Add0_0: {r: 0, g: 0, b: 0, a: 0}
|
||||
- _Add0_1: {r: 0, g: 0, b: 0, a: 0}
|
||||
- _Add0_2: {r: 0, g: 0, b: 0, a: 0}
|
||||
- _Add1_0: {r: 0, g: 0, b: 0, a: 0}
|
||||
- _Add1_1: {r: 0, g: 0, b: 0, a: 0}
|
||||
- _Add1_2: {r: 0, g: 0, b: 0, a: 0}
|
||||
- _Add2_0: {r: 0, g: 0, b: 0, a: 0}
|
||||
- _Add2_1: {r: 0, g: 0, b: 0, a: 0}
|
||||
- _Add2_2: {r: 0, g: 0, b: 0, a: 0}
|
||||
- _Add3_0: {r: 0, g: 0, b: 0, a: 0}
|
||||
- _Add3_1: {r: 0, g: 0, b: 0, a: 0}
|
||||
- _Add3_2: {r: 0, g: 0, b: 0, a: 0}
|
||||
- _AlphaColor3: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _AnisoDir: {r: 0.5, g: 0.5, b: 1, a: 1}
|
||||
- _BaseColor: {r: 0.59748423, g: 0.21070804, b: 0.062003016, a: 1}
|
||||
- _BlueColor0: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _BlueColor1: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _BlueColor2: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _BlueColor3: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _Color: {r: 0.4811321, g: 0.19601172, b: 0.15735134, a: 1}
|
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
- _GreenColor0: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _GreenColor1: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _GreenColor2: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _GreenColor3: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _HueVariation: {r: 1, g: 0.5, b: 0, a: 0.1}
|
||||
- _HueVariationColor: {r: 1, g: 0.5, b: 0, a: 0.1}
|
||||
- _OverlayColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _RedColor0: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _RedColor1: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _RedColor2: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _RedColor3: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _RimLightColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _SSSCol: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _Spec: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _SpecColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _SubsurfaceColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _Tint: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _Tint0_0: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _Tint0_1: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _Tint0_2: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _Tint1_0: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _Tint1_1: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _Tint1_2: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _Tint2_0: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _Tint2_1: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _Tint2_2: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _Tint3_0: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _Tint3_1: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _Tint3_2: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_BuildTextureStacks: []
|
||||
@@ -0,0 +1,15 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ae26229ac700db548bbdc6973cb29d39
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 35611
|
||||
packageName: UMA 2
|
||||
packageVersion: 2.13
|
||||
assetPath: Assets/UMA/Content/Hair/HairMat.mat
|
||||
uploadId: 679826
|
||||
@@ -0,0 +1,397 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 8
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: HairMatBiRP
|
||||
m_Shader: {fileID: 4800000, guid: def76a94c229c2a4dae4e0ec3bcd8cca, type: 3}
|
||||
m_ValidKeywords: []
|
||||
m_InvalidKeywords:
|
||||
- EFFECT_BUMP
|
||||
- EFFECT_HUE_VARIATION
|
||||
- _ALPHABLEND_ON
|
||||
- _METALLICGLOSSMAP
|
||||
- _NORMALMAP
|
||||
- _USEHALFLAMBERT_ON
|
||||
- _USEHASHING_OFF
|
||||
- _WINDQUALITY_NONE
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 1
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap:
|
||||
Keep: Keep
|
||||
disabledShaderPasses: []
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _Albedo:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _Albedo1:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _Albedo2:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _Albedo3:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _AlbedoMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _AlphaMask1:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _AlphaMask2:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _AlphaMask3:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _BRDFTex:
|
||||
m_Texture: {fileID: 2800000, guid: 438762e23bc56bf4188ce947bf60e0e3, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _BaseMap:
|
||||
m_Texture: {fileID: 2800000, guid: ef1ad9f8e5c727b40a0836c37b78df41, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _BlueNoiseCrossfade:
|
||||
m_Texture: {fileID: 2800000, guid: 23fd7a3ab1a69344a9eda1a6ca4223f7, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _BumpMap:
|
||||
m_Texture: {fileID: 2800000, guid: b801212351ee38640ad808ad284e7fa8, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ColorMask:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ColorMask1:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ColorMask2:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ColorMask3:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailAlbedoMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailBumpMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailMask:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailMetallicGlossMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailNormalMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _EmissionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ExtraTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MainTex:
|
||||
m_Texture: {fileID: 2800000, guid: ef1ad9f8e5c727b40a0836c37b78df41, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MaskMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MetallicGlossMap:
|
||||
m_Texture: {fileID: 2800000, guid: 52f5bb85dbf10b249884940c5c44ebc2, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _NormalMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _NormalMask:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _NormalMask1:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _NormalMask2:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _NormalMask3:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _OcclusionMap:
|
||||
m_Texture: {fileID: 2800000, guid: 1afdf426d6c18d94d958683356478fc5, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _OverlayMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ParallaxMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _SpecGlossMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _Specular:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _SubsurfaceTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _TanNoise:
|
||||
m_Texture: {fileID: 2800000, guid: 277542933fc54bc489eed73f42225800, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _TangentMap:
|
||||
m_Texture: {fileID: 2800000, guid: adbbfee8a2eaf1a4386f6b3044005ece, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ThicknessMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _texcoord:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _texcoord2:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_Lightmaps:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_LightmapsInd:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_ShadowMasks:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _AlphaClip: 0.5
|
||||
- _AlphaModulation: 2
|
||||
- _AnisoFour: 4.61
|
||||
- _AnisoOffset: 1
|
||||
- _AnisoRot: 0.25
|
||||
- _AnisoThree: 0.89
|
||||
- _AnisoTwo: 1
|
||||
- _AnisotropicFrequency: 1.091
|
||||
- _AnisotropicRoughness: 0.25
|
||||
- _Anisotropy: 1
|
||||
- _BillboardKwToggle: 0
|
||||
- _BillboardShadowFade: 0.5
|
||||
- _Blend: 0
|
||||
- _BumpScale: 0.905
|
||||
- _BumpStrength: 0.4
|
||||
- _ClearCoatMask: 0
|
||||
- _ClearCoatSmoothness: 0
|
||||
- _ColorModulation: 2
|
||||
- _Cull: 2
|
||||
- _CullMode: 2
|
||||
- _Cutoff: 0.6
|
||||
- _CutoffOffset: 0.409
|
||||
- _Cutout: 0.15
|
||||
- _DetailAlbedoStrength: 1
|
||||
- _DetailBumpMapScale: 1
|
||||
- _DetailNormalMapScale: 1
|
||||
- _DetailNormalStrength: 1
|
||||
- _DetailSmoothnessStrength: 1
|
||||
- _Distortion: 1.267
|
||||
- _DoubleSidedNormalMode: 2
|
||||
- _DstBlend: 10
|
||||
- _EmissionStrength: 1
|
||||
- _EmissiveModulation: 1
|
||||
- _EnvironmentReflections: 1
|
||||
- _FadeFactor: 2
|
||||
- _Flatness: 1.06
|
||||
- _Fresnel: 2.36
|
||||
- _FresnelDamp: 1
|
||||
- _Gloss: 0.37
|
||||
- _GlossMapScale: 0.499
|
||||
- _Glossiness: 0.164
|
||||
- _GlossyReflections: 1
|
||||
- _HalfLambertStrength: 4
|
||||
- _HueVariationKwToggle: 1
|
||||
- _MaskClipValue: 0.5
|
||||
- _Metallic: 0.422
|
||||
- _MetallicAdd: 0
|
||||
- _MetallicModulation: 0.668
|
||||
- _MetallicStrength: 0.5
|
||||
- _MipScale: 0.379
|
||||
- _MipScaleOffset: 1.083
|
||||
- _Mode: 2
|
||||
- _NormalMapKwToggle: 1
|
||||
- _NormalStrength: 0.763
|
||||
- _NormalStrength0: 1
|
||||
- _NormalStrength1: 1
|
||||
- _NormalStrength2: 1
|
||||
- _NormalStrength3: 1
|
||||
- _OcclusionStrength: 1
|
||||
- _OcclusionUVSource: 0
|
||||
- _OverlayCount: 0
|
||||
- _Parallax: 0.02
|
||||
- _Power: 1.977
|
||||
- _PrimaryShift: 0.5
|
||||
- _QueueOffset: 0
|
||||
- _ReceiveShadows: 1
|
||||
- _RimAngle: 1.82
|
||||
- _RimLightPower: 4
|
||||
- _RimLightingModulation: 0
|
||||
- _RimPower: 0.296
|
||||
- _SSSAmbient: 0
|
||||
- _SSSDist: 1
|
||||
- _SSSIntensity: 1
|
||||
- _SSSPow: 1
|
||||
- _SSSShadow: 1
|
||||
- _Scale: 0.908
|
||||
- _ScatteringByAlbedo: 0
|
||||
- _SecondUVSource: 0
|
||||
- _SecondaryShift: -0.5
|
||||
- _ShadowScaleOffset: -0.001
|
||||
- _Smoother: -2.61
|
||||
- _Smoothness: 0.077
|
||||
- _SmoothnessAdd: 0
|
||||
- _SmoothnessFromAlbedo: 0
|
||||
- _SmoothnessModulation: 0.522
|
||||
- _SmoothnessStrength: 0.5
|
||||
- _SmoothnessTextureChannel: 0
|
||||
- _SpecularHighlights: 1
|
||||
- _SrcBlend: 5
|
||||
- _Subsurface: 0.355
|
||||
- _SubsurfaceIndirect: 0.25
|
||||
- _SubsurfaceKwToggle: 0
|
||||
- _Surface: 0
|
||||
- _ThicknessMapInvert: 0
|
||||
- _ThicknessMapPower: 1
|
||||
- _ThicknessUVSource: 0
|
||||
- _Tile0_0: 1
|
||||
- _Tile0_1: 1
|
||||
- _Tile0_2: 1
|
||||
- _Tile1_0: 1
|
||||
- _Tile1_1: 1
|
||||
- _Tile1_2: 1
|
||||
- _Tile2_0: 1
|
||||
- _Tile2_1: 1
|
||||
- _Tile2_2: 1
|
||||
- _Tile3_0: 1
|
||||
- _Tile3_1: 1
|
||||
- _Tile3_2: 1
|
||||
- _TwoSided: 2
|
||||
- _UVSec: 0
|
||||
- _UseAlphaClip: 0
|
||||
- _UseAlphaToMask: 0
|
||||
- _UseCutout: 1
|
||||
- _UseDetail: 0
|
||||
- _UseEmission: 0
|
||||
- _UseHalfLambert: 1
|
||||
- _UseHashing: 0
|
||||
- _UseMaskMap: 0
|
||||
- _UseSkinScattering: 0
|
||||
- _WindQuality: 0
|
||||
- _WrappingFactor: 0.01
|
||||
- _WrappingPowerFactor: 1
|
||||
- _ZWrite: 0
|
||||
- __dirty: 1
|
||||
m_Colors:
|
||||
- _Add0_0: {r: 0, g: 0, b: 0, a: 0}
|
||||
- _Add0_1: {r: 0, g: 0, b: 0, a: 0}
|
||||
- _Add0_2: {r: 0, g: 0, b: 0, a: 0}
|
||||
- _Add1_0: {r: 0, g: 0, b: 0, a: 0}
|
||||
- _Add1_1: {r: 0, g: 0, b: 0, a: 0}
|
||||
- _Add1_2: {r: 0, g: 0, b: 0, a: 0}
|
||||
- _Add2_0: {r: 0, g: 0, b: 0, a: 0}
|
||||
- _Add2_1: {r: 0, g: 0, b: 0, a: 0}
|
||||
- _Add2_2: {r: 0, g: 0, b: 0, a: 0}
|
||||
- _Add3_0: {r: 0, g: 0, b: 0, a: 0}
|
||||
- _Add3_1: {r: 0, g: 0, b: 0, a: 0}
|
||||
- _Add3_2: {r: 0, g: 0, b: 0, a: 0}
|
||||
- _AlphaColor3: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _AnisoDir: {r: 0.5, g: 0.5, b: 1, a: 1}
|
||||
- _BaseColor: {r: 0.59748423, g: 0.21070804, b: 0.062003016, a: 1}
|
||||
- _BlueColor0: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _BlueColor1: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _BlueColor2: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _BlueColor3: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _Color: {r: 0.5660378, g: 0.30104628, b: 0.27233887, a: 1}
|
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
- _GreenColor0: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _GreenColor1: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _GreenColor2: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _GreenColor3: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _HueVariation: {r: 1, g: 0.5, b: 0, a: 0.1}
|
||||
- _HueVariationColor: {r: 1, g: 0.5, b: 0, a: 0.1}
|
||||
- _OverlayColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _RedColor0: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _RedColor1: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _RedColor2: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _RedColor3: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _RimLightColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _SSSCol: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _Spec: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _SpecColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _SubsurfaceColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _Tint: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _Tint0_0: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _Tint0_1: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _Tint0_2: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _Tint1_0: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _Tint1_1: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _Tint1_2: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _Tint2_0: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _Tint2_1: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _Tint2_2: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _Tint3_0: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _Tint3_1: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _Tint3_2: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_BuildTextureStacks: []
|
||||
@@ -0,0 +1,15 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 98018701a2bb74d4ab1bd3d1a2e7d74d
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 35611
|
||||
packageName: UMA 2
|
||||
packageVersion: 2.13
|
||||
assetPath: Assets/UMA/Content/Hair/HairMatBiRP.mat
|
||||
uploadId: 679826
|
||||
@@ -0,0 +1,113 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2daa56165cb1bce42a9c85428b303dc7
|
||||
ModelImporter:
|
||||
serializedVersion: 21300
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
materials:
|
||||
materialImportMode: 2
|
||||
materialName: 0
|
||||
materialSearch: 1
|
||||
materialLocation: 1
|
||||
animations:
|
||||
legacyGenerateAnimations: 4
|
||||
bakeSimulation: 0
|
||||
resampleCurves: 1
|
||||
optimizeGameObjects: 0
|
||||
removeConstantScaleCurves: 1
|
||||
motionNodeName:
|
||||
rigImportErrors:
|
||||
rigImportWarnings:
|
||||
animationImportErrors:
|
||||
animationImportWarnings:
|
||||
animationRetargetingWarnings:
|
||||
animationDoRetargetingWarnings: 0
|
||||
importAnimatedCustomProperties: 0
|
||||
importConstraints: 0
|
||||
animationCompression: 1
|
||||
animationRotationError: 0.5
|
||||
animationPositionError: 0.5
|
||||
animationScaleError: 0.5
|
||||
animationWrapMode: 0
|
||||
extraExposedTransformPaths: []
|
||||
extraUserProperties: []
|
||||
clipAnimations: []
|
||||
isReadable: 0
|
||||
meshes:
|
||||
lODScreenPercentages: []
|
||||
globalScale: 1
|
||||
meshCompression: 0
|
||||
addColliders: 0
|
||||
useSRGBMaterialColor: 1
|
||||
sortHierarchyByName: 1
|
||||
importVisibility: 1
|
||||
importBlendShapes: 1
|
||||
importCameras: 1
|
||||
importLights: 1
|
||||
nodeNameCollisionStrategy: 1
|
||||
fileIdsGeneration: 2
|
||||
swapUVChannels: 0
|
||||
generateSecondaryUV: 0
|
||||
useFileUnits: 1
|
||||
keepQuads: 0
|
||||
weldVertices: 1
|
||||
bakeAxisConversion: 0
|
||||
preserveHierarchy: 0
|
||||
skinWeightsMode: 0
|
||||
maxBonesPerVertex: 4
|
||||
minBoneWeight: 0.001
|
||||
optimizeBones: 1
|
||||
meshOptimizationFlags: -1
|
||||
indexFormat: 0
|
||||
secondaryUVAngleDistortion: 8
|
||||
secondaryUVAreaDistortion: 15.000001
|
||||
secondaryUVHardAngle: 88
|
||||
secondaryUVMarginMethod: 1
|
||||
secondaryUVMinLightmapResolution: 40
|
||||
secondaryUVMinObjectScale: 1
|
||||
secondaryUVPackMargin: 4
|
||||
useFileScale: 1
|
||||
tangentSpace:
|
||||
normalSmoothAngle: 60
|
||||
normalImportMode: 0
|
||||
tangentImportMode: 3
|
||||
normalCalculationMode: 4
|
||||
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
|
||||
blendShapeNormalImportMode: 1
|
||||
normalSmoothingSource: 0
|
||||
referencedClips: []
|
||||
importAnimation: 1
|
||||
humanDescription:
|
||||
serializedVersion: 3
|
||||
human: []
|
||||
skeleton: []
|
||||
armTwist: 0.5
|
||||
foreArmTwist: 0.5
|
||||
upperLegTwist: 0.5
|
||||
legTwist: 0.5
|
||||
armStretch: 0.05
|
||||
legStretch: 0.05
|
||||
feetSpacing: 0
|
||||
globalScale: 1
|
||||
rootMotionBoneName:
|
||||
hasTranslationDoF: 0
|
||||
hasExtraRoot: 0
|
||||
skeletonHasParents: 1
|
||||
lastHumanDescriptionAvatarSource: {instanceID: 0}
|
||||
autoGenerateAvatarMappingIfUnspecified: 1
|
||||
animationType: 2
|
||||
humanoidOversampling: 1
|
||||
avatarSetup: 0
|
||||
addHumanoidExtraRootOnlyWhenUsingAvatar: 1
|
||||
remapMaterialsIfMaterialImportModeIsNone: 0
|
||||
additionalBone: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 35611
|
||||
packageName: UMA 2
|
||||
packageVersion: 2.13
|
||||
assetPath: Assets/UMA/Content/Hair/LongHairFront.fbx
|
||||
uploadId: 679826
|
||||
@@ -0,0 +1,113 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8376ea7161518d941892719abcd410ab
|
||||
ModelImporter:
|
||||
serializedVersion: 21300
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
materials:
|
||||
materialImportMode: 2
|
||||
materialName: 0
|
||||
materialSearch: 1
|
||||
materialLocation: 1
|
||||
animations:
|
||||
legacyGenerateAnimations: 4
|
||||
bakeSimulation: 0
|
||||
resampleCurves: 1
|
||||
optimizeGameObjects: 0
|
||||
removeConstantScaleCurves: 1
|
||||
motionNodeName:
|
||||
rigImportErrors:
|
||||
rigImportWarnings:
|
||||
animationImportErrors:
|
||||
animationImportWarnings:
|
||||
animationRetargetingWarnings:
|
||||
animationDoRetargetingWarnings: 0
|
||||
importAnimatedCustomProperties: 0
|
||||
importConstraints: 0
|
||||
animationCompression: 1
|
||||
animationRotationError: 0.5
|
||||
animationPositionError: 0.5
|
||||
animationScaleError: 0.5
|
||||
animationWrapMode: 0
|
||||
extraExposedTransformPaths: []
|
||||
extraUserProperties: []
|
||||
clipAnimations: []
|
||||
isReadable: 0
|
||||
meshes:
|
||||
lODScreenPercentages: []
|
||||
globalScale: 1
|
||||
meshCompression: 0
|
||||
addColliders: 0
|
||||
useSRGBMaterialColor: 1
|
||||
sortHierarchyByName: 1
|
||||
importVisibility: 1
|
||||
importBlendShapes: 1
|
||||
importCameras: 1
|
||||
importLights: 1
|
||||
nodeNameCollisionStrategy: 1
|
||||
fileIdsGeneration: 2
|
||||
swapUVChannels: 0
|
||||
generateSecondaryUV: 0
|
||||
useFileUnits: 1
|
||||
keepQuads: 0
|
||||
weldVertices: 1
|
||||
bakeAxisConversion: 0
|
||||
preserveHierarchy: 0
|
||||
skinWeightsMode: 0
|
||||
maxBonesPerVertex: 4
|
||||
minBoneWeight: 0.001
|
||||
optimizeBones: 1
|
||||
meshOptimizationFlags: -1
|
||||
indexFormat: 0
|
||||
secondaryUVAngleDistortion: 8
|
||||
secondaryUVAreaDistortion: 15.000001
|
||||
secondaryUVHardAngle: 88
|
||||
secondaryUVMarginMethod: 1
|
||||
secondaryUVMinLightmapResolution: 40
|
||||
secondaryUVMinObjectScale: 1
|
||||
secondaryUVPackMargin: 4
|
||||
useFileScale: 1
|
||||
tangentSpace:
|
||||
normalSmoothAngle: 60
|
||||
normalImportMode: 0
|
||||
tangentImportMode: 3
|
||||
normalCalculationMode: 4
|
||||
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
|
||||
blendShapeNormalImportMode: 1
|
||||
normalSmoothingSource: 0
|
||||
referencedClips: []
|
||||
importAnimation: 1
|
||||
humanDescription:
|
||||
serializedVersion: 3
|
||||
human: []
|
||||
skeleton: []
|
||||
armTwist: 0.5
|
||||
foreArmTwist: 0.5
|
||||
upperLegTwist: 0.5
|
||||
legTwist: 0.5
|
||||
armStretch: 0.05
|
||||
legStretch: 0.05
|
||||
feetSpacing: 0
|
||||
globalScale: 1
|
||||
rootMotionBoneName:
|
||||
hasTranslationDoF: 0
|
||||
hasExtraRoot: 0
|
||||
skeletonHasParents: 1
|
||||
lastHumanDescriptionAvatarSource: {instanceID: 0}
|
||||
autoGenerateAvatarMappingIfUnspecified: 1
|
||||
animationType: 2
|
||||
humanoidOversampling: 1
|
||||
avatarSetup: 0
|
||||
addHumanoidExtraRootOnlyWhenUsingAvatar: 1
|
||||
remapMaterialsIfMaterialImportModeIsNone: 0
|
||||
additionalBone: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 35611
|
||||
packageName: UMA 2
|
||||
packageVersion: 2.13
|
||||
assetPath: Assets/UMA/Content/Hair/LongHairFrontScrunchi.fbx
|
||||
uploadId: 679826
|
||||
@@ -0,0 +1,44 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
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: ac718b8ce852d1445b8fbe5c323134ac, type: 3}
|
||||
m_Name: NewHairMaterial
|
||||
m_EditorClassIdentifier:
|
||||
translateSRP: 0
|
||||
AutoSetSRPMaterials: 1
|
||||
_material: {fileID: 2100000, guid: ae26229ac700db548bbdc6973cb29d39, type: 2}
|
||||
_secondPass: {fileID: 0}
|
||||
srpMaterials:
|
||||
- SRP: 2
|
||||
material: {fileID: 2100000, guid: 9cbdf960da83ce848b6fa53141ca2fe7, type: 2}
|
||||
secondPass: {fileID: 2100000, guid: 8146edb8bb821c34f956f820090a2adb, type: 2}
|
||||
alternateKeywords:
|
||||
- _BaseMap
|
||||
- _BumpMap
|
||||
- SRP: 3
|
||||
material: {fileID: 2100000, guid: 9cbdf960da83ce848b6fa53141ca2fe7, type: 2}
|
||||
secondPass: {fileID: 2100000, guid: 8146edb8bb821c34f956f820090a2adb, type: 2}
|
||||
alternateKeywords:
|
||||
- _BaseMap
|
||||
- _BumpMap
|
||||
materialType: 4
|
||||
channels: []
|
||||
MipMapBias: 0
|
||||
AnisoLevel: 8
|
||||
MatFilterMode: 2
|
||||
Compression: 0
|
||||
shaderParms:
|
||||
- ParameterName: _Color
|
||||
ColorName: Hair
|
||||
MaskWithCurrentColor: 0
|
||||
maskMultiplier: {r: 1, g: 1, b: 1, a: 1}
|
||||
MaterialName:
|
||||
ShaderName:
|
||||
@@ -0,0 +1,15 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0da62afd3a3b54343a1dfd0f28d4674b
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 35611
|
||||
packageName: UMA 2
|
||||
packageVersion: 2.13
|
||||
assetPath: Assets/UMA/Content/Hair/NewHairMaterial.asset
|
||||
uploadId: 679826
|
||||
@@ -0,0 +1,15 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ff02b91324862a848a1766b8b73d5871
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 35611
|
||||
packageName: UMA 2
|
||||
packageVersion: 2.13
|
||||
assetPath: Assets/UMA/Content/Hair/NewHairOverlay.asset
|
||||
uploadId: 679826
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 22289e731ca43144f979fbed22a3e91b
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c30cd7d08d09bd94abd54da99f16e598
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,25 @@
|
||||
# UnityHairShader Version 9
|
||||
This version uses blue noise and alpha to mask dithering to produce significantly better rendering when layering lots of hair strips on top of each other.
|
||||
Be aware however, while this is temporally stable, it is not view angle stable -- it must be used with some kind of Temporal Anti Aliasing or Motion Blur.
|
||||
|
||||
The results are much, much better though.
|
||||
|
||||
# UnityHairShader Version 6
|
||||
A hair shader originally built for the sine.space virtual world, designed and built for Unity3D's PBR rendering system.
|
||||
|
||||

|
||||
|
||||
Leverages the Anisotropic Rendering released by Matt Dean availible from https://github.com/Kink3d/AnisotropicStandardShader - and incorporates features from Alan Zucconi's implementation of EA's Frostbite Fast Translucency algorithm (GDC 2011).
|
||||
|
||||
Quick Summary:
|
||||
* Anisotropic highlights
|
||||
* PBR-ish. Has option to tweak/remove unrealistic fresnel highlights.
|
||||
* Optional variant with Normal Map support
|
||||
* Double Sided (optional - delete the first pass if you dont need it)
|
||||
* Works with Shader Model 3.0 (Normal Map variant requires SM 4.5, but will fallback to SM 3.0 variant)
|
||||
|
||||
Notes:
|
||||
* Is going to be kinda heavy. Performance seems OK here, but could probably do with optimisation.
|
||||
* We render the lower pass using alpha testing versus blending; this fixes a host of issues with ordering; it's a little smelly, but it works better over all.
|
||||
|
||||
Shows up as 'Sine Wave/Modern/Adam's Hair Shader 1.0' (Plain variant) and 'Sine Wave/Modern/Adam's Hair Shader 1.1' (Normal variant)
|
||||
@@ -0,0 +1,14 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6ee6ce60500963141ab0b56e88f16571
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 35611
|
||||
packageName: UMA 2
|
||||
packageVersion: 2.13
|
||||
assetPath: Assets/UMA/Content/Hair/Shader/UnityHairShader-master/README.md
|
||||
uploadId: 679826
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d5d495917f6361141863e8f8890c7e4b
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,166 @@
|
||||
|
||||
Shader "Sine Wave/Modern/Adam's Hair Shader 1.0" {
|
||||
Properties {
|
||||
_Color ("Color", Color) = (1,1,1,1)
|
||||
_MainTex ("Albedo (RGB)", 2D) = "white" {}
|
||||
_Glossiness ("Smoothness", Range(0,1)) = 0.5
|
||||
_Metallic ("Metallic", Range(0,1)) = 0.0
|
||||
_TangentMap("Tangent Map (RG)", 2D) = "white" {}
|
||||
_Fresnel ("Fresnel Power", Range(0,30)) = 1.0
|
||||
_FresnelDamp ("Fresnel Damp", Range(0,1)) = 1.0
|
||||
_Anisotropy ("Anisotropy", Range(0,1)) = 1.0
|
||||
_Distortion ("Translucent Distortion", Range(0,5)) = 1.0
|
||||
_Scale ("Translucent Scale", Range(0,5)) = 1.0
|
||||
_Power ("Translucent Power", Range(0,5)) = 1.0
|
||||
_Cutoff ("Alpha Cutoff", Range(0,1)) = 0.5
|
||||
}
|
||||
SubShader {
|
||||
Tags { "RenderType"="Transparent" "Queue"="Transparent"}
|
||||
LOD 200
|
||||
|
||||
Cull Front
|
||||
|
||||
CGPROGRAM
|
||||
#include "UnityCG.cginc"
|
||||
#include "CGIncludes/UnityAnisotropicBRDF.cginc"
|
||||
#include "CGIncludes/UnityAnisotropicLighting.cginc"
|
||||
#include "CGIncludes/UnityTranslucentLighting.cginc"
|
||||
#define UNITY_BRDF_PBS BRDF_Unity_Anisotropic
|
||||
// Physically based Standard lighting model, and enable shadows on all light types
|
||||
#pragma surface AnisotropicSurface StandardTranslucent vertex:vert fullforwardshadows alphatest:_Cutoff nolightmap
|
||||
|
||||
// Use shader model 3.0 target, to get nicer looking lighting
|
||||
#pragma target 3.0
|
||||
|
||||
sampler2D _MainTex;
|
||||
sampler2D _TangentMap;
|
||||
float _Anisotropy;
|
||||
|
||||
//Vertex struct
|
||||
struct Input
|
||||
{
|
||||
float2 uv_MainTex;
|
||||
float3 normal;
|
||||
float3 viewDir;
|
||||
float3 normalDir;
|
||||
float3 tangentDir;
|
||||
float3 bitangentDir;
|
||||
};
|
||||
|
||||
//Vertex shader
|
||||
void vert(inout appdata_full v, out Input o)
|
||||
{
|
||||
v.normal *= -1;
|
||||
|
||||
UNITY_INITIALIZE_OUTPUT(Input, o);
|
||||
//Normal 2 World
|
||||
o.normalDir = normalize(UnityObjectToWorldNormal(v.normal));
|
||||
//Tangent 2 World
|
||||
float3 tangentMul = normalize(mul(unity_ObjectToWorld, v.tangent.xyz));
|
||||
o.tangentDir = float4(tangentMul, v.tangent.w);
|
||||
// Bitangent
|
||||
o.bitangentDir = cross(o.normalDir, o.tangentDir);
|
||||
}
|
||||
|
||||
half _Glossiness;
|
||||
half _Metallic;
|
||||
fixed4 _Color;
|
||||
|
||||
void AnisotropicSurface (Input IN, inout SurfaceOutputStandardAnisotropic o)
|
||||
{
|
||||
fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
|
||||
o.Albedo = c;
|
||||
o.Metallic = _Metallic;
|
||||
o.Smoothness = _Glossiness;
|
||||
o.Alpha = c.a;
|
||||
o.Anisotropy = _Anisotropy;
|
||||
|
||||
float3x3 worldToTangent;
|
||||
worldToTangent[0] = float3(1, 0, 0);
|
||||
worldToTangent[1] = float3(0, 1, 0);
|
||||
worldToTangent[2] = float3(0, 0, 1);
|
||||
|
||||
float3 tangentTS = tex2D(_TangentMap, IN.uv_MainTex);
|
||||
float3 tangentTWS = mul(tangentTS, worldToTangent);
|
||||
float3 fTangent;
|
||||
if (tangentTS.z < 1)
|
||||
fTangent = tangentTWS;
|
||||
else
|
||||
fTangent = IN.tangentDir;
|
||||
o.WorldVectors = float3x3(fTangent, IN.bitangentDir, IN.normalDir);
|
||||
}
|
||||
ENDCG
|
||||
|
||||
Cull Back
|
||||
|
||||
CGPROGRAM
|
||||
#include "UnityCG.cginc"
|
||||
#include "CGIncludes/UnityAnisotropicBRDF.cginc"
|
||||
#include "CGIncludes/UnityAnisotropicLighting.cginc"
|
||||
#include "CGIncludes/UnityTranslucentLighting.cginc"
|
||||
#define UNITY_BRDF_PBS BRDF_Unity_Anisotropic
|
||||
// Physically based Standard lighting model, and enable shadows on all light types
|
||||
#pragma surface AnisotropicSurface StandardTranslucent vertex:vert fullforwardshadows alpha:fade nolightmap
|
||||
|
||||
// Use shader model 3.0 target, to get nicer looking lighting
|
||||
#pragma target 3.0
|
||||
|
||||
sampler2D _MainTex;
|
||||
sampler2D _TangentMap;
|
||||
float _Anisotropy;
|
||||
|
||||
//Vertex struct
|
||||
struct Input
|
||||
{
|
||||
float2 uv_MainTex;
|
||||
float3 normal;
|
||||
float3 viewDir;
|
||||
float3 normalDir;
|
||||
float3 tangentDir;
|
||||
float3 bitangentDir;
|
||||
};
|
||||
|
||||
//Vertex shader
|
||||
void vert(inout appdata_full v, out Input o)
|
||||
{
|
||||
UNITY_INITIALIZE_OUTPUT(Input, o);
|
||||
//Normal 2 World
|
||||
o.normalDir = normalize(UnityObjectToWorldNormal(v.normal));
|
||||
//Tangent 2 World
|
||||
float3 tangentMul = normalize(mul(unity_ObjectToWorld, v.tangent.xyz));
|
||||
o.tangentDir = float4(tangentMul, v.tangent.w);
|
||||
// Bitangent
|
||||
o.bitangentDir = cross(o.normalDir, o.tangentDir);
|
||||
}
|
||||
|
||||
half _Glossiness;
|
||||
half _Metallic;
|
||||
fixed4 _Color;
|
||||
|
||||
void AnisotropicSurface (Input IN, inout SurfaceOutputStandardAnisotropic o)
|
||||
{
|
||||
fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
|
||||
o.Albedo = c;
|
||||
o.Metallic = _Metallic;
|
||||
o.Smoothness = _Glossiness;
|
||||
o.Alpha = c.a;
|
||||
o.Anisotropy = _Anisotropy;
|
||||
|
||||
float3x3 worldToTangent;
|
||||
worldToTangent[0] = float3(1, 0, 0);
|
||||
worldToTangent[1] = float3(0, 1, 0);
|
||||
worldToTangent[2] = float3(0, 0, 1);
|
||||
|
||||
float3 tangentTS = tex2D(_TangentMap, IN.uv_MainTex);
|
||||
float3 tangentTWS = mul(tangentTS, worldToTangent);
|
||||
float3 fTangent;
|
||||
if (tangentTS.z < 1)
|
||||
fTangent = tangentTWS;
|
||||
else
|
||||
fTangent = IN.tangentDir;
|
||||
o.WorldVectors = float3x3(fTangent, IN.bitangentDir, IN.normalDir);
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
FallBack "Diffuse"
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: df1858593cdb6774987239ad9df87d98
|
||||
timeCreated: 1507206597
|
||||
licenseType: Store
|
||||
ShaderImporter:
|
||||
defaultTextures: []
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 35611
|
||||
packageName: UMA 2
|
||||
packageVersion: 2.13
|
||||
assetPath: Assets/UMA/Content/Hair/Shader/UnityHairShader-master/Version6/AdamsHairShader.shader
|
||||
uploadId: 679826
|
||||
@@ -0,0 +1,166 @@
|
||||
|
||||
Shader "Sine Wave/Modern/Adam's Hair Shader 1.1" {
|
||||
Properties {
|
||||
_Color ("Color", Color) = (1,1,1,1)
|
||||
_MainTex ("Albedo (RGB)", 2D) = "white" {}
|
||||
_BumpMap ("Normal Map", 2D) = "" {}
|
||||
_Glossiness ("Smoothness", Range(0,1)) = 0.5
|
||||
_Metallic ("Metallic", Range(0,1)) = 0.0
|
||||
_TangentMap("Tangent Map (RG)", 2D) = "white" {}
|
||||
_Fresnel ("Fresnel Power", Range(0,30)) = 1.0
|
||||
_FresnelDamp ("Fresnel Damp", Range(0,1)) = 1.0
|
||||
_Anisotropy ("Anisotropy", Range(0,1)) = 1.0
|
||||
_Distortion ("Translucent Distortion", Range(0,5)) = 1.0
|
||||
_Scale ("Translucent Scale", Range(0,5)) = 1.0
|
||||
_Power ("Translucent Power", Range(0,5)) = 1.0
|
||||
_Cutoff ("Alpha Cutoff", Range(0,1)) = 0.5
|
||||
}
|
||||
SubShader {
|
||||
Tags { "RenderType"="Transparent" "Queue"="Transparent"}
|
||||
LOD 200
|
||||
|
||||
Cull Front
|
||||
|
||||
CGPROGRAM
|
||||
#include "UnityCG.cginc"
|
||||
#include "CGIncludes/UnityAnisotropicBRDF.cginc"
|
||||
#include "CGIncludes/UnityAnisotropicLighting.cginc"
|
||||
#include "CGIncludes/UnityTranslucentLighting.cginc"
|
||||
#define UNITY_BRDF_PBS BRDF_Unity_Anisotropic
|
||||
// Physically based Standard lighting model, and enable shadows on all light types
|
||||
#pragma surface AnisotropicSurface StandardTranslucent vertex:vert fullforwardshadows alphatest:_Cutoff nolightmap
|
||||
|
||||
// Use shader model 3.0 target, to get nicer looking lighting
|
||||
#pragma target 4.5
|
||||
|
||||
sampler2D _MainTex;
|
||||
sampler2D _BumpMap;
|
||||
float _Anisotropy;
|
||||
|
||||
//Vertex struct
|
||||
struct Input
|
||||
{
|
||||
float2 uv_MainTex;
|
||||
float3 normal;
|
||||
float3 viewDir;
|
||||
float3 normalDir;
|
||||
float3 tangentDir;
|
||||
float3 bitangentDir;
|
||||
};
|
||||
|
||||
//Vertex shader
|
||||
void vert(inout appdata_full v, out Input o)
|
||||
{
|
||||
v.normal *= -1;
|
||||
|
||||
UNITY_INITIALIZE_OUTPUT(Input, o);
|
||||
//Normal 2 World
|
||||
o.normalDir = normalize(UnityObjectToWorldNormal(v.normal));
|
||||
//Tangent 2 World
|
||||
float3 tangentMul = normalize(mul(unity_ObjectToWorld, v.tangent.xyz));
|
||||
o.tangentDir = float4(tangentMul, v.tangent.w);
|
||||
// Bitangent
|
||||
o.bitangentDir = cross(o.normalDir, o.tangentDir);
|
||||
}
|
||||
|
||||
half _Glossiness;
|
||||
half _Metallic;
|
||||
fixed4 _Color;
|
||||
|
||||
void AnisotropicSurface (Input IN, inout SurfaceOutputStandardAnisotropic o)
|
||||
{
|
||||
fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
|
||||
o.Albedo = c;
|
||||
o.Metallic = _Metallic;
|
||||
o.Smoothness = _Glossiness;
|
||||
o.Alpha = c.a;
|
||||
o.Anisotropy = _Anisotropy;
|
||||
o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_MainTex));
|
||||
|
||||
float3x3 worldToTangent;
|
||||
worldToTangent[0] = float3(1, 0, 0);
|
||||
worldToTangent[1] = float3(0, 1, 0);
|
||||
worldToTangent[2] = float3(0, 0, 1);
|
||||
|
||||
float3 fTangent;
|
||||
fTangent = IN.tangentDir;
|
||||
|
||||
o.WorldVectors = float3x3(fTangent, IN.bitangentDir, IN.normalDir);
|
||||
}
|
||||
ENDCG
|
||||
|
||||
Cull Back
|
||||
|
||||
CGPROGRAM
|
||||
#include "UnityCG.cginc"
|
||||
#include "CGIncludes/UnityAnisotropicBRDF.cginc"
|
||||
#include "CGIncludes/UnityAnisotropicLighting.cginc"
|
||||
#include "CGIncludes/UnityTranslucentLighting.cginc"
|
||||
#define UNITY_BRDF_PBS BRDF_Unity_Anisotropic
|
||||
// Physically based Standard lighting model, and enable shadows on all light types
|
||||
#pragma surface AnisotropicSurface StandardTranslucent vertex:vert fullforwardshadows alpha:fade nolightmap
|
||||
|
||||
// Use shader model 3.0 target, to get nicer looking lighting
|
||||
#pragma target 4.5
|
||||
|
||||
sampler2D _MainTex;
|
||||
sampler2D _TangentMap;
|
||||
sampler2D _BumpMap;
|
||||
float _Anisotropy;
|
||||
|
||||
//Vertex struct
|
||||
struct Input
|
||||
{
|
||||
float2 uv_MainTex;
|
||||
float3 normal;
|
||||
float3 viewDir;
|
||||
float3 normalDir;
|
||||
float3 tangentDir;
|
||||
float3 bitangentDir;
|
||||
};
|
||||
|
||||
//Vertex shader
|
||||
void vert(inout appdata_full v, out Input o)
|
||||
{
|
||||
UNITY_INITIALIZE_OUTPUT(Input, o);
|
||||
//Normal 2 World
|
||||
o.normalDir = normalize(UnityObjectToWorldNormal(v.normal));
|
||||
//Tangent 2 World
|
||||
float3 tangentMul = normalize(mul(unity_ObjectToWorld, v.tangent.xyz));
|
||||
o.tangentDir = float4(tangentMul, v.tangent.w);
|
||||
// Bitangent
|
||||
o.bitangentDir = cross(o.normalDir, o.tangentDir);
|
||||
}
|
||||
|
||||
half _Glossiness;
|
||||
half _Metallic;
|
||||
fixed4 _Color;
|
||||
|
||||
void AnisotropicSurface (Input IN, inout SurfaceOutputStandardAnisotropic o)
|
||||
{
|
||||
fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
|
||||
o.Albedo = c;
|
||||
o.Metallic = _Metallic;
|
||||
o.Smoothness = _Glossiness;
|
||||
o.Alpha = c.a;
|
||||
o.Anisotropy = _Anisotropy;
|
||||
o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_MainTex));
|
||||
|
||||
float3x3 worldToTangent;
|
||||
worldToTangent[0] = float3(1, 0, 0);
|
||||
worldToTangent[1] = float3(0, 1, 0);
|
||||
worldToTangent[2] = float3(0, 0, 1);
|
||||
|
||||
float3 tangentTS = tex2D(_TangentMap, IN.uv_MainTex);
|
||||
float3 tangentTWS = mul(tangentTS, worldToTangent);
|
||||
float3 fTangent;
|
||||
if (tangentTS.z < 1)
|
||||
fTangent = tangentTWS;
|
||||
else
|
||||
fTangent = IN.tangentDir;
|
||||
o.WorldVectors = float3x3(fTangent, IN.bitangentDir, IN.normalDir);
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
FallBack "Sine Wave/Modern/Adam's Hair Shader 1.0"
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f3e1cd3df2cb9e8488d671b83b3b7599
|
||||
timeCreated: 1507216561
|
||||
licenseType: Store
|
||||
ShaderImporter:
|
||||
defaultTextures: []
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 35611
|
||||
packageName: UMA 2
|
||||
packageVersion: 2.13
|
||||
assetPath: Assets/UMA/Content/Hair/Shader/UnityHairShader-master/Version6/AdamsHairShaderNormal.shader
|
||||
uploadId: 679826
|
||||
@@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7b39a011b0394d348a08f98d0fb2e6d7
|
||||
folderAsset: yes
|
||||
timeCreated: 1498921366
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,139 @@
|
||||
//#ifndef UNITY_ANISOTROPIC_BRDF_INCLUDED
|
||||
//#define UNITY_ANISOTROPIC_BRDF_INCLUDED
|
||||
|
||||
// Anisotropic GGX
|
||||
// From HDRenderPipeline
|
||||
float D_GGXAnisotropic(float TdotH, float BdotH, float NdotH, float roughnessT, float roughnessB)
|
||||
{
|
||||
float f = TdotH * TdotH / (roughnessT * roughnessT) + BdotH * BdotH / (roughnessB * roughnessB) + NdotH * NdotH;
|
||||
return 1.0 / (roughnessT * roughnessB * f * f);
|
||||
}
|
||||
|
||||
// Smith Joint GGX Anisotropic Visibility
|
||||
// Taken from https://cedec.cesa.or.jp/2015/session/ENG/14698.html
|
||||
float SmithJointGGXAnisotropic(float TdotV, float BdotV, float NdotV, float TdotL, float BdotL, float NdotL, float roughnessT, float roughnessB)
|
||||
{
|
||||
float aT = roughnessT;
|
||||
float aT2 = aT * aT;
|
||||
float aB = roughnessB;
|
||||
float aB2 = aB * aB;
|
||||
|
||||
float lambdaV = NdotL * sqrt(aT2 * TdotV * TdotV + aB2 * BdotV * BdotV + NdotV * NdotV);
|
||||
float lambdaL = NdotV * sqrt(aT2 * TdotL * TdotL + aB2 * BdotL * BdotL + NdotL * NdotL);
|
||||
|
||||
return 0.5 / (lambdaV + lambdaL);
|
||||
}
|
||||
|
||||
// Convert Anistropy to roughness
|
||||
void ConvertAnisotropyToRoughness(float roughness, float anisotropy, out float roughnessT, out float roughnessB)
|
||||
{
|
||||
// (0 <= anisotropy <= 1), therefore (0 <= anisoAspect <= 1)
|
||||
// The 0.9 factor limits the aspect ratio to 10:1.
|
||||
float anisoAspect = sqrt(1.0 - 0.9 * anisotropy);
|
||||
roughnessT = roughness / anisoAspect; // Distort along tangent (rougher)
|
||||
roughnessB = roughness * anisoAspect; // Straighten along bitangent (smoother)
|
||||
}
|
||||
|
||||
// Schlick Fresnel
|
||||
float FresnelSchlick(float f0, float f90, float u)
|
||||
{
|
||||
float x = 1.0 - u;
|
||||
float x5 = x * x;
|
||||
x5 = x5 * x5 * x;
|
||||
return (f90 - f0) * x5 + f0; // sub mul mul mul sub mad
|
||||
}
|
||||
|
||||
//Clamp roughness
|
||||
float ClampRoughnessForAnalyticalLights(float roughness)
|
||||
{
|
||||
return max(roughness, 0.000001);
|
||||
}
|
||||
|
||||
// Ref: Donald Revie - Implementing Fur Using Deferred Shading (GPU Pro 2)
|
||||
// The grain direction (e.g. hair or brush direction) is assumed to be orthogonal to the normal.
|
||||
// The returned normal is NOT normalized.
|
||||
float3 ComputeGrainNormal(float3 grainDir, float3 V)
|
||||
{
|
||||
float3 B = cross(-V, grainDir);
|
||||
return cross(B, grainDir);
|
||||
}
|
||||
|
||||
//Modify Normal for Anisotropic IBL (Realtime version)
|
||||
// Fake anisotropic by distorting the normal.
|
||||
// The grain direction (e.g. hair or brush direction) is assumed to be orthogonal to N.
|
||||
// Anisotropic ratio (0->no isotropic; 1->full anisotropy in tangent direction)
|
||||
float3 GetAnisotropicModifiedNormal(float3 grainDir, float3 N, float3 V, float anisotropy)
|
||||
{
|
||||
float3 grainNormal = ComputeGrainNormal(grainDir, V);
|
||||
// TODO: test whether normalizing 'grainNormal' is worth it.
|
||||
return normalize(lerp(N, grainNormal, anisotropy));
|
||||
}
|
||||
|
||||
float4 AnisotropicBRDF(float3 diffColor, float3 specColor, float oneMinusReflectivity, float smoothness, float3 normal, float3x3 worldVectors,
|
||||
float anisotropy, float metallic, float3 viewDir, UnityLight light, UnityIndirect gi)
|
||||
{
|
||||
//Unpack world vectors
|
||||
float3 tangent = worldVectors[0];
|
||||
float3 bitangent = worldVectors[1];
|
||||
//Normal shift
|
||||
float shiftAmount = dot(normal, viewDir);
|
||||
normal = shiftAmount < 0.0f ? normal + viewDir * (-shiftAmount + 1e-5f) : normal;
|
||||
//Regular vectors
|
||||
float NdotL = saturate(dot(normal, light.dir));
|
||||
float NdotV = abs(dot(normal, viewDir));
|
||||
float LdotV = dot(light.dir, viewDir);
|
||||
float3 H = Unity_SafeNormalize(light.dir + viewDir);
|
||||
float invLenLV = rsqrt(abs(2 + 2 * normalize(LdotV)));
|
||||
float NdotH = saturate(dot(normal, H));
|
||||
float LdotH = saturate(dot(light.dir, H));
|
||||
//Tangent vectors
|
||||
float TdotH = dot(tangent, H);
|
||||
float TdotL = dot(tangent, light.dir);
|
||||
float BdotH = dot(bitangent, H);
|
||||
float BdotL = dot(bitangent, light.dir);
|
||||
float TdotV = dot(viewDir, tangent);
|
||||
float BdotV = dot(viewDir, bitangent);
|
||||
//Fresnels
|
||||
half grazingTerm = saturate(smoothness + (1 - oneMinusReflectivity));
|
||||
float3 F = FresnelLerp(specColor, grazingTerm, NdotV); //Original Schlick - Replace from SRP?
|
||||
//float3 fresnel0 = lerp(specColor, diffColor, metallic);
|
||||
//float3 F = FresnelSchlick(fresnel0, 1.0, LdotH);
|
||||
//Calculate roughness
|
||||
float roughnessT;
|
||||
float roughnessB;
|
||||
float perceptualRoughness = SmoothnessToPerceptualRoughness(smoothness);
|
||||
float roughness = PerceptualRoughnessToRoughness(perceptualRoughness);
|
||||
ConvertAnisotropyToRoughness(roughness, anisotropy, roughnessT, roughnessB);
|
||||
//Clamp roughness
|
||||
roughnessT = ClampRoughnessForAnalyticalLights(roughnessT);
|
||||
roughnessB = ClampRoughnessForAnalyticalLights(roughnessB);
|
||||
//Visibility & Distribution terms
|
||||
float V = SmithJointGGXAnisotropic(TdotV, BdotV, NdotV, TdotL, BdotL, NdotL, roughnessT, roughnessB);
|
||||
float D = D_GGXAnisotropic(TdotH, BdotH, NdotH, roughnessT, roughnessB);
|
||||
//Specular term
|
||||
float3 specularTerm = V * D;
|
||||
# ifdef UNITY_COLORSPACE_GAMMA
|
||||
specularTerm = sqrt(max(1e-4h, specularTerm));
|
||||
# endif
|
||||
// specularTerm * nl can be NaN on Metal in some cases, use max() to make sure it's a sane value
|
||||
specularTerm = max(0, specularTerm * NdotL);
|
||||
#if defined(_SPECULARHIGHLIGHTS_OFF)
|
||||
specularTerm = 0.0;
|
||||
#endif
|
||||
//Diffuse term
|
||||
float diffuseTerm = DisneyDiffuse(NdotV, NdotL, LdotH, perceptualRoughness) * NdotL;// - Need this NdotL multiply?
|
||||
//Reduction
|
||||
half surfaceReduction;
|
||||
# ifdef UNITY_COLORSPACE_GAMMA
|
||||
surfaceReduction = 1.0 - 0.28*roughness*perceptualRoughness; // 1-0.28*x^3 as approximation for (1/(x^4+1))^(1/2.2) on the domain [0;1]
|
||||
# else
|
||||
surfaceReduction = 1.0 / (roughness*roughness + 1.0); // fade \in [0.5;1]
|
||||
# endif
|
||||
//Final
|
||||
half3 color = (diffColor * (gi.diffuse + light.color * diffuseTerm))
|
||||
+ specularTerm * light.color * FresnelTerm(specColor, LdotH)
|
||||
+ surfaceReduction * gi.specular * FresnelLerp(specColor, grazingTerm, NdotV);
|
||||
return half4(color, 1);
|
||||
}
|
||||
|
||||
//#endif UNITY_ANISOTROPIC_BRDF_INCLUDED
|
||||
@@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6e08e7908d12f204dad78c6dd65d4fe2
|
||||
timeCreated: 1498921366
|
||||
licenseType: Store
|
||||
ShaderImporter:
|
||||
defaultTextures: []
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 35611
|
||||
packageName: UMA 2
|
||||
packageVersion: 2.13
|
||||
assetPath: Assets/UMA/Content/Hair/Shader/UnityHairShader-master/Version6/CGIncludes/UnityAnisotropicBRDF.cginc
|
||||
uploadId: 679826
|
||||
@@ -0,0 +1,37 @@
|
||||
//#ifndef UNITY_ANISOTROPIC_COMMON_INCLUDED
|
||||
//#define UNITY_ANISOTROPIC_COMMON_INCLUDED
|
||||
|
||||
// ------------------------------------------------------------------
|
||||
// Maths helpers
|
||||
|
||||
// Octahedron Normal Vectors
|
||||
// [Cigolle 2014, "A Survey of Efficient Representations for Independent Unit Vectors"]
|
||||
// Mean Max
|
||||
// oct 8:8 0.33709 0.94424
|
||||
// snorm 8:8:8 0.17015 0.38588
|
||||
// oct 10:10 0.08380 0.23467
|
||||
// snorm 10:10:10 0.04228 0.09598
|
||||
// oct 12:12 0.02091 0.05874
|
||||
|
||||
float2 UnitVectorToOctahedron(float3 N)
|
||||
{
|
||||
N.xy /= dot(1, abs(N));
|
||||
if (N.z <= 0)
|
||||
{
|
||||
N.xy = (1 - abs(N.yx)) * (N.xy >= 0 ? float2(1, 1) : float2(-1, -1));
|
||||
}
|
||||
return N.xy;
|
||||
}
|
||||
|
||||
float3 OctahedronToUnitVector(float2 Oct)
|
||||
{
|
||||
float3 N = float3(Oct, 1 - dot(1, abs(Oct)));
|
||||
if (N.z < 0)
|
||||
{
|
||||
N.xy = (1 - abs(N.yx)) * (N.xy >= 0 ? float2(1, 1) : float2(-1, -1));
|
||||
}
|
||||
return float3(1, 1, 1);
|
||||
return normalize(N);
|
||||
}
|
||||
|
||||
//#endif UNITY_ANISOTROPIC_COMMON_INCLUDED
|
||||
@@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: de3fb915cf4202344beb5b90d05c7fda
|
||||
timeCreated: 1491560472
|
||||
licenseType: Store
|
||||
ShaderImporter:
|
||||
defaultTextures: []
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 35611
|
||||
packageName: UMA 2
|
||||
packageVersion: 2.13
|
||||
assetPath: Assets/UMA/Content/Hair/Shader/UnityHairShader-master/Version6/CGIncludes/UnityAnisotropicCommon.cginc
|
||||
uploadId: 679826
|
||||
@@ -0,0 +1,669 @@
|
||||
// Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt)
|
||||
|
||||
#ifndef UNITY_ANISOTROPIC_CORE_INCLUDED
|
||||
#define UNITY_ANISOTROPIC_CORE_INCLUDED
|
||||
|
||||
#include "UnityCG.cginc"
|
||||
#include "UnityStandardConfig.cginc"
|
||||
#include "UnityAnisotropicInput.cginc"
|
||||
#include "UnityAnisotropicBRDF.cginc"
|
||||
#include "UnityAnisotropicLighting.cginc"
|
||||
#include "UnityStandardUtils.cginc"
|
||||
#include "UnityGBuffer.cginc"
|
||||
#include "AutoLight.cginc"
|
||||
|
||||
//-------------------------------------------------------------------------------------
|
||||
// counterpart for NormalizePerPixelNormal
|
||||
// skips normalization per-vertex and expects normalization to happen per-pixel
|
||||
half3 NormalizePerVertexNormal (float3 n) // takes float to avoid overflow
|
||||
{
|
||||
#if (SHADER_TARGET < 30) || UNITY_STANDARD_SIMPLE
|
||||
return normalize(n);
|
||||
#else
|
||||
return n; // will normalize per-pixel instead
|
||||
#endif
|
||||
}
|
||||
|
||||
half3 NormalizePerPixelNormal (half3 n)
|
||||
{
|
||||
#if (SHADER_TARGET < 30) || UNITY_STANDARD_SIMPLE
|
||||
return n;
|
||||
#else
|
||||
return normalize(n);
|
||||
#endif
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------
|
||||
UnityLight MainLight ()
|
||||
{
|
||||
UnityLight l;
|
||||
|
||||
l.color = _LightColor0.rgb;
|
||||
l.dir = _WorldSpaceLightPos0.xyz;
|
||||
return l;
|
||||
}
|
||||
|
||||
UnityLight AdditiveLight (half3 lightDir, half atten)
|
||||
{
|
||||
UnityLight l;
|
||||
|
||||
l.color = _LightColor0.rgb;
|
||||
l.dir = lightDir;
|
||||
#ifndef USING_DIRECTIONAL_LIGHT
|
||||
l.dir = NormalizePerPixelNormal(l.dir);
|
||||
#endif
|
||||
|
||||
// shadow the light
|
||||
l.color *= atten;
|
||||
return l;
|
||||
}
|
||||
|
||||
UnityLight DummyLight ()
|
||||
{
|
||||
UnityLight l;
|
||||
l.color = 0;
|
||||
l.dir = half3 (0,1,0);
|
||||
return l;
|
||||
}
|
||||
|
||||
UnityIndirect ZeroIndirect ()
|
||||
{
|
||||
UnityIndirect ind;
|
||||
ind.diffuse = 0;
|
||||
ind.specular = 0;
|
||||
return ind;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------
|
||||
// Common fragment setup
|
||||
|
||||
// deprecated
|
||||
half3 WorldNormal(half4 tan2world[3])
|
||||
{
|
||||
return normalize(tan2world[2].xyz);
|
||||
}
|
||||
|
||||
// deprecated
|
||||
#ifdef _TANGENT_TO_WORLD
|
||||
half3x3 ExtractTangentToWorldPerPixel(half4 tan2world[3])
|
||||
{
|
||||
half3 t = tan2world[0].xyz;
|
||||
half3 b = tan2world[1].xyz;
|
||||
half3 n = tan2world[2].xyz;
|
||||
|
||||
#if UNITY_TANGENT_ORTHONORMALIZE
|
||||
n = NormalizePerPixelNormal(n);
|
||||
|
||||
// ortho-normalize Tangent
|
||||
t = normalize (t - n * dot(t, n));
|
||||
|
||||
// recalculate Binormal
|
||||
half3 newB = cross(n, t);
|
||||
b = newB * sign (dot (newB, b));
|
||||
#endif
|
||||
|
||||
return half3x3(t, b, n);
|
||||
}
|
||||
#else
|
||||
half3x3 ExtractTangentToWorldPerPixel(half4 tan2world[3])
|
||||
{
|
||||
return half3x3(0,0,0,0,0,0,0,0,0);
|
||||
}
|
||||
#endif
|
||||
|
||||
half3 PerPixelWorldNormal(float4 i_tex, half4 tangentToWorld[3])
|
||||
{
|
||||
#ifdef _NORMALMAP
|
||||
half3 tangent = tangentToWorld[0].xyz;
|
||||
half3 binormal = tangentToWorld[1].xyz;
|
||||
half3 normal = tangentToWorld[2].xyz;
|
||||
|
||||
#if UNITY_TANGENT_ORTHONORMALIZE
|
||||
normal = NormalizePerPixelNormal(normal);
|
||||
|
||||
// ortho-normalize Tangent
|
||||
tangent = normalize (tangent - normal * dot(tangent, normal));
|
||||
|
||||
// recalculate Binormal
|
||||
half3 newB = cross(normal, tangent);
|
||||
binormal = newB * sign (dot (newB, binormal));
|
||||
#endif
|
||||
|
||||
half3 normalTangent = NormalInTangentSpace(i_tex);
|
||||
half3 normalWorld = NormalizePerPixelNormal(tangent * normalTangent.x + binormal * normalTangent.y + normal * normalTangent.z); // @TODO: see if we can squeeze this normalize on SM2.0 as well
|
||||
#else
|
||||
half3 normalWorld = normalize(tangentToWorld[2].xyz);
|
||||
#endif
|
||||
return normalWorld;
|
||||
}
|
||||
|
||||
#ifdef _PARALLAXMAP
|
||||
#define IN_VIEWDIR4PARALLAX(i) NormalizePerPixelNormal(half3(i.tangentToWorldAndPackedData[0].w,i.tangentToWorldAndPackedData[1].w,i.tangentToWorldAndPackedData[2].w))
|
||||
#define IN_VIEWDIR4PARALLAX_FWDADD(i) NormalizePerPixelNormal(i.viewDirForParallax.xyz)
|
||||
#else
|
||||
#define IN_VIEWDIR4PARALLAX(i) half3(0,0,0)
|
||||
#define IN_VIEWDIR4PARALLAX_FWDADD(i) half3(0,0,0)
|
||||
#endif
|
||||
|
||||
#if UNITY_REQUIRE_FRAG_WORLDPOS
|
||||
#if UNITY_PACK_WORLDPOS_WITH_TANGENT
|
||||
#define IN_WORLDPOS(i) half3(i.tangentToWorldAndPackedData[0].w,i.tangentToWorldAndPackedData[1].w,i.tangentToWorldAndPackedData[2].w)
|
||||
#else
|
||||
#define IN_WORLDPOS(i) i.posWorld
|
||||
#endif
|
||||
#define IN_WORLDPOS_FWDADD(i) i.posWorld
|
||||
#else
|
||||
#define IN_WORLDPOS(i) half3(0,0,0)
|
||||
#define IN_WORLDPOS_FWDADD(i) half3(0,0,0)
|
||||
#endif
|
||||
|
||||
#define IN_LIGHTDIR_FWDADD(i) half3(i.tangentToWorldAndLightDir[0].w, i.tangentToWorldAndLightDir[1].w, i.tangentToWorldAndLightDir[2].w)
|
||||
|
||||
#define FRAGMENT_SETUP(x) FragmentCommonData x = \
|
||||
FragmentSetup(i.tex, i.eyeVec, IN_VIEWDIR4PARALLAX(i), i.tangentToWorldAndPackedData, IN_WORLDPOS(i));
|
||||
|
||||
#define FRAGMENT_SETUP_FWDADD(x) FragmentCommonData x = \
|
||||
FragmentSetup(i.tex, i.eyeVec, IN_VIEWDIR4PARALLAX_FWDADD(i), i.tangentToWorldAndLightDir, IN_WORLDPOS_FWDADD(i));
|
||||
|
||||
struct FragmentCommonData
|
||||
{
|
||||
half3 diffColor, specColor;
|
||||
// Note: smoothness & oneMinusReflectivity for optimization purposes, mostly for DX9 SM2.0 level.
|
||||
// Most of the math is being done on these (1-x) values, and that saves a few precious ALU slots.
|
||||
half oneMinusReflectivity, smoothness, metallic, anisotropy;
|
||||
half3 normalWorld, eyeVec, posWorld;
|
||||
half3x3 worldVectors;
|
||||
half alpha;
|
||||
|
||||
#if UNITY_STANDARD_SIMPLE
|
||||
half3 reflUVW;
|
||||
#endif
|
||||
|
||||
#if UNITY_STANDARD_SIMPLE
|
||||
half3 tangentSpaceNormal;
|
||||
#endif
|
||||
};
|
||||
|
||||
#ifndef UNITY_SETUP_BRDF_INPUT
|
||||
#define UNITY_SETUP_BRDF_INPUT SpecularSetup
|
||||
#endif
|
||||
|
||||
inline FragmentCommonData AnisotropicMetallicSetup (float4 i_tex)
|
||||
{
|
||||
half2 metallicGloss = MetallicGloss(i_tex.xy);
|
||||
half metallic = metallicGloss.x;
|
||||
half smoothness = metallicGloss.y; // this is 1 minus the square root of real roughness m.
|
||||
|
||||
half oneMinusReflectivity;
|
||||
half3 specColor;
|
||||
half3 diffColor = DiffuseAndSpecularFromMetallic (Albedo(i_tex), metallic, /*out*/ specColor, /*out*/ oneMinusReflectivity);
|
||||
|
||||
FragmentCommonData o = (FragmentCommonData)0;
|
||||
o.diffColor = diffColor;
|
||||
o.specColor = specColor;
|
||||
o.oneMinusReflectivity = oneMinusReflectivity;
|
||||
o.smoothness = smoothness;
|
||||
o.metallic = metallic;
|
||||
o.anisotropy = Anisotropy(i_tex.xy);
|
||||
|
||||
return o;
|
||||
}
|
||||
|
||||
inline FragmentCommonData FragmentSetup (float4 i_tex, half3 i_eyeVec, half3 i_viewDirForParallax, half4 tangentToWorld[3], half3 i_posWorld)
|
||||
{
|
||||
i_tex = Parallax(i_tex, i_viewDirForParallax);
|
||||
|
||||
half alpha = Alpha(i_tex.xy);
|
||||
#if defined(_ALPHATEST_ON)
|
||||
clip (alpha - _Cutoff);
|
||||
#endif
|
||||
|
||||
FragmentCommonData o = AnisotropicMetallicSetup(i_tex);
|
||||
o.normalWorld = PerPixelWorldNormal(i_tex, tangentToWorld);
|
||||
o.worldVectors = WorldVectors(i_tex, tangentToWorld);
|
||||
o.eyeVec = NormalizePerPixelNormal(i_eyeVec);
|
||||
o.posWorld = i_posWorld;
|
||||
|
||||
// NOTE: shader relies on pre-multiply alpha-blend (_SrcBlend = One, _DstBlend = OneMinusSrcAlpha)
|
||||
o.diffColor = PreMultiplyAlpha (o.diffColor, alpha, o.oneMinusReflectivity, /*out*/ o.alpha);
|
||||
return o;
|
||||
}
|
||||
|
||||
inline UnityGI FragmentGI (FragmentCommonData s, half occlusion, half4 i_ambientOrLightmapUV, half atten, UnityLight light, bool reflections)
|
||||
{
|
||||
UnityGIInput d;
|
||||
d.light = light;
|
||||
d.worldPos = s.posWorld;
|
||||
d.worldViewDir = -s.eyeVec;
|
||||
d.atten = atten;
|
||||
#if defined(LIGHTMAP_ON) || defined(DYNAMICLIGHTMAP_ON)
|
||||
d.ambient = 0;
|
||||
d.lightmapUV = i_ambientOrLightmapUV;
|
||||
#else
|
||||
d.ambient = i_ambientOrLightmapUV.rgb;
|
||||
d.lightmapUV = 0;
|
||||
#endif
|
||||
|
||||
d.probeHDR[0] = unity_SpecCube0_HDR;
|
||||
d.probeHDR[1] = unity_SpecCube1_HDR;
|
||||
#if defined(UNITY_SPECCUBE_BLENDING) || defined(UNITY_SPECCUBE_BOX_PROJECTION)
|
||||
d.boxMin[0] = unity_SpecCube0_BoxMin; // .w holds lerp value for blending
|
||||
#endif
|
||||
#ifdef UNITY_SPECCUBE_BOX_PROJECTION
|
||||
d.boxMax[0] = unity_SpecCube0_BoxMax;
|
||||
d.probePosition[0] = unity_SpecCube0_ProbePosition;
|
||||
d.boxMax[1] = unity_SpecCube1_BoxMax;
|
||||
d.boxMin[1] = unity_SpecCube1_BoxMin;
|
||||
d.probePosition[1] = unity_SpecCube1_ProbePosition;
|
||||
#endif
|
||||
|
||||
if(reflections)
|
||||
{
|
||||
Unity_GlossyEnvironmentData g = UnityGlossyEnvironmentSetup(s.smoothness, -s.eyeVec, s.normalWorld, s.specColor);
|
||||
// Replace the reflUVW if it has been compute in Vertex shader. Note: the compiler will optimize the calcul in UnityGlossyEnvironmentSetup itself
|
||||
#if UNITY_STANDARD_SIMPLE
|
||||
g.reflUVW = s.reflUVW;
|
||||
#else
|
||||
g.reflUVW = reflect(s.eyeVec, s.normalWorld);
|
||||
#endif
|
||||
return UnityAnisotropicGlobalIllumination(d, occlusion, s.normalWorld, g, s.anisotropy, s.worldVectors);
|
||||
}
|
||||
else
|
||||
{
|
||||
return UnityGlobalIllumination(d, occlusion, s.normalWorld);
|
||||
}
|
||||
}
|
||||
|
||||
inline UnityGI FragmentGI (FragmentCommonData s, half occlusion, half4 i_ambientOrLightmapUV, half atten, UnityLight light)
|
||||
{
|
||||
return FragmentGI(s, occlusion, i_ambientOrLightmapUV, atten, light, true);
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------------------
|
||||
half4 OutputForward (half4 output, half alphaFromSurface)
|
||||
{
|
||||
#if defined(_ALPHABLEND_ON) || defined(_ALPHAPREMULTIPLY_ON)
|
||||
output.a = alphaFromSurface;
|
||||
#else
|
||||
UNITY_OPAQUE_ALPHA(output.a);
|
||||
#endif
|
||||
return output;
|
||||
}
|
||||
|
||||
inline half4 VertexGIForward(VertexInput v, float3 posWorld, half3 normalWorld)
|
||||
{
|
||||
half4 ambientOrLightmapUV = 0;
|
||||
// Static lightmaps
|
||||
#ifdef LIGHTMAP_ON
|
||||
ambientOrLightmapUV.xy = v.uv1.xy * unity_LightmapST.xy + unity_LightmapST.zw;
|
||||
ambientOrLightmapUV.zw = 0;
|
||||
// Sample light probe for Dynamic objects only (no static or dynamic lightmaps)
|
||||
#elif UNITY_SHOULD_SAMPLE_SH
|
||||
#ifdef VERTEXLIGHT_ON
|
||||
// Approximated illumination from non-important point lights
|
||||
ambientOrLightmapUV.rgb = Shade4PointLights (
|
||||
unity_4LightPosX0, unity_4LightPosY0, unity_4LightPosZ0,
|
||||
unity_LightColor[0].rgb, unity_LightColor[1].rgb, unity_LightColor[2].rgb, unity_LightColor[3].rgb,
|
||||
unity_4LightAtten0, posWorld, normalWorld);
|
||||
#endif
|
||||
|
||||
ambientOrLightmapUV.rgb = ShadeSHPerVertex (normalWorld, ambientOrLightmapUV.rgb);
|
||||
#endif
|
||||
|
||||
#ifdef DYNAMICLIGHTMAP_ON
|
||||
ambientOrLightmapUV.zw = v.uv2.xy * unity_DynamicLightmapST.xy + unity_DynamicLightmapST.zw;
|
||||
#endif
|
||||
|
||||
return ambientOrLightmapUV;
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------
|
||||
// Base forward pass (directional light, emission, lightmaps, ...)
|
||||
|
||||
struct VertexOutputForwardBase
|
||||
{
|
||||
float4 pos : SV_POSITION;
|
||||
float4 tex : TEXCOORD0;
|
||||
half3 eyeVec : TEXCOORD1;
|
||||
half4 tangentToWorldAndPackedData[3] : TEXCOORD2; // [3x3:tangentToWorld | 1x3:viewDirForParallax]
|
||||
half4 ambientOrLightmapUV : TEXCOORD5; // SH or Lightmap UV
|
||||
UNITY_SHADOW_COORDS(6)
|
||||
UNITY_FOG_COORDS(7)
|
||||
float3 posWorld : TEXCOORD8; //Removed #if UNITY_SPECCUBE_BOX_PROJECTION, need world pos for curvature calculation
|
||||
|
||||
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||
UNITY_VERTEX_OUTPUT_STEREO
|
||||
};
|
||||
|
||||
VertexOutputForwardBase vertForwardBase (VertexInput v)
|
||||
{
|
||||
UNITY_SETUP_INSTANCE_ID(v);
|
||||
VertexOutputForwardBase o;
|
||||
UNITY_INITIALIZE_OUTPUT(VertexOutputForwardBase, o);
|
||||
UNITY_TRANSFER_INSTANCE_ID(v, o);
|
||||
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
|
||||
|
||||
float4 posWorld = mul(unity_ObjectToWorld, v.vertex);
|
||||
o.posWorld = posWorld.xyz; //Removed #if UNITY_SPECCUBE_BOX_PROJECTION, need world pos for curvature calculation
|
||||
o.pos = UnityObjectToClipPos(v.vertex);
|
||||
o.tex = TexCoords(v);
|
||||
o.eyeVec = NormalizePerVertexNormal(posWorld.xyz - _WorldSpaceCameraPos);
|
||||
float3 normalWorld = UnityObjectToWorldNormal(v.normal);
|
||||
#ifdef _TANGENT_TO_WORLD
|
||||
float4 tangentWorld = float4(UnityObjectToWorldDir(v.tangent.xyz), v.tangent.w);
|
||||
float3x3 tangentToWorld = CreateTangentToWorldPerVertex(normalWorld, tangentWorld.xyz, tangentWorld.w);
|
||||
o.tangentToWorldAndPackedData[0].xyz = tangentToWorld[0];
|
||||
o.tangentToWorldAndPackedData[1].xyz = tangentToWorld[1];
|
||||
o.tangentToWorldAndPackedData[2].xyz = tangentToWorld[2];
|
||||
#else
|
||||
o.tangentToWorldAndPackedData[0].xyz = 0;
|
||||
o.tangentToWorldAndPackedData[1].xyz = 0;
|
||||
o.tangentToWorldAndPackedData[2].xyz = normalWorld;
|
||||
#endif
|
||||
|
||||
//We need this for shadow receving
|
||||
UNITY_TRANSFER_SHADOW(o, v.uv1);
|
||||
|
||||
o.ambientOrLightmapUV = VertexGIForward(v, posWorld, normalWorld);
|
||||
|
||||
#ifdef _PARALLAXMAP
|
||||
TANGENT_SPACE_ROTATION;
|
||||
half3 viewDirForParallax = mul (rotation, ObjSpaceViewDir(v.vertex));
|
||||
o.tangentToWorldAndPackedData[0].w = viewDirForParallax.x;
|
||||
o.tangentToWorldAndPackedData[1].w = viewDirForParallax.y;
|
||||
o.tangentToWorldAndPackedData[2].w = viewDirForParallax.z;
|
||||
#endif
|
||||
|
||||
#if UNITY_OPTIMIZE_TEXCUBELOD
|
||||
o.reflUVW = reflect(o.eyeVec, normalWorld);
|
||||
#endif
|
||||
|
||||
UNITY_TRANSFER_FOG(o,o.pos);
|
||||
return o;
|
||||
}
|
||||
|
||||
half4 fragForwardBaseInternal (VertexOutputForwardBase i)
|
||||
{
|
||||
FRAGMENT_SETUP(s)
|
||||
|
||||
#if UNITY_OPTIMIZE_TEXCUBELOD
|
||||
s.reflUVW = i.reflUVW;
|
||||
#endif
|
||||
|
||||
UNITY_SETUP_INSTANCE_ID(i);
|
||||
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);
|
||||
|
||||
UnityLight mainLight = MainLight ();
|
||||
UNITY_LIGHT_ATTENUATION(atten, i, s.posWorld);
|
||||
|
||||
half occlusion = Occlusion(i.tex.xy);
|
||||
UnityGI gi = FragmentGI (s, occlusion, i.ambientOrLightmapUV, atten, mainLight);
|
||||
|
||||
half4 c = AnisotropicBRDF(s.diffColor, s.specColor, s.oneMinusReflectivity, s.smoothness, s.normalWorld, s.worldVectors, s.anisotropy, s.metallic, -s.eyeVec, gi.light, gi.indirect);
|
||||
c.rgb += Emission(i.tex.xy);
|
||||
|
||||
UNITY_APPLY_FOG(i.fogCoord, c.rgb);
|
||||
return OutputForward (c, s.alpha);
|
||||
}
|
||||
|
||||
half4 fragForwardBase (VertexOutputForwardBase i) : SV_Target // backward compatibility (this used to be the fragment entry function)
|
||||
{
|
||||
return fragForwardBaseInternal(i);
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------
|
||||
// Additive forward pass (one light per pass)
|
||||
|
||||
struct VertexOutputForwardAdd
|
||||
{
|
||||
float4 pos : SV_POSITION;
|
||||
float4 tex : TEXCOORD0;
|
||||
half3 eyeVec : TEXCOORD1;
|
||||
half4 tangentToWorldAndLightDir[3] : TEXCOORD2; // [3x3:tangentToWorld | 1x3:lightDir]
|
||||
//float3 posWorld : TEXCOORD5;
|
||||
LIGHTING_COORDS(5, 6)
|
||||
//UNITY_SHADOW_COORDS(6)
|
||||
UNITY_FOG_COORDS(7)
|
||||
|
||||
// next ones would not fit into SM2.0 limits, but they are always for SM3.0+
|
||||
#if defined(_PARALLAXMAP)
|
||||
half3 viewDirForParallax : TEXCOORD8;
|
||||
#endif
|
||||
float3 posWorld : TEXCOORD9;
|
||||
UNITY_VERTEX_OUTPUT_STEREO
|
||||
};
|
||||
|
||||
VertexOutputForwardAdd vertForwardAdd (VertexInput v)
|
||||
{
|
||||
UNITY_SETUP_INSTANCE_ID(v);
|
||||
VertexOutputForwardAdd o;
|
||||
UNITY_INITIALIZE_OUTPUT(VertexOutputForwardAdd, o);
|
||||
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
|
||||
|
||||
float4 posWorld = mul(unity_ObjectToWorld, v.vertex);
|
||||
o.posWorld = posWorld.xyz;
|
||||
o.pos = UnityObjectToClipPos(v.vertex);
|
||||
o.tex = TexCoords(v);
|
||||
o.eyeVec = NormalizePerVertexNormal(posWorld.xyz - _WorldSpaceCameraPos);
|
||||
float3 normalWorld = UnityObjectToWorldNormal(v.normal);
|
||||
#ifdef _TANGENT_TO_WORLD
|
||||
float4 tangentWorld = float4(UnityObjectToWorldDir(v.tangent.xyz), v.tangent.w);
|
||||
|
||||
float3x3 tangentToWorld = CreateTangentToWorldPerVertex(normalWorld, tangentWorld.xyz, tangentWorld.w);
|
||||
o.tangentToWorldAndLightDir[0].xyz = tangentToWorld[0];
|
||||
o.tangentToWorldAndLightDir[1].xyz = tangentToWorld[1];
|
||||
o.tangentToWorldAndLightDir[2].xyz = tangentToWorld[2];
|
||||
#else
|
||||
o.tangentToWorldAndLightDir[0].xyz = 0;
|
||||
o.tangentToWorldAndLightDir[1].xyz = 0;
|
||||
o.tangentToWorldAndLightDir[2].xyz = normalWorld;
|
||||
#endif
|
||||
//We need this for shadow receiving
|
||||
UNITY_TRANSFER_SHADOW(o, v.uv1);
|
||||
|
||||
float3 lightDir = _WorldSpaceLightPos0.xyz - posWorld.xyz * _WorldSpaceLightPos0.w;
|
||||
#ifndef USING_DIRECTIONAL_LIGHT
|
||||
lightDir = NormalizePerVertexNormal(lightDir);
|
||||
#endif
|
||||
o.tangentToWorldAndLightDir[0].w = lightDir.x;
|
||||
o.tangentToWorldAndLightDir[1].w = lightDir.y;
|
||||
o.tangentToWorldAndLightDir[2].w = lightDir.z;
|
||||
|
||||
#ifdef _PARALLAXMAP
|
||||
TANGENT_SPACE_ROTATION;
|
||||
o.viewDirForParallax = mul (rotation, ObjSpaceViewDir(v.vertex));
|
||||
#endif
|
||||
|
||||
UNITY_TRANSFER_FOG(o,o.pos);
|
||||
return o;
|
||||
}
|
||||
|
||||
half4 fragForwardAddInternal (VertexOutputForwardAdd i)
|
||||
{
|
||||
FRAGMENT_SETUP_FWDADD(s)
|
||||
|
||||
UNITY_LIGHT_ATTENUATION(atten, i, s.posWorld)
|
||||
UnityLight light = AdditiveLight (IN_LIGHTDIR_FWDADD(i), atten);
|
||||
UnityIndirect noIndirect = ZeroIndirect ();
|
||||
|
||||
half4 c = AnisotropicBRDF(s.diffColor, s.specColor, s.oneMinusReflectivity, s.smoothness, s.normalWorld, s.worldVectors, s.anisotropy, s.metallic, -s.eyeVec, light, noIndirect);
|
||||
|
||||
UNITY_APPLY_FOG_COLOR(i.fogCoord, c.rgb, half4(0,0,0,0)); // fog towards black in additive pass
|
||||
return OutputForward (c, s.alpha);
|
||||
}
|
||||
|
||||
half4 fragForwardAdd (VertexOutputForwardAdd i) : SV_Target // backward compatibility (this used to be the fragment entry function)
|
||||
{
|
||||
return fragForwardAddInternal(i);
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------
|
||||
// Deferred pass
|
||||
|
||||
struct VertexOutputDeferred
|
||||
{
|
||||
float4 pos : SV_POSITION;
|
||||
float4 tex : TEXCOORD0;
|
||||
half3 eyeVec : TEXCOORD1;
|
||||
half4 tangentToWorldAndPackedData[3]: TEXCOORD2; // [3x3:tangentToWorld | 1x3:viewDirForParallax or worldPos]
|
||||
half4 ambientOrLightmapUV : TEXCOORD5; // SH or Lightmap UVs
|
||||
|
||||
#if UNITY_REQUIRE_FRAG_WORLDPOS && !UNITY_PACK_WORLDPOS_WITH_TANGENT
|
||||
float3 posWorld : TEXCOORD6;
|
||||
#endif
|
||||
|
||||
UNITY_VERTEX_OUTPUT_STEREO
|
||||
};
|
||||
|
||||
|
||||
VertexOutputDeferred vertDeferred (VertexInput v)
|
||||
{
|
||||
UNITY_SETUP_INSTANCE_ID(v);
|
||||
VertexOutputDeferred o;
|
||||
UNITY_INITIALIZE_OUTPUT(VertexOutputDeferred, o);
|
||||
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
|
||||
|
||||
float4 posWorld = mul(unity_ObjectToWorld, v.vertex);
|
||||
#if UNITY_REQUIRE_FRAG_WORLDPOS
|
||||
#if UNITY_PACK_WORLDPOS_WITH_TANGENT
|
||||
o.tangentToWorldAndPackedData[0].w = posWorld.x;
|
||||
o.tangentToWorldAndPackedData[1].w = posWorld.y;
|
||||
o.tangentToWorldAndPackedData[2].w = posWorld.z;
|
||||
#else
|
||||
o.posWorld = posWorld.xyz;
|
||||
#endif
|
||||
#endif
|
||||
o.pos = UnityObjectToClipPos(v.vertex);
|
||||
|
||||
o.tex = TexCoords(v);
|
||||
o.eyeVec = NormalizePerVertexNormal(posWorld.xyz - _WorldSpaceCameraPos);
|
||||
float3 normalWorld = UnityObjectToWorldNormal(v.normal);
|
||||
#ifdef _TANGENT_TO_WORLD
|
||||
float4 tangentWorld = float4(UnityObjectToWorldDir(v.tangent.xyz), v.tangent.w);
|
||||
|
||||
float3x3 tangentToWorld = CreateTangentToWorldPerVertex(normalWorld, tangentWorld.xyz, tangentWorld.w);
|
||||
o.tangentToWorldAndPackedData[0].xyz = tangentToWorld[0];
|
||||
o.tangentToWorldAndPackedData[1].xyz = tangentToWorld[1];
|
||||
o.tangentToWorldAndPackedData[2].xyz = tangentToWorld[2];
|
||||
#else
|
||||
o.tangentToWorldAndPackedData[0].xyz = 0;
|
||||
o.tangentToWorldAndPackedData[1].xyz = 0;
|
||||
o.tangentToWorldAndPackedData[2].xyz = normalWorld;
|
||||
#endif
|
||||
|
||||
o.ambientOrLightmapUV = 0;
|
||||
#ifdef LIGHTMAP_ON
|
||||
o.ambientOrLightmapUV.xy = v.uv1.xy * unity_LightmapST.xy + unity_LightmapST.zw;
|
||||
#elif UNITY_SHOULD_SAMPLE_SH
|
||||
o.ambientOrLightmapUV.rgb = ShadeSHPerVertex (normalWorld, o.ambientOrLightmapUV.rgb);
|
||||
#endif
|
||||
#ifdef DYNAMICLIGHTMAP_ON
|
||||
o.ambientOrLightmapUV.zw = v.uv2.xy * unity_DynamicLightmapST.xy + unity_DynamicLightmapST.zw;
|
||||
#endif
|
||||
|
||||
#ifdef _PARALLAXMAP
|
||||
TANGENT_SPACE_ROTATION;
|
||||
half3 viewDirForParallax = mul (rotation, ObjSpaceViewDir(v.vertex));
|
||||
o.tangentToWorldAndPackedData[0].w = viewDirForParallax.x;
|
||||
o.tangentToWorldAndPackedData[1].w = viewDirForParallax.y;
|
||||
o.tangentToWorldAndPackedData[2].w = viewDirForParallax.z;
|
||||
#endif
|
||||
|
||||
return o;
|
||||
}
|
||||
|
||||
void fragDeferred (
|
||||
VertexOutputDeferred i,
|
||||
out half4 outGBuffer0 : SV_Target0,
|
||||
out half4 outGBuffer1 : SV_Target1,
|
||||
out half4 outGBuffer2 : SV_Target2,
|
||||
out half4 outEmission : SV_Target3 // RT3: emission (rgb), --unused-- (a)
|
||||
#if defined(SHADOWS_SHADOWMASK) && (UNITY_ALLOWED_MRT_COUNT > 4)
|
||||
,out half4 outShadowMask : SV_Target4 // RT4: shadowmask (rgba)
|
||||
#endif
|
||||
)
|
||||
{
|
||||
#if (SHADER_TARGET < 30)
|
||||
outGBuffer0 = 1;
|
||||
outGBuffer1 = 1;
|
||||
outGBuffer2 = 0;
|
||||
outEmission = 0;
|
||||
#if defined(SHADOWS_SHADOWMASK) && (UNITY_ALLOWED_MRT_COUNT > 4)
|
||||
outShadowMask = 1;
|
||||
#endif
|
||||
return;
|
||||
#endif
|
||||
|
||||
FRAGMENT_SETUP(s)
|
||||
|
||||
// no analytic lights in this pass
|
||||
UnityLight dummyLight = DummyLight ();
|
||||
half atten = 1;
|
||||
|
||||
// only GI
|
||||
half occlusion = Occlusion(i.tex.xy);
|
||||
#if UNITY_ENABLE_REFLECTION_BUFFERS
|
||||
bool sampleReflectionsInDeferred = false;
|
||||
#else
|
||||
bool sampleReflectionsInDeferred = true;
|
||||
#endif
|
||||
|
||||
UnityGI gi = FragmentGI (s, occlusion, i.ambientOrLightmapUV, atten, dummyLight, sampleReflectionsInDeferred);
|
||||
|
||||
half3 emissiveColor = UNITY_BRDF_PBS (s.diffColor, s.specColor, s.oneMinusReflectivity, s.smoothness, s.normalWorld, -s.eyeVec, gi.light, gi.indirect).rgb;
|
||||
|
||||
#ifdef _EMISSION
|
||||
emissiveColor += Emission (i.tex.xy);
|
||||
#endif
|
||||
|
||||
#ifndef UNITY_HDR_ON
|
||||
emissiveColor.rgb = exp2(-emissiveColor.rgb);
|
||||
#endif
|
||||
|
||||
UnityStandardData data;
|
||||
data.diffuseColor = s.diffColor;
|
||||
data.occlusion = occlusion;
|
||||
data.specularColor = s.specColor;
|
||||
data.smoothness = s.smoothness;
|
||||
data.normalWorld = s.normalWorld;
|
||||
|
||||
UnityStandardDataToGbuffer(data, outGBuffer0, outGBuffer1, outGBuffer2);
|
||||
|
||||
// Emissive lighting buffer
|
||||
outEmission = half4(emissiveColor, 1);
|
||||
|
||||
// Baked direct lighting occlusion if any
|
||||
#if defined(SHADOWS_SHADOWMASK) && (UNITY_ALLOWED_MRT_COUNT > 4)
|
||||
outShadowMask = UnityGetRawBakedOcclusions(i.ambientOrLightmapUV.xy, IN_WORLDPOS(i));
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Old FragmentGI signature. Kept only for backward compatibility and will be removed soon
|
||||
//
|
||||
|
||||
inline UnityGI FragmentGI(
|
||||
float3 posWorld,
|
||||
half occlusion, half4 i_ambientOrLightmapUV, half atten, half smoothness, half3 normalWorld, half3 eyeVec,
|
||||
UnityLight light,
|
||||
bool reflections)
|
||||
{
|
||||
// we init only fields actually used
|
||||
FragmentCommonData s = (FragmentCommonData)0;
|
||||
s.smoothness = smoothness;
|
||||
s.normalWorld = normalWorld;
|
||||
s.eyeVec = eyeVec;
|
||||
s.posWorld = posWorld;
|
||||
return FragmentGI(s, occlusion, i_ambientOrLightmapUV, atten, light, reflections);
|
||||
}
|
||||
inline UnityGI FragmentGI (
|
||||
float3 posWorld,
|
||||
half occlusion, half4 i_ambientOrLightmapUV, half atten, half smoothness, half3 normalWorld, half3 eyeVec,
|
||||
UnityLight light)
|
||||
{
|
||||
return FragmentGI (posWorld, occlusion, i_ambientOrLightmapUV, atten, smoothness, normalWorld, eyeVec, light, true);
|
||||
}
|
||||
|
||||
#endif // UNITY_STANDARD_ANISOTROPIC_CORE_INCLUDED
|
||||
@@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1ebd6ffe27d4a4d42aa2e158e878d1f9
|
||||
timeCreated: 1491659087
|
||||
licenseType: Store
|
||||
ShaderImporter:
|
||||
defaultTextures: []
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 35611
|
||||
packageName: UMA 2
|
||||
packageVersion: 2.13
|
||||
assetPath: Assets/UMA/Content/Hair/Shader/UnityHairShader-master/Version6/CGIncludes/UnityAnisotropicCore.cginc
|
||||
uploadId: 679826
|
||||
@@ -0,0 +1,26 @@
|
||||
// Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt)
|
||||
|
||||
//#ifndef UNITY_ANISOTROPIC_CORE_FORWARD_INCLUDED
|
||||
//#define UNITY_ANISOTROPIC_CORE_FORWARD_INCLUDED
|
||||
|
||||
#if defined(UNITY_NO_FULL_STANDARD_SHADER)
|
||||
#define UNITY_STANDARD_SIMPLE 1
|
||||
#endif
|
||||
|
||||
#include "UnityStandardConfig.cginc"
|
||||
|
||||
#if UNITY_STANDARD_SIMPLE
|
||||
#include "UnityAnisotropicCoreForwardSimple.cginc"
|
||||
VertexOutputBaseSimple vertBase (VertexInput v) { return vertForwardBaseSimple(v); }
|
||||
VertexOutputForwardAddSimple vertAdd (VertexInput v) { return vertForwardAddSimple(v); }
|
||||
half4 fragBase (VertexOutputBaseSimple i) : SV_Target { return fragForwardBaseSimpleInternal(i); }
|
||||
half4 fragAdd (VertexOutputForwardAddSimple i) : SV_Target { return fragForwardAddSimpleInternal(i); }
|
||||
#else
|
||||
#include "UnityAnisotropicCore.cginc"
|
||||
VertexOutputForwardBase vertBase (VertexInput v) { return vertForwardBase(v); }
|
||||
VertexOutputForwardAdd vertAdd (VertexInput v) { return vertForwardAdd(v); }
|
||||
half4 fragBase (VertexOutputForwardBase i) : SV_Target { return fragForwardBaseInternal(i); }
|
||||
half4 fragAdd (VertexOutputForwardAdd i) : SV_Target { return fragForwardAddInternal(i); }
|
||||
#endif
|
||||
|
||||
//#endif UNITY_STANDARD_ANISOTROPIC_CORE_FORWARD_INCLUDED
|
||||
@@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a2a85c2eb385f0442a6276470ab73685
|
||||
timeCreated: 1491659087
|
||||
licenseType: Store
|
||||
ShaderImporter:
|
||||
defaultTextures: []
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 35611
|
||||
packageName: UMA 2
|
||||
packageVersion: 2.13
|
||||
assetPath: Assets/UMA/Content/Hair/Shader/UnityHairShader-master/Version6/CGIncludes/UnityAnisotropicCoreForward.cginc
|
||||
uploadId: 679826
|
||||
@@ -0,0 +1,364 @@
|
||||
// Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt)
|
||||
|
||||
#ifndef UNITY_ANISOTROPIC_CORE_FORWARD_SIMPLE_INCLUDED
|
||||
#define UNITY_ANISOTROPIC_CORE_FORWARD_SIMPLE_INCLUDED
|
||||
|
||||
#include "UnityAnisotropicCore.cginc"
|
||||
|
||||
// Does not support: _PARALLAXMAP, DIRLIGHTMAP_COMBINED
|
||||
#define GLOSSMAP (defined(_SPECGLOSSMAP) || defined(_METALLICGLOSSMAP))
|
||||
|
||||
#ifndef SPECULAR_HIGHLIGHTS
|
||||
#define SPECULAR_HIGHLIGHTS (!defined(_SPECULAR_HIGHLIGHTS_OFF))
|
||||
#endif
|
||||
|
||||
struct VertexOutputBaseSimple
|
||||
{
|
||||
float4 pos : SV_POSITION;
|
||||
float4 tex : TEXCOORD0;
|
||||
half4 eyeVec : TEXCOORD1; // w: grazingTerm
|
||||
|
||||
half4 ambientOrLightmapUV : TEXCOORD2; // SH or Lightmap UV
|
||||
SHADOW_COORDS(3)
|
||||
UNITY_FOG_COORDS_PACKED(4, half4) // x: fogCoord, yzw: reflectVec
|
||||
|
||||
half4 normalWorld : TEXCOORD5; // w: fresnelTerm
|
||||
|
||||
#ifdef _NORMALMAP
|
||||
half3 tangentSpaceLightDir : TEXCOORD6;
|
||||
#if SPECULAR_HIGHLIGHTS
|
||||
half3 tangentSpaceEyeVec : TEXCOORD7;
|
||||
#endif
|
||||
#endif
|
||||
#if UNITY_REQUIRE_FRAG_WORLDPOS
|
||||
float3 posWorld : TEXCOORD8;
|
||||
#endif
|
||||
|
||||
UNITY_VERTEX_OUTPUT_STEREO
|
||||
};
|
||||
|
||||
// UNIFORM_REFLECTIVITY(): workaround to get (uniform) reflecivity based on UNITY_SETUP_BRDF_INPUT
|
||||
half MetallicSetup_Reflectivity()
|
||||
{
|
||||
return 1.0h - OneMinusReflectivityFromMetallic(_Metallic);
|
||||
}
|
||||
|
||||
half SpecularSetup_Reflectivity()
|
||||
{
|
||||
return SpecularStrength(_SpecColor.rgb);
|
||||
}
|
||||
|
||||
#define JOIN2(a, b) a##b
|
||||
#define JOIN(a, b) JOIN2(a,b)
|
||||
#define UNIFORM_REFLECTIVITY JOIN(UNITY_SETUP_BRDF_INPUT, _Reflectivity)
|
||||
|
||||
|
||||
#ifdef _NORMALMAP
|
||||
|
||||
half3 TransformToTangentSpace(half3 tangent, half3 binormal, half3 normal, half3 v)
|
||||
{
|
||||
// Mali400 shader compiler prefers explicit dot product over using a half3x3 matrix
|
||||
return half3(dot(tangent, v), dot(binormal, v), dot(normal, v));
|
||||
}
|
||||
|
||||
void TangentSpaceLightingInput(half3 normalWorld, half4 vTangent, half3 lightDirWorld, half3 eyeVecWorld, out half3 tangentSpaceLightDir, out half3 tangentSpaceEyeVec)
|
||||
{
|
||||
half3 tangentWorld = UnityObjectToWorldDir(vTangent.xyz);
|
||||
half sign = half(vTangent.w) * half(unity_WorldTransformParams.w);
|
||||
half3 binormalWorld = cross(normalWorld, tangentWorld) * sign;
|
||||
tangentSpaceLightDir = TransformToTangentSpace(tangentWorld, binormalWorld, normalWorld, lightDirWorld);
|
||||
#if SPECULAR_HIGHLIGHTS
|
||||
tangentSpaceEyeVec = normalize(TransformToTangentSpace(tangentWorld, binormalWorld, normalWorld, eyeVecWorld));
|
||||
#else
|
||||
tangentSpaceEyeVec = 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif // _NORMALMAP
|
||||
|
||||
VertexOutputBaseSimple vertForwardBaseSimple (VertexInput v)
|
||||
{
|
||||
UNITY_SETUP_INSTANCE_ID(v);
|
||||
VertexOutputBaseSimple o;
|
||||
UNITY_INITIALIZE_OUTPUT(VertexOutputBaseSimple, o);
|
||||
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
|
||||
|
||||
float4 posWorld = mul(unity_ObjectToWorld, v.vertex);
|
||||
o.pos = UnityObjectToClipPos(v.vertex);
|
||||
o.tex = TexCoords(v);
|
||||
|
||||
half3 eyeVec = normalize(posWorld.xyz - _WorldSpaceCameraPos);
|
||||
half3 normalWorld = UnityObjectToWorldNormal(v.normal);
|
||||
|
||||
o.normalWorld.xyz = normalWorld;
|
||||
o.eyeVec.xyz = eyeVec;
|
||||
|
||||
#ifdef _NORMALMAP
|
||||
half3 tangentSpaceEyeVec;
|
||||
TangentSpaceLightingInput(normalWorld, v.tangent, _WorldSpaceLightPos0.xyz, eyeVec, o.tangentSpaceLightDir, tangentSpaceEyeVec);
|
||||
#if SPECULAR_HIGHLIGHTS
|
||||
o.tangentSpaceEyeVec = tangentSpaceEyeVec;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
//We need this for shadow receiving
|
||||
TRANSFER_SHADOW(o);
|
||||
|
||||
o.ambientOrLightmapUV = VertexGIForward(v, posWorld, normalWorld);
|
||||
|
||||
o.fogCoord.yzw = reflect(eyeVec, normalWorld);
|
||||
|
||||
o.normalWorld.w = Pow4(1 - saturate(dot(normalWorld, -eyeVec))); // fresnel term
|
||||
#if !GLOSSMAP
|
||||
o.eyeVec.w = saturate(_Glossiness + UNIFORM_REFLECTIVITY()); // grazing term
|
||||
#endif
|
||||
|
||||
UNITY_TRANSFER_FOG(o, o.pos);
|
||||
return o;
|
||||
}
|
||||
|
||||
|
||||
FragmentCommonData FragmentSetupSimple(VertexOutputBaseSimple i)
|
||||
{
|
||||
half alpha = Alpha(i.tex.xy);
|
||||
#if defined(_ALPHATEST_ON)
|
||||
clip (alpha - _Cutoff);
|
||||
#endif
|
||||
|
||||
FragmentCommonData s = UNITY_SETUP_BRDF_INPUT (i.tex);
|
||||
|
||||
// NOTE: shader relies on pre-multiply alpha-blend (_SrcBlend = One, _DstBlend = OneMinusSrcAlpha)
|
||||
s.diffColor = PreMultiplyAlpha (s.diffColor, alpha, s.oneMinusReflectivity, /*out*/ s.alpha);
|
||||
|
||||
s.normalWorld = i.normalWorld.xyz;
|
||||
s.eyeVec = i.eyeVec.xyz;
|
||||
s.posWorld = IN_WORLDPOS(i);
|
||||
s.reflUVW = i.fogCoord.yzw;
|
||||
|
||||
#ifdef _NORMALMAP
|
||||
s.tangentSpaceNormal = NormalInTangentSpace(i.tex);
|
||||
#else
|
||||
s.tangentSpaceNormal = 0;
|
||||
#endif
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
UnityLight MainLightSimple(VertexOutputBaseSimple i, FragmentCommonData s)
|
||||
{
|
||||
UnityLight mainLight = MainLight();
|
||||
return mainLight;
|
||||
}
|
||||
|
||||
half PerVertexGrazingTerm(VertexOutputBaseSimple i, FragmentCommonData s)
|
||||
{
|
||||
#if GLOSSMAP
|
||||
return saturate(s.smoothness + (1-s.oneMinusReflectivity));
|
||||
#else
|
||||
return i.eyeVec.w;
|
||||
#endif
|
||||
}
|
||||
|
||||
half PerVertexFresnelTerm(VertexOutputBaseSimple i)
|
||||
{
|
||||
return i.normalWorld.w;
|
||||
}
|
||||
|
||||
#if !SPECULAR_HIGHLIGHTS
|
||||
# define REFLECTVEC_FOR_SPECULAR(i, s) half3(0, 0, 0)
|
||||
#elif defined(_NORMALMAP)
|
||||
# define REFLECTVEC_FOR_SPECULAR(i, s) reflect(i.tangentSpaceEyeVec, s.tangentSpaceNormal)
|
||||
#else
|
||||
# define REFLECTVEC_FOR_SPECULAR(i, s) s.reflUVW
|
||||
#endif
|
||||
|
||||
half3 LightDirForSpecular(VertexOutputBaseSimple i, UnityLight mainLight)
|
||||
{
|
||||
#if SPECULAR_HIGHLIGHTS && defined(_NORMALMAP)
|
||||
return i.tangentSpaceLightDir;
|
||||
#else
|
||||
return mainLight.dir;
|
||||
#endif
|
||||
}
|
||||
|
||||
half3 BRDF3DirectSimple(half3 diffColor, half3 specColor, half smoothness, half rl)
|
||||
{
|
||||
#if SPECULAR_HIGHLIGHTS
|
||||
return BRDF3_Direct(diffColor, specColor, Pow4(rl), smoothness);
|
||||
#else
|
||||
return diffColor;
|
||||
#endif
|
||||
}
|
||||
|
||||
half4 fragForwardBaseSimpleInternal (VertexOutputBaseSimple i)
|
||||
{
|
||||
FragmentCommonData s = FragmentSetupSimple(i);
|
||||
|
||||
UnityLight mainLight = MainLightSimple(i, s);
|
||||
|
||||
#if !defined(LIGHTMAP_ON) && defined(_NORMALMAP)
|
||||
half ndotl = saturate(dot(s.tangentSpaceNormal, i.tangentSpaceLightDir));
|
||||
#else
|
||||
half ndotl = saturate(dot(s.normalWorld, mainLight.dir));
|
||||
#endif
|
||||
|
||||
//we can't have worldpos here (not enough interpolator on SM 2.0) so no shadow fade in that case.
|
||||
half shadowMaskAttenuation = UnitySampleBakedOcclusion(i.ambientOrLightmapUV, 0);
|
||||
half realtimeShadowAttenuation = SHADOW_ATTENUATION(i);
|
||||
half atten = UnityMixRealtimeAndBakedShadows(realtimeShadowAttenuation, shadowMaskAttenuation, 0);
|
||||
|
||||
half occlusion = Occlusion(i.tex.xy);
|
||||
half rl = dot(REFLECTVEC_FOR_SPECULAR(i, s), LightDirForSpecular(i, mainLight));
|
||||
|
||||
UnityGI gi = FragmentGI (s, occlusion, i.ambientOrLightmapUV, atten, mainLight);
|
||||
half3 attenuatedLightColor = gi.light.color * ndotl;
|
||||
|
||||
half3 c = BRDF3_Indirect(s.diffColor, s.specColor, gi.indirect, PerVertexGrazingTerm(i, s), PerVertexFresnelTerm(i));
|
||||
c += BRDF3DirectSimple(s.diffColor, s.specColor, s.smoothness, rl) * attenuatedLightColor;
|
||||
c += Emission(i.tex.xy);
|
||||
|
||||
UNITY_APPLY_FOG(i.fogCoord, c);
|
||||
|
||||
return OutputForward (half4(c, 1), s.alpha);
|
||||
}
|
||||
|
||||
half4 fragForwardBaseSimple (VertexOutputBaseSimple i) : SV_Target // backward compatibility (this used to be the fragment entry function)
|
||||
{
|
||||
return fragForwardBaseSimpleInternal(i);
|
||||
}
|
||||
|
||||
struct VertexOutputForwardAddSimple
|
||||
{
|
||||
float4 pos : SV_POSITION;
|
||||
float4 tex : TEXCOORD0;
|
||||
float3 posWorld : TEXCOORD1;
|
||||
|
||||
UNITY_SHADOW_COORDS(2)
|
||||
|
||||
#if !defined(_NORMALMAP) && SPECULAR_HIGHLIGHTS
|
||||
UNITY_FOG_COORDS_PACKED(3, half4) // x: fogCoord, yzw: reflectVec
|
||||
#else
|
||||
UNITY_FOG_COORDS_PACKED(3, half1)
|
||||
#endif
|
||||
|
||||
half3 lightDir : TEXCOORD4;
|
||||
|
||||
#if defined(_NORMALMAP)
|
||||
#if SPECULAR_HIGHLIGHTS
|
||||
half3 tangentSpaceEyeVec : TEXCOORD5;
|
||||
#endif
|
||||
#else
|
||||
half3 normalWorld : TEXCOORD5;
|
||||
#endif
|
||||
|
||||
UNITY_VERTEX_OUTPUT_STEREO
|
||||
};
|
||||
|
||||
VertexOutputForwardAddSimple vertForwardAddSimple (VertexInput v)
|
||||
{
|
||||
VertexOutputForwardAddSimple o;
|
||||
UNITY_SETUP_INSTANCE_ID(v);
|
||||
UNITY_INITIALIZE_OUTPUT(VertexOutputForwardAddSimple, o);
|
||||
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
|
||||
|
||||
float4 posWorld = mul(unity_ObjectToWorld, v.vertex);
|
||||
o.pos = UnityObjectToClipPos(v.vertex);
|
||||
o.tex = TexCoords(v);
|
||||
o.posWorld = posWorld.xyz;
|
||||
|
||||
//We need this for shadow receiving
|
||||
UNITY_TRANSFER_SHADOW(o, v.uv1);
|
||||
|
||||
half3 lightDir = _WorldSpaceLightPos0.xyz - posWorld.xyz * _WorldSpaceLightPos0.w;
|
||||
#ifndef USING_DIRECTIONAL_LIGHT
|
||||
lightDir = NormalizePerVertexNormal(lightDir);
|
||||
#endif
|
||||
|
||||
#if SPECULAR_HIGHLIGHTS
|
||||
half3 eyeVec = normalize(posWorld.xyz - _WorldSpaceCameraPos);
|
||||
#endif
|
||||
|
||||
half3 normalWorld = UnityObjectToWorldNormal(v.normal);
|
||||
|
||||
#ifdef _NORMALMAP
|
||||
#if SPECULAR_HIGHLIGHTS
|
||||
TangentSpaceLightingInput(normalWorld, v.tangent, lightDir, eyeVec, o.lightDir, o.tangentSpaceEyeVec);
|
||||
#else
|
||||
half3 ignore;
|
||||
TangentSpaceLightingInput(normalWorld, v.tangent, lightDir, 0, o.lightDir, ignore);
|
||||
#endif
|
||||
#else
|
||||
o.lightDir = lightDir;
|
||||
o.normalWorld = normalWorld;
|
||||
#if SPECULAR_HIGHLIGHTS
|
||||
o.fogCoord.yzw = reflect(eyeVec, normalWorld);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
UNITY_TRANSFER_FOG(o,o.pos);
|
||||
return o;
|
||||
}
|
||||
|
||||
FragmentCommonData FragmentSetupSimpleAdd(VertexOutputForwardAddSimple i)
|
||||
{
|
||||
half alpha = Alpha(i.tex.xy);
|
||||
#if defined(_ALPHATEST_ON)
|
||||
clip (alpha - _Cutoff);
|
||||
#endif
|
||||
|
||||
FragmentCommonData s = UNITY_SETUP_BRDF_INPUT (i.tex);
|
||||
|
||||
// NOTE: shader relies on pre-multiply alpha-blend (_SrcBlend = One, _DstBlend = OneMinusSrcAlpha)
|
||||
s.diffColor = PreMultiplyAlpha (s.diffColor, alpha, s.oneMinusReflectivity, /*out*/ s.alpha);
|
||||
|
||||
s.eyeVec = 0;
|
||||
s.posWorld = i.posWorld;
|
||||
|
||||
#ifdef _NORMALMAP
|
||||
s.tangentSpaceNormal = NormalInTangentSpace(i.tex);
|
||||
s.normalWorld = 0;
|
||||
#else
|
||||
s.tangentSpaceNormal = 0;
|
||||
s.normalWorld = i.normalWorld;
|
||||
#endif
|
||||
|
||||
#if SPECULAR_HIGHLIGHTS && !defined(_NORMALMAP)
|
||||
s.reflUVW = i.fogCoord.yzw;
|
||||
#else
|
||||
s.reflUVW = 0;
|
||||
#endif
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
half3 LightSpaceNormal(VertexOutputForwardAddSimple i, FragmentCommonData s)
|
||||
{
|
||||
#ifdef _NORMALMAP
|
||||
return s.tangentSpaceNormal;
|
||||
#else
|
||||
return i.normalWorld;
|
||||
#endif
|
||||
}
|
||||
|
||||
half4 fragForwardAddSimpleInternal (VertexOutputForwardAddSimple i)
|
||||
{
|
||||
FragmentCommonData s = FragmentSetupSimpleAdd(i);
|
||||
|
||||
half3 c = BRDF3DirectSimple(s.diffColor, s.specColor, s.smoothness, dot(REFLECTVEC_FOR_SPECULAR(i, s), i.lightDir));
|
||||
|
||||
#if SPECULAR_HIGHLIGHTS // else diffColor has premultiplied light color
|
||||
c *= _LightColor0.rgb;
|
||||
#endif
|
||||
|
||||
c *= UNITY_SHADOW_ATTENUATION(i, s.posWorld) * saturate(dot(LightSpaceNormal(i, s), i.lightDir));
|
||||
|
||||
UNITY_APPLY_FOG_COLOR(i.fogCoord, c.rgb, half4(0,0,0,0)); // fog towards black in additive pass
|
||||
return OutputForward (half4(c, 1), s.alpha);
|
||||
}
|
||||
|
||||
half4 fragForwardAddSimple (VertexOutputForwardAddSimple i) : SV_Target // backward compatibility (this used to be the fragment entry function)
|
||||
{
|
||||
return fragForwardAddSimpleInternal(i);
|
||||
}
|
||||
|
||||
#endif // UNITY_STANDARD_CORE_FORWARD_SIMPLE_INCLUDED
|
||||
@@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 69a4cf203a666c846ad901831f8d4dc2
|
||||
timeCreated: 1491659086
|
||||
licenseType: Store
|
||||
ShaderImporter:
|
||||
defaultTextures: []
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 35611
|
||||
packageName: UMA 2
|
||||
packageVersion: 2.13
|
||||
assetPath: Assets/UMA/Content/Hair/Shader/UnityHairShader-master/Version6/CGIncludes/UnityAnisotropicCoreForwardSimple.cginc
|
||||
uploadId: 679826
|
||||
@@ -0,0 +1,264 @@
|
||||
// Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt)
|
||||
|
||||
#ifndef UNITY_ANISOTROPIC_INPUT_INCLUDED
|
||||
#define UNITY_ANISOTROPIC_INPUT_INCLUDED
|
||||
|
||||
#include "UnityCG.cginc"
|
||||
#include "UnityAnisotropicCommon.cginc"
|
||||
#include "UnityStandardConfig.cginc"
|
||||
#include "UnityPBSLighting.cginc"
|
||||
#include "UnityStandardUtils.cginc"
|
||||
|
||||
//---------------------------------------
|
||||
// Directional lightmaps & Parallax require tangent space too
|
||||
//#if (_NORMALMAP || DIRLIGHTMAP_COMBINED || _PARALLAXMAP)
|
||||
#define _TANGENT_TO_WORLD 1
|
||||
#define UNITY_REQUIRE_FRAG_WORLDPOS 1
|
||||
//#define UNITY_PACK_WORLDPOS_WITH_TANGENT 0
|
||||
//#endif
|
||||
|
||||
#if (_DETAIL_MULX2 || _DETAIL_MUL || _DETAIL_ADD || _DETAIL_LERP)
|
||||
#define _DETAIL 1
|
||||
#endif
|
||||
|
||||
//-------------------------------------------------------------------------------------
|
||||
// Standard material parameters
|
||||
|
||||
half4 _Color;
|
||||
half _Cutoff;
|
||||
|
||||
sampler2D _MainTex;
|
||||
float4 _MainTex_ST;
|
||||
|
||||
sampler2D _DetailAlbedoMap;
|
||||
float4 _DetailAlbedoMap_ST;
|
||||
|
||||
sampler2D _BumpMap;
|
||||
half _BumpScale;
|
||||
|
||||
sampler2D _DetailMask;
|
||||
sampler2D _DetailNormalMap;
|
||||
half _DetailNormalMapScale;
|
||||
|
||||
sampler2D _SpecGlossMap;
|
||||
sampler2D _MetallicGlossMap;
|
||||
half _Metallic;
|
||||
half _Glossiness;
|
||||
half _GlossMapScale;
|
||||
|
||||
sampler2D _AnisotropyMap;
|
||||
half _Anisotropy;
|
||||
sampler2D _TangentMap;
|
||||
|
||||
|
||||
sampler2D _OcclusionMap;
|
||||
half _OcclusionStrength;
|
||||
|
||||
sampler2D _ParallaxMap;
|
||||
half _Parallax;
|
||||
half _UVSec;
|
||||
|
||||
half4 _EmissionColor;
|
||||
sampler2D _EmissionMap;
|
||||
|
||||
//-------------------------------------------------------------------------------------
|
||||
// Input functions
|
||||
|
||||
struct VertexInput
|
||||
{
|
||||
float4 vertex : POSITION;
|
||||
half3 normal : NORMAL;
|
||||
float2 uv0 : TEXCOORD0;
|
||||
float2 uv1 : TEXCOORD1;
|
||||
#if defined(DYNAMICLIGHTMAP_ON) || defined(UNITY_PASS_META)
|
||||
float2 uv2 : TEXCOORD2;
|
||||
#endif
|
||||
#ifdef _TANGENT_TO_WORLD
|
||||
half4 tangent : TANGENT;
|
||||
#endif
|
||||
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||
};
|
||||
|
||||
float4 TexCoords(VertexInput v)
|
||||
{
|
||||
float4 texcoord;
|
||||
texcoord.xy = TRANSFORM_TEX(v.uv0, _MainTex); // Always source from uv0
|
||||
texcoord.zw = TRANSFORM_TEX(((_UVSec == 0) ? v.uv0 : v.uv1), _DetailAlbedoMap);
|
||||
return texcoord;
|
||||
}
|
||||
|
||||
half DetailMask(float2 uv)
|
||||
{
|
||||
return tex2D (_DetailMask, uv).a;
|
||||
}
|
||||
|
||||
half3 Albedo(float4 texcoords)
|
||||
{
|
||||
half3 albedo = _Color.rgb * tex2D (_MainTex, texcoords.xy).rgb;
|
||||
#if _DETAIL
|
||||
#if (SHADER_TARGET < 30)
|
||||
// SM20: instruction count limitation
|
||||
// SM20: no detail mask
|
||||
half mask = 1;
|
||||
#else
|
||||
half mask = DetailMask(texcoords.xy);
|
||||
#endif
|
||||
half3 detailAlbedo = tex2D (_DetailAlbedoMap, texcoords.zw).rgb;
|
||||
#if _DETAIL_MULX2
|
||||
albedo *= LerpWhiteTo (detailAlbedo * unity_ColorSpaceDouble.rgb, mask);
|
||||
#elif _DETAIL_MUL
|
||||
albedo *= LerpWhiteTo (detailAlbedo, mask);
|
||||
#elif _DETAIL_ADD
|
||||
albedo += detailAlbedo * mask;
|
||||
#elif _DETAIL_LERP
|
||||
albedo = lerp (albedo, detailAlbedo, mask);
|
||||
#endif
|
||||
#endif
|
||||
return albedo;
|
||||
}
|
||||
|
||||
half Alpha(float2 uv)
|
||||
{
|
||||
#if defined(_SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A)
|
||||
return _Color.a;
|
||||
#else
|
||||
return tex2D(_MainTex, uv).a * _Color.a;
|
||||
#endif
|
||||
}
|
||||
|
||||
half Occlusion(float2 uv)
|
||||
{
|
||||
#if (SHADER_TARGET < 30)
|
||||
// SM20: instruction count limitation
|
||||
// SM20: simpler occlusion
|
||||
return tex2D(_OcclusionMap, uv).g;
|
||||
#else
|
||||
half occ = tex2D(_OcclusionMap, uv).g;
|
||||
return LerpOneTo (occ, _OcclusionStrength);
|
||||
#endif
|
||||
}
|
||||
|
||||
half4 SpecularGloss(float2 uv)
|
||||
{
|
||||
half4 sg;
|
||||
#ifdef _SPECGLOSSMAP
|
||||
#if defined(_SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A)
|
||||
sg.rgb = tex2D(_SpecGlossMap, uv).rgb;
|
||||
sg.a = tex2D(_MainTex, uv).a;
|
||||
#else
|
||||
sg = tex2D(_SpecGlossMap, uv);
|
||||
#endif
|
||||
sg.a *= _GlossMapScale;
|
||||
#else
|
||||
sg.rgb = _SpecColor.rgb;
|
||||
#ifdef _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
|
||||
sg.a = tex2D(_MainTex, uv).a * _GlossMapScale;
|
||||
#else
|
||||
sg.a = _Glossiness;
|
||||
#endif
|
||||
#endif
|
||||
return sg;
|
||||
}
|
||||
|
||||
half2 MetallicGloss(float2 uv)
|
||||
{
|
||||
half2 mg;
|
||||
|
||||
#ifdef _METALLICGLOSSMAP
|
||||
#ifdef _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
|
||||
mg.r = tex2D(_MetallicGlossMap, uv).r;
|
||||
mg.g = tex2D(_MainTex, uv).a;
|
||||
#else
|
||||
mg = tex2D(_MetallicGlossMap, uv).ra;
|
||||
#endif
|
||||
mg.g *= _GlossMapScale;
|
||||
#else
|
||||
mg.r = _Metallic;
|
||||
#ifdef _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
|
||||
mg.g = tex2D(_MainTex, uv).a * _GlossMapScale;
|
||||
#else
|
||||
mg.g = _Glossiness;
|
||||
#endif
|
||||
#endif
|
||||
return mg;
|
||||
}
|
||||
|
||||
half Anisotropy(float2 uv)
|
||||
{
|
||||
return tex2D(_AnisotropyMap, uv) * _Anisotropy;
|
||||
}
|
||||
|
||||
half3x3 WorldVectors(float2 uv, half4 input[3])
|
||||
{
|
||||
float3 tangent = input[0];
|
||||
float3 bitangent = input[1];
|
||||
float3 normal = input[2];
|
||||
float3x3 worldToTangent;
|
||||
worldToTangent[0] = float3(1, 0, 0);
|
||||
worldToTangent[1] = float3(0, 1, 0);
|
||||
worldToTangent[2] = float3(0, 0, 1);
|
||||
|
||||
float3 tangentTS = tex2D(_TangentMap, uv);
|
||||
float3 tangentTWS = mul(tangentTS, worldToTangent);
|
||||
float3 fTangent;
|
||||
if (tangentTS.z < 1)
|
||||
fTangent = tangentTWS;
|
||||
else
|
||||
fTangent = tangent;
|
||||
return float3x3(fTangent, bitangent, normal);
|
||||
}
|
||||
|
||||
half3 Emission(float2 uv)
|
||||
{
|
||||
#ifndef _EMISSION
|
||||
return 0;
|
||||
#else
|
||||
return tex2D(_EmissionMap, uv).rgb * _EmissionColor.rgb;
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef _NORMALMAP
|
||||
half3 NormalInTangentSpace(float4 texcoords)
|
||||
{
|
||||
half3 normalTangent = UnpackScaleNormal(tex2D (_BumpMap, texcoords.xy), _BumpScale);
|
||||
|
||||
#if _DETAIL && defined(UNITY_ENABLE_DETAIL_NORMALMAP)
|
||||
half mask = DetailMask(texcoords.xy);
|
||||
half3 detailNormalTangent = UnpackScaleNormal(tex2D (_DetailNormalMap, texcoords.zw), _DetailNormalMapScale);
|
||||
#if _DETAIL_LERP
|
||||
normalTangent = lerp(
|
||||
normalTangent,
|
||||
detailNormalTangent,
|
||||
mask);
|
||||
#else
|
||||
normalTangent = lerp(
|
||||
normalTangent,
|
||||
BlendNormals(normalTangent, detailNormalTangent),
|
||||
mask);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
return normalTangent;
|
||||
}
|
||||
#endif
|
||||
|
||||
float4 Parallax (float4 texcoords, half3 viewDir)
|
||||
{
|
||||
// D3D9/SM30 supports up to 16 samplers, skip the parallax map in case we exceed the limit
|
||||
#define EXCEEDS_D3D9_SM3_MAX_SAMPLER_COUNT (defined(LIGHTMAP_ON) && defined(SHADOWS_SHADOWMASK) && defined(SHADOWS_SCREEN) && defined(_NORMALMAP) && \
|
||||
defined(_EMISSION) && defined(_DETAIL) && (defined(_METALLICGLOSSMAP) || defined(_SPECGLOSSMAP)))
|
||||
|
||||
#if !defined(_PARALLAXMAP) || (SHADER_TARGET < 30) || (defined(SHADER_API_D3D9) && EXCEEDS_D3D9_SM3_MAX_SAMPLER_COUNT)
|
||||
// SM20: instruction count limitation
|
||||
// SM20: no parallax
|
||||
return texcoords;
|
||||
#else
|
||||
half h = tex2D (_ParallaxMap, texcoords.xy).g;
|
||||
float2 offset = ParallaxOffset1Step (h, _Parallax, viewDir);
|
||||
return float4(texcoords.xy + offset, texcoords.zw + offset);
|
||||
#endif
|
||||
|
||||
#undef EXCEEDS_D3D9_SM3_MAX_SAMPLER_COUNT
|
||||
}
|
||||
|
||||
#endif // UNITY_ANISOTROPIC_INPUT_INCLUDED
|
||||
@@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4595336270a165b4da957d93d2adb7a7
|
||||
timeCreated: 1491659087
|
||||
licenseType: Store
|
||||
ShaderImporter:
|
||||
defaultTextures: []
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 35611
|
||||
packageName: UMA 2
|
||||
packageVersion: 2.13
|
||||
assetPath: Assets/UMA/Content/Hair/Shader/UnityHairShader-master/Version6/CGIncludes/UnityAnisotropicInput.cginc
|
||||
uploadId: 679826
|
||||
@@ -0,0 +1,165 @@
|
||||
//#ifndef UNITY_ANISOTROPIC_LIGHTING_INCLUDED
|
||||
//#define UNITY_ANISOTROPIC_LIGHTING_INCLUDED
|
||||
|
||||
#include "UnityPBSLighting.cginc"
|
||||
#include "UnityShaderVariables.cginc"
|
||||
#include "UnityStandardConfig.cginc"
|
||||
#include "UnityLightingCommon.cginc"
|
||||
#include "UnityGBuffer.cginc"
|
||||
#include "UnityGlobalIllumination.cginc"
|
||||
|
||||
//-------------------------------------------------------------------------------------
|
||||
// Lighting Helpers
|
||||
|
||||
// Glossy Environment
|
||||
half3 Unity_AnisotropicGlossyEnvironment(UNITY_ARGS_TEXCUBE(tex), half4 hdr, Unity_GlossyEnvironmentData glossIn, half anisotropy) //Reference IBL from HD Pipe (Add half3 L input and replace R)
|
||||
{
|
||||
half perceptualRoughness = glossIn.roughness /* perceptualRoughness */;
|
||||
#if 0
|
||||
float m = PerceptualRoughnessToRoughness(perceptualRoughness); // m is the real roughness parameter
|
||||
const float fEps = 1.192092896e-07F; // smallest such that 1.0+FLT_EPSILON != 1.0 (+1e-4h is NOT good here. is visibly very wrong)
|
||||
float n = (2.0 / max(fEps, m*m)) - 2.0; // remap to spec power. See eq. 21 in --> https://dl.dropboxusercontent.com/u/55891920/papers/mm_brdf.pdf
|
||||
|
||||
n /= 4; // remap from n_dot_h formulatino to n_dot_r. See section "Pre-convolved Cube Maps vs Path Tracers" --> https://s3.amazonaws.com/docs.knaldtech.com/knald/1.0.0/lys_power_drops.html
|
||||
|
||||
perceptualRoughness = pow(2 / (n + 2), 0.25); // remap back to square root of real roughness (0.25 include both the sqrt root of the conversion and sqrt for going from roughness to perceptualRoughness)
|
||||
#else
|
||||
// MM: came up with a surprisingly close approximation to what the #if 0'ed out code above does.
|
||||
perceptualRoughness = perceptualRoughness*(1.7 - 0.7*perceptualRoughness);
|
||||
#endif
|
||||
|
||||
|
||||
half mip = perceptualRoughnessToMipmapLevel(perceptualRoughness);
|
||||
half3 R = glossIn.reflUVW;// -half3(anisotropy, 0, 0);
|
||||
half4 rgbm = UNITY_SAMPLE_TEXCUBE_LOD(tex, R, mip);
|
||||
|
||||
return DecodeHDR(rgbm, hdr);
|
||||
}
|
||||
|
||||
// Indirect Specular
|
||||
inline half3 UnityGI_AnisotropicIndirectSpecular(UnityGIInput data, half occlusion, Unity_GlossyEnvironmentData glossIn, half anisotropy, half3x3 worldVectors)
|
||||
{
|
||||
half3 specular;
|
||||
|
||||
float3 tangentX = worldVectors[0];
|
||||
float3 tangentY = worldVectors[1];
|
||||
float3 N = worldVectors[2];
|
||||
float3 V = data.worldViewDir;
|
||||
float3 iblNormalWS = GetAnisotropicModifiedNormal(tangentY, N, V, anisotropy);
|
||||
float3 iblR = reflect(-V, iblNormalWS);
|
||||
|
||||
#ifdef UNITY_SPECCUBE_BOX_PROJECTION
|
||||
// we will tweak reflUVW in glossIn directly (as we pass it to Unity_GlossyEnvironment twice for probe0 and probe1), so keep original to pass into BoxProjectedCubemapDirection
|
||||
|
||||
half3 originalReflUVW = glossIn.reflUVW;
|
||||
glossIn.reflUVW = BoxProjectedCubemapDirection(iblR, data.worldPos, data.probePosition[0], data.boxMin[0], data.boxMax[0]);
|
||||
#endif
|
||||
|
||||
#ifdef _GLOSSYREFLECTIONS_OFF
|
||||
specular = unity_IndirectSpecColor.rgb;
|
||||
#else
|
||||
half3 env0 = Unity_AnisotropicGlossyEnvironment(UNITY_PASS_TEXCUBE(unity_SpecCube0), data.probeHDR[0], glossIn, anisotropy);
|
||||
#ifdef UNITY_SPECCUBE_BLENDING
|
||||
const float kBlendFactor = 0.99999;
|
||||
float blendLerp = data.boxMin[0].w;
|
||||
UNITY_BRANCH
|
||||
if (blendLerp < kBlendFactor)
|
||||
{
|
||||
#ifdef UNITY_SPECCUBE_BOX_PROJECTION
|
||||
glossIn.reflUVW = BoxProjectedCubemapDirection(iblR, data.worldPos, data.probePosition[1], data.boxMin[1], data.boxMax[1]);
|
||||
#endif
|
||||
half3 env1 = Unity_AnisotropicGlossyEnvironment(UNITY_PASS_TEXCUBE_SAMPLER(unity_SpecCube1, unity_SpecCube0), data.probeHDR[1], glossIn, anisotropy);
|
||||
specular = lerp(env1, env0, blendLerp);
|
||||
}
|
||||
else
|
||||
{
|
||||
specular = env0;
|
||||
}
|
||||
#else
|
||||
specular = env0;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
return specular * occlusion;
|
||||
}
|
||||
|
||||
// Global Illumination
|
||||
inline UnityGI UnityAnisotropicGlobalIllumination(UnityGIInput data, half occlusion, half3 normalWorld, Unity_GlossyEnvironmentData glossIn, half anisotropy, half3x3 worldVectors)
|
||||
{
|
||||
UnityGI o_gi = UnityGI_Base(data, occlusion, normalWorld);
|
||||
o_gi.indirect.specular = UnityGI_AnisotropicIndirectSpecular(data, occlusion, glossIn, anisotropy, worldVectors);
|
||||
return o_gi;
|
||||
}
|
||||
|
||||
// Surface shader output structure to be used with physically
|
||||
// based shading model.
|
||||
|
||||
//-------------------------------------------------------------------------------------
|
||||
// Anisotropic workflow
|
||||
|
||||
struct SurfaceOutputStandardAnisotropic
|
||||
{
|
||||
fixed3 Albedo; // base (diffuse or specular) color
|
||||
fixed3 Normal; // tangent space normal, if written
|
||||
half3 Emission;
|
||||
half Metallic; // 0=non-metal, 1=metal
|
||||
// Smoothness is the user facing name, it should be perceptual smoothness but user should not have to deal with it.
|
||||
// Everywhere in the code you meet smoothness it is perceptual smoothness
|
||||
half Smoothness; // 0=rough, 1=smooth
|
||||
half Occlusion; // occlusion (default 1)
|
||||
fixed Alpha; // alpha for transparencies
|
||||
half Anisotropy;
|
||||
float3x3 WorldVectors;
|
||||
};
|
||||
|
||||
inline half4 LightingStandardAnisotropic(SurfaceOutputStandardAnisotropic s, half3 viewDir, UnityGI gi)
|
||||
{
|
||||
s.Normal = normalize(s.Normal);
|
||||
|
||||
half oneMinusReflectivity;
|
||||
half3 specColor;
|
||||
s.Albedo = DiffuseAndSpecularFromMetallic(s.Albedo, s.Metallic, /*out*/ specColor, /*out*/ oneMinusReflectivity);
|
||||
|
||||
// shader relies on pre-multiply alpha-blend (_SrcBlend = One, _DstBlend = OneMinusSrcAlpha)
|
||||
// this is necessary to handle transparency in physically correct way - only diffuse component gets affected by alpha
|
||||
half outputAlpha;
|
||||
s.Albedo = PreMultiplyAlpha(s.Albedo, s.Alpha, oneMinusReflectivity, /*out*/ outputAlpha);
|
||||
|
||||
half4 c = AnisotropicBRDF(s.Albedo, specColor, oneMinusReflectivity, s.Smoothness, s.Normal, s.WorldVectors, s.Anisotropy, s.Metallic, viewDir, gi.light, gi.indirect);
|
||||
c.a = outputAlpha;
|
||||
return c;
|
||||
}
|
||||
|
||||
//This is pointless as always forward?
|
||||
inline half4 LightingStandardAnisotropic_Deferred(SurfaceOutputStandardAnisotropic s, half3 viewDir, UnityGI gi, out half4 outGBuffer0, out half4 outGBuffer1, out half4 outGBuffer2)
|
||||
{
|
||||
half oneMinusReflectivity;
|
||||
half3 specColor;
|
||||
s.Albedo = DiffuseAndSpecularFromMetallic(s.Albedo, s.Metallic, /*out*/ specColor, /*out*/ oneMinusReflectivity);
|
||||
|
||||
half4 c = AnisotropicBRDF(s.Albedo, specColor, oneMinusReflectivity, s.Smoothness, s.Normal, s.WorldVectors, s.Anisotropy, s.Metallic, viewDir, gi.light, gi.indirect);
|
||||
|
||||
UnityStandardData data;
|
||||
data.diffuseColor = s.Albedo;
|
||||
data.occlusion = s.Occlusion;
|
||||
data.specularColor = specColor;
|
||||
data.smoothness = s.Smoothness;
|
||||
data.normalWorld = s.Normal;
|
||||
|
||||
UnityStandardDataToGbuffer(data, outGBuffer0, outGBuffer1, outGBuffer2);
|
||||
|
||||
half4 emission = half4(s.Emission + c.rgb, 1);
|
||||
return emission;
|
||||
}
|
||||
|
||||
inline void LightingStandardAnisotropic_GI(SurfaceOutputStandardAnisotropic s, UnityGIInput data, inout UnityGI gi)
|
||||
{
|
||||
#if defined(UNITY_PASS_DEFERRED) && UNITY_ENABLE_REFLECTION_BUFFERS
|
||||
gi = UnityGlobalIllumination(data, s.Occlusion, s.Normal);
|
||||
#else
|
||||
Unity_GlossyEnvironmentData g = UnityGlossyEnvironmentSetup(s.Smoothness, data.worldViewDir, s.Normal, lerp(unity_ColorSpaceDielectricSpec.rgb, s.Albedo, s.Metallic));
|
||||
gi = UnityAnisotropicGlobalIllumination(data, s.Occlusion, s.Normal, g, s.Anisotropy, s.WorldVectors);
|
||||
#endif
|
||||
}
|
||||
|
||||
//#endif UNITY_ANISOTROPIC_LIGHTING_INCLUDED
|
||||
@@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: dce578206c4306a4286cf1474f7802c3
|
||||
timeCreated: 1491560472
|
||||
licenseType: Store
|
||||
ShaderImporter:
|
||||
defaultTextures: []
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 35611
|
||||
packageName: UMA 2
|
||||
packageVersion: 2.13
|
||||
assetPath: Assets/UMA/Content/Hair/Shader/UnityHairShader-master/Version6/CGIncludes/UnityAnisotropicLighting.cginc
|
||||
uploadId: 679826
|
||||
@@ -0,0 +1,63 @@
|
||||
// Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt)
|
||||
|
||||
#ifndef UNITY_ANISOTROPIC_META_INCLUDED
|
||||
#define UNITY_ANISOTROPIC_META_INCLUDED
|
||||
|
||||
// Functionality for Standard shader "meta" pass
|
||||
// (extracts albedo/emission for lightmapper etc.)
|
||||
|
||||
// define meta pass before including other files; they have conditions
|
||||
// on that in some places
|
||||
#define UNITY_PASS_META 1
|
||||
|
||||
#include "UnityCG.cginc"
|
||||
#include "UnityAnisotropicInput.cginc"
|
||||
#include "UnityMetaPass.cginc"
|
||||
#include "UnityAnisotropicCore.cginc"
|
||||
|
||||
struct v2f_meta
|
||||
{
|
||||
float4 uv : TEXCOORD0;
|
||||
float4 pos : SV_POSITION;
|
||||
};
|
||||
|
||||
v2f_meta vert_meta (VertexInput v)
|
||||
{
|
||||
v2f_meta o;
|
||||
o.pos = UnityMetaVertexPosition(v.vertex, v.uv1.xy, v.uv2.xy, unity_LightmapST, unity_DynamicLightmapST);
|
||||
o.uv = TexCoords(v);
|
||||
return o;
|
||||
}
|
||||
|
||||
// Albedo for lightmapping should basically be diffuse color.
|
||||
// But rough metals (black diffuse) still scatter quite a lot of light around, so
|
||||
// we want to take some of that into account too.
|
||||
half3 UnityLightmappingAlbedo (half3 diffuse, half3 specular, half smoothness)
|
||||
{
|
||||
half roughness = SmoothnessToRoughness(smoothness);
|
||||
half3 res = diffuse;
|
||||
res += specular * roughness * 0.5;
|
||||
return res;
|
||||
}
|
||||
|
||||
float4 frag_meta (v2f_meta i) : SV_Target
|
||||
{
|
||||
// we're interested in diffuse & specular colors,
|
||||
// and surface roughness to produce final albedo.
|
||||
FragmentCommonData data = UNITY_SETUP_BRDF_INPUT (i.uv);
|
||||
|
||||
UnityMetaInput o;
|
||||
UNITY_INITIALIZE_OUTPUT(UnityMetaInput, o);
|
||||
|
||||
#if defined(EDITOR_VISUALIZATION)
|
||||
o.Albedo = data.diffColor;
|
||||
#else
|
||||
o.Albedo = UnityLightmappingAlbedo (data.diffColor, data.specColor, data.smoothness);
|
||||
#endif
|
||||
o.SpecularColor = data.specColor;
|
||||
o.Emission = Emission(i.uv.xy);
|
||||
|
||||
return UnityMetaFragment(o);
|
||||
}
|
||||
|
||||
#endif // UNITY_ADVANCED_META_INCLUDED
|
||||
@@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2141ceac909e56b4f95ee0ba16769f82
|
||||
timeCreated: 1491659086
|
||||
licenseType: Store
|
||||
ShaderImporter:
|
||||
defaultTextures: []
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 35611
|
||||
packageName: UMA 2
|
||||
packageVersion: 2.13
|
||||
assetPath: Assets/UMA/Content/Hair/Shader/UnityHairShader-master/Version6/CGIncludes/UnityAnisotropicMeta.cginc
|
||||
uploadId: 679826
|
||||
@@ -0,0 +1,194 @@
|
||||
// Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt)
|
||||
|
||||
#ifndef UNITY_ANISOTROPIC_SHADOW_INCLUDED
|
||||
#define UNITY_ANISOTROPIC_SHADOW_INCLUDED
|
||||
|
||||
// NOTE: had to split shadow functions into separate file,
|
||||
// otherwise compiler gives trouble with LIGHTING_COORDS macro (in UnityStandardCore.cginc)
|
||||
|
||||
|
||||
#include "UnityCG.cginc"
|
||||
#include "UnityStandardConfig.cginc"
|
||||
#include "UnityStandardUtils.cginc"
|
||||
|
||||
#if (defined(_ALPHABLEND_ON) || defined(_ALPHAPREMULTIPLY_ON)) && defined(UNITY_USE_DITHER_MASK_FOR_ALPHABLENDED_SHADOWS)
|
||||
#define UNITY_STANDARD_USE_DITHER_MASK 1
|
||||
#endif
|
||||
|
||||
// Need to output UVs in shadow caster, since we need to sample texture and do clip/dithering based on it
|
||||
#if defined(_ALPHATEST_ON) || defined(_ALPHABLEND_ON) || defined(_ALPHAPREMULTIPLY_ON)
|
||||
#define UNITY_STANDARD_USE_SHADOW_UVS 1
|
||||
#endif
|
||||
|
||||
// Has a non-empty shadow caster output struct (it's an error to have empty structs on some platforms...)
|
||||
#if !defined(V2F_SHADOW_CASTER_NOPOS_IS_EMPTY) || defined(UNITY_STANDARD_USE_SHADOW_UVS)
|
||||
#define UNITY_STANDARD_USE_SHADOW_OUTPUT_STRUCT 1
|
||||
#endif
|
||||
|
||||
#ifdef UNITY_STEREO_INSTANCING_ENABLED
|
||||
#define UNITY_STANDARD_USE_STEREO_SHADOW_OUTPUT_STRUCT 1
|
||||
#endif
|
||||
|
||||
|
||||
half4 _Color;
|
||||
half _Cutoff;
|
||||
sampler2D _MainTex;
|
||||
float4 _MainTex_ST;
|
||||
#ifdef UNITY_STANDARD_USE_DITHER_MASK
|
||||
sampler3D _DitherMaskLOD;
|
||||
#endif
|
||||
|
||||
// Handle PremultipliedAlpha from Fade or Transparent shading mode
|
||||
half4 _SpecColor;
|
||||
half _Metallic;
|
||||
#ifdef _SPECGLOSSMAP
|
||||
sampler2D _SpecGlossMap;
|
||||
#endif
|
||||
#ifdef _METALLICGLOSSMAP
|
||||
sampler2D _MetallicGlossMap;
|
||||
#endif
|
||||
|
||||
#if defined(UNITY_STANDARD_USE_SHADOW_UVS) && defined(_PARALLAXMAP)
|
||||
sampler2D _ParallaxMap;
|
||||
half _Parallax;
|
||||
#endif
|
||||
|
||||
half AnisotropicMetallicSetup_ShadowGetOneMinusReflectivity(half2 uv)
|
||||
{
|
||||
half metallicity = _Metallic;
|
||||
#ifdef _METALLICGLOSSMAP
|
||||
metallicity = tex2D(_MetallicGlossMap, uv).r;
|
||||
#endif
|
||||
return OneMinusReflectivityFromMetallic(metallicity);
|
||||
}
|
||||
|
||||
half MetallicSetup_ShadowGetOneMinusReflectivity(half2 uv)
|
||||
{
|
||||
half metallicity = _Metallic;
|
||||
#ifdef _METALLICGLOSSMAP
|
||||
metallicity = tex2D(_MetallicGlossMap, uv).r;
|
||||
#endif
|
||||
return OneMinusReflectivityFromMetallic(metallicity);
|
||||
}
|
||||
|
||||
half SpecularSetup_ShadowGetOneMinusReflectivity(half2 uv)
|
||||
{
|
||||
half3 specColor = _SpecColor.rgb;
|
||||
#ifdef _SPECGLOSSMAP
|
||||
specColor = tex2D(_SpecGlossMap, uv).rgb;
|
||||
#endif
|
||||
return (1 - SpecularStrength(specColor));
|
||||
}
|
||||
|
||||
// SHADOW_ONEMINUSREFLECTIVITY(): workaround to get one minus reflectivity based on UNITY_SETUP_BRDF_INPUT
|
||||
#define SHADOW_JOIN2(a, b) a##b
|
||||
#define SHADOW_JOIN(a, b) SHADOW_JOIN2(a,b)
|
||||
#define SHADOW_ONEMINUSREFLECTIVITY SHADOW_JOIN(UNITY_SETUP_BRDF_INPUT, _ShadowGetOneMinusReflectivity)
|
||||
|
||||
struct VertexInput
|
||||
{
|
||||
float4 vertex : POSITION;
|
||||
float3 normal : NORMAL;
|
||||
float2 uv0 : TEXCOORD0;
|
||||
#if defined(UNITY_STANDARD_USE_SHADOW_UVS) && defined(_PARALLAXMAP)
|
||||
half4 tangent : TANGENT;
|
||||
#endif
|
||||
UNITY_VERTEX_INPUT_INSTANCE_ID
|
||||
};
|
||||
|
||||
#ifdef UNITY_STANDARD_USE_SHADOW_OUTPUT_STRUCT
|
||||
struct VertexOutputShadowCaster
|
||||
{
|
||||
V2F_SHADOW_CASTER_NOPOS
|
||||
#if defined(UNITY_STANDARD_USE_SHADOW_UVS)
|
||||
float2 tex : TEXCOORD1;
|
||||
|
||||
#if defined(_PARALLAXMAP)
|
||||
half4 tangentToWorldAndParallax[3]: TEXCOORD2; // [3x3:tangentToWorld | 1x3:viewDirForParallax]
|
||||
#endif
|
||||
#endif
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef UNITY_STANDARD_USE_STEREO_SHADOW_OUTPUT_STRUCT
|
||||
struct VertexOutputStereoShadowCaster
|
||||
{
|
||||
UNITY_VERTEX_OUTPUT_STEREO
|
||||
};
|
||||
#endif
|
||||
|
||||
// We have to do these dances of outputting SV_POSITION separately from the vertex shader,
|
||||
// and inputting VPOS in the pixel shader, since they both map to "POSITION" semantic on
|
||||
// some platforms, and then things don't go well.
|
||||
|
||||
|
||||
void vertShadowCaster (VertexInput v,
|
||||
#ifdef UNITY_STANDARD_USE_SHADOW_OUTPUT_STRUCT
|
||||
out VertexOutputShadowCaster o,
|
||||
#endif
|
||||
#ifdef UNITY_STANDARD_USE_STEREO_SHADOW_OUTPUT_STRUCT
|
||||
out VertexOutputStereoShadowCaster os,
|
||||
#endif
|
||||
out float4 opos : SV_POSITION)
|
||||
{
|
||||
UNITY_SETUP_INSTANCE_ID(v);
|
||||
#ifdef UNITY_STANDARD_USE_STEREO_SHADOW_OUTPUT_STRUCT
|
||||
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(os);
|
||||
#endif
|
||||
TRANSFER_SHADOW_CASTER_NOPOS(o,opos)
|
||||
#if defined(UNITY_STANDARD_USE_SHADOW_UVS)
|
||||
o.tex = TRANSFORM_TEX(v.uv0, _MainTex);
|
||||
|
||||
#ifdef _PARALLAXMAP
|
||||
TANGENT_SPACE_ROTATION;
|
||||
half3 viewDirForParallax = mul (rotation, ObjSpaceViewDir(v.vertex));
|
||||
o.tangentToWorldAndParallax[0].w = viewDirForParallax.x;
|
||||
o.tangentToWorldAndParallax[1].w = viewDirForParallax.y;
|
||||
o.tangentToWorldAndParallax[2].w = viewDirForParallax.z;
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
half4 fragShadowCaster (
|
||||
#ifdef UNITY_STANDARD_USE_SHADOW_OUTPUT_STRUCT
|
||||
VertexOutputShadowCaster i
|
||||
#endif
|
||||
#ifdef UNITY_STANDARD_USE_DITHER_MASK
|
||||
, UNITY_VPOS_TYPE vpos : VPOS
|
||||
#endif
|
||||
) : SV_Target
|
||||
{
|
||||
#if defined(UNITY_STANDARD_USE_SHADOW_UVS)
|
||||
#if defined(_PARALLAXMAP) && (SHADER_TARGET >= 30)
|
||||
//On d3d9 parallax can also be disabled on the fwd pass when too many sampler are used. See EXCEEDS_D3D9_SM3_MAX_SAMPLER_COUNT. Ideally we should account for that here as well.
|
||||
half3 viewDirForParallax = normalize( half3(i.tangentToWorldAndParallax[0].w,i.tangentToWorldAndParallax[1].w,i.tangentToWorldAndParallax[2].w) );
|
||||
fixed h = tex2D (_ParallaxMap, i.tex.xy).g;
|
||||
half2 offset = ParallaxOffset1Step (h, _Parallax, viewDirForParallax);
|
||||
i.tex.xy += offset;
|
||||
#endif
|
||||
|
||||
half alpha = tex2D(_MainTex, i.tex).a * _Color.a;
|
||||
#if defined(_ALPHATEST_ON)
|
||||
clip (alpha - _Cutoff);
|
||||
#endif
|
||||
#if defined(_ALPHABLEND_ON) || defined(_ALPHAPREMULTIPLY_ON)
|
||||
#if defined(_ALPHAPREMULTIPLY_ON)
|
||||
half outModifiedAlpha;
|
||||
PreMultiplyAlpha(half3(0, 0, 0), alpha, SHADOW_ONEMINUSREFLECTIVITY(i.tex), outModifiedAlpha);
|
||||
alpha = outModifiedAlpha;
|
||||
#endif
|
||||
#if defined(UNITY_STANDARD_USE_DITHER_MASK)
|
||||
// Use dither mask for alpha blended shadows, based on pixel position xy
|
||||
// and alpha level. Our dither texture is 4x4x16.
|
||||
half alphaRef = tex3D(_DitherMaskLOD, float3(vpos.xy*0.25,alpha*0.9375)).a;
|
||||
clip (alphaRef - 0.01);
|
||||
#else
|
||||
clip (alpha - _Cutoff);
|
||||
#endif
|
||||
#endif
|
||||
#endif // #if defined(UNITY_STANDARD_USE_SHADOW_UVS)
|
||||
|
||||
SHADOW_CASTER_FRAGMENT(i)
|
||||
}
|
||||
|
||||
#endif // UNITY_ANISOTROPIC_SHADOW_INCLUDED
|
||||
@@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 60605e25f711155479e7c2a6e8aadf99
|
||||
timeCreated: 1492766711
|
||||
licenseType: Store
|
||||
ShaderImporter:
|
||||
defaultTextures: []
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 35611
|
||||
packageName: UMA 2
|
||||
packageVersion: 2.13
|
||||
assetPath: Assets/UMA/Content/Hair/Shader/UnityHairShader-master/Version6/CGIncludes/UnityAnisotropicShadow.cginc
|
||||
uploadId: 679826
|
||||
@@ -0,0 +1,151 @@
|
||||
float _Distortion;
|
||||
float _Scale;
|
||||
float _Power;
|
||||
float _Fresnel;
|
||||
float _FresnelDamp;
|
||||
|
||||
float4 TranslucentBRDF(float3 diffColor, float3 specColor, float oneMinusReflectivity, float smoothness, float3 normal, float3x3 worldVectors,
|
||||
float anisotropy, float metallic, float3 viewDir, UnityLight light, UnityIndirect gi)
|
||||
{
|
||||
//Unpack world vectors
|
||||
float3 tangent = worldVectors[0];
|
||||
float3 bitangent = worldVectors[1];
|
||||
//Normal shift
|
||||
float shiftAmount = dot(normal, viewDir);
|
||||
normal = shiftAmount < 0.0f ? normal + viewDir * (-shiftAmount + 1e-5f) : normal;
|
||||
//Regular vectors
|
||||
float NdotL = saturate(dot(normal, light.dir));
|
||||
float NdotV = abs(dot(normal, viewDir));
|
||||
float LdotV = dot(light.dir, viewDir);
|
||||
float3 H = Unity_SafeNormalize(light.dir + viewDir);
|
||||
float invLenLV = rsqrt(abs(2 + 2 * normalize(LdotV)));
|
||||
float NdotH = saturate(dot(normal, H));
|
||||
float LdotH = saturate(dot(light.dir, H));
|
||||
//Tangent vectors
|
||||
float TdotH = dot(tangent, H);
|
||||
float TdotL = dot(tangent, light.dir);
|
||||
float BdotH = dot(bitangent, H);
|
||||
float BdotL = dot(bitangent, light.dir);
|
||||
float TdotV = dot(viewDir, tangent);
|
||||
float BdotV = dot(viewDir, bitangent);
|
||||
//Fresnels
|
||||
half grazingTerm = saturate(smoothness + (1 - oneMinusReflectivity));
|
||||
float3 F = FresnelLerp(specColor, grazingTerm, NdotV); //Original Schlick - Replace from SRP?
|
||||
//float3 fresnel0 = lerp(specColor, diffColor, metallic);
|
||||
//float3 F = FresnelSchlick(fresnel0, 1.0, LdotH);
|
||||
//Calculate roughness
|
||||
float roughnessT;
|
||||
float roughnessB;
|
||||
float perceptualRoughness = SmoothnessToPerceptualRoughness(smoothness);
|
||||
float roughness = PerceptualRoughnessToRoughness(perceptualRoughness);
|
||||
ConvertAnisotropyToRoughness(roughness, anisotropy, roughnessT, roughnessB);
|
||||
//Clamp roughness
|
||||
roughnessT = ClampRoughnessForAnalyticalLights(roughnessT);
|
||||
roughnessB = ClampRoughnessForAnalyticalLights(roughnessB);
|
||||
//Visibility & Distribution terms
|
||||
float V = SmithJointGGXAnisotropic(TdotV, BdotV, NdotV, TdotL, BdotL, NdotL, roughnessT, roughnessB);
|
||||
float D = D_GGXAnisotropic(TdotH, BdotH, NdotH, roughnessT, roughnessB);
|
||||
//Specular term
|
||||
float3 specularTerm = V * D;
|
||||
# ifdef UNITY_COLORSPACE_GAMMA
|
||||
specularTerm = sqrt(max(1e-4h, specularTerm));
|
||||
# endif
|
||||
// specularTerm * nl can be NaN on Metal in some cases, use max() to make sure it's a sane value
|
||||
specularTerm = max(0, specularTerm * NdotL);
|
||||
#if defined(_SPECULARHIGHLIGHTS_OFF)
|
||||
specularTerm = 0.0;
|
||||
#endif
|
||||
//Diffuse term
|
||||
float diffuseTerm = DisneyDiffuse(NdotV, NdotL, LdotH, perceptualRoughness) * NdotL;// - Need this NdotL multiply?
|
||||
//Reduction
|
||||
half surfaceReduction;
|
||||
# ifdef UNITY_COLORSPACE_GAMMA
|
||||
surfaceReduction = 1.0 - 0.28*roughness*perceptualRoughness; // 1-0.28*x^3 as approximation for (1/(x^4+1))^(1/2.2) on the domain [0;1]
|
||||
# else
|
||||
surfaceReduction = 1.0 / (roughness*roughness + 1.0); // fade \in [0.5;1]
|
||||
# endif
|
||||
//Final
|
||||
half3 color = (diffColor * (gi.diffuse + light.color * diffuseTerm))
|
||||
+ specularTerm * light.color * (FresnelTerm(specColor, LdotH))
|
||||
+ (surfaceReduction * gi.specular * FresnelLerp(specColor, grazingTerm, NdotV) * _Fresnel * lerp(float3(1,1,1),specColor,_FresnelDamp));
|
||||
return half4(color, 1);
|
||||
}
|
||||
|
||||
inline half4 LightFunctionStandardAnisotropic(SurfaceOutputStandardAnisotropic s, half3 viewDir, UnityGI gi)
|
||||
{
|
||||
s.Normal = normalize(s.Normal);
|
||||
|
||||
half oneMinusReflectivity;
|
||||
half3 specColor;
|
||||
s.Albedo = DiffuseAndSpecularFromMetallic(s.Albedo, s.Metallic, /*out*/ specColor, /*out*/ oneMinusReflectivity);
|
||||
|
||||
// shader relies on pre-multiply alpha-blend (_SrcBlend = One, _DstBlend = OneMinusSrcAlpha)
|
||||
// this is necessary to handle transparency in physically correct way - only diffuse component gets affected by alpha
|
||||
half outputAlpha;
|
||||
s.Albedo = PreMultiplyAlpha(s.Albedo, s.Alpha, oneMinusReflectivity, /*out*/ outputAlpha);
|
||||
|
||||
half4 c = TranslucentBRDF(s.Albedo, specColor, oneMinusReflectivity, s.Smoothness, s.Normal, s.WorldVectors, s.Anisotropy, s.Metallic, viewDir, gi.light, gi.indirect);
|
||||
c.a = outputAlpha;
|
||||
return c;
|
||||
}
|
||||
|
||||
|
||||
inline fixed4 LightingStandardTranslucent(SurfaceOutputStandardAnisotropic s, fixed3 viewDir, UnityGI gi)
|
||||
{
|
||||
// Original colour
|
||||
fixed4 pbr = LightFunctionStandardAnisotropic(s, viewDir, gi);
|
||||
|
||||
// --- Translucency ---
|
||||
float3 L = gi.light.dir;
|
||||
float3 V = viewDir;
|
||||
float3 N = s.Normal;
|
||||
|
||||
float3 H = normalize(L + N * _Distortion);
|
||||
float I = (pow(saturate(dot(V, -H)), _Power) * _Scale);
|
||||
|
||||
// Final add
|
||||
pbr.rgb = pbr.rgb + gi.light.color * (I*s.Albedo);
|
||||
|
||||
return pbr;
|
||||
}
|
||||
|
||||
//This is pointless as always forward?
|
||||
inline half4 LightingStandardTranslucent_Deferred(SurfaceOutputStandardAnisotropic s, half3 viewDir, UnityGI gi, out half4 outGBuffer0, out half4 outGBuffer1, out half4 outGBuffer2)
|
||||
{
|
||||
half oneMinusReflectivity;
|
||||
half3 specColor;
|
||||
s.Albedo = DiffuseAndSpecularFromMetallic(s.Albedo, s.Metallic, /*out*/ specColor, /*out*/ oneMinusReflectivity);
|
||||
|
||||
half4 c = TranslucentBRDF(s.Albedo, specColor, oneMinusReflectivity, s.Smoothness, s.Normal, s.WorldVectors, s.Anisotropy, s.Metallic, viewDir, gi.light, gi.indirect);
|
||||
|
||||
UnityStandardData data;
|
||||
data.diffuseColor = s.Albedo;
|
||||
data.occlusion = s.Occlusion;
|
||||
data.specularColor = specColor;
|
||||
data.smoothness = s.Smoothness;
|
||||
data.normalWorld = s.Normal;
|
||||
|
||||
UnityStandardDataToGbuffer(data, outGBuffer0, outGBuffer1, outGBuffer2);
|
||||
|
||||
// --- Translucency ---
|
||||
float3 L = gi.light.dir;
|
||||
float3 V = viewDir;
|
||||
float3 N = s.Normal;
|
||||
|
||||
float3 H = normalize(L + N * _Distortion);
|
||||
float I = (pow(saturate(dot(V, -H)), _Power) * _Scale);
|
||||
|
||||
|
||||
half4 emission = half4(s.Emission + c.rgb, 1);
|
||||
return emission * (float4(1,1,1,1) + float4(I * c.rgb,0));
|
||||
}
|
||||
|
||||
inline void LightingStandardTranslucent_GI(SurfaceOutputStandardAnisotropic s, UnityGIInput data, inout UnityGI gi)
|
||||
{
|
||||
#if defined(UNITY_PASS_DEFERRED) && UNITY_ENABLE_REFLECTION_BUFFERS
|
||||
gi = UnityGlobalIllumination(data, s.Occlusion, s.Normal);
|
||||
#else
|
||||
Unity_GlossyEnvironmentData g = UnityGlossyEnvironmentSetup(s.Smoothness, data.worldViewDir, s.Normal, lerp(unity_ColorSpaceDielectricSpec.rgb, s.Albedo, s.Metallic));
|
||||
gi = UnityAnisotropicGlobalIllumination(data, s.Occlusion, s.Normal, g, s.Anisotropy, s.WorldVectors);
|
||||
#endif
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 425d0f8540bbd10439244394bada8c7f
|
||||
timeCreated: 1507206596
|
||||
licenseType: Store
|
||||
ShaderImporter:
|
||||
defaultTextures: []
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 35611
|
||||
packageName: UMA 2
|
||||
packageVersion: 2.13
|
||||
assetPath: Assets/UMA/Content/Hair/Shader/UnityHairShader-master/Version6/CGIncludes/UnityTranslucentLighting.cginc
|
||||
uploadId: 679826
|
||||
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2017 Matt Dean, Adam Frisby, Alan Zucconi
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
@@ -0,0 +1,14 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e715ff22a29bbb94d9d2bb0b4abe1399
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 35611
|
||||
packageName: UMA 2
|
||||
packageVersion: 2.13
|
||||
assetPath: Assets/UMA/Content/Hair/Shader/UnityHairShader-master/Version6/LICENSE
|
||||
uploadId: 679826
|
||||
@@ -0,0 +1,47 @@
|
||||
|
||||
Shader "Sine Wave/Hair/Modern Hair V6 Part A" {
|
||||
Properties{
|
||||
_Color("Main Color", Color) = (1,1,1,1)
|
||||
_MainTex("Diffuse (RGB) Alpha (A)", 2D) = "gray" {}
|
||||
_Cutoff("Alpha Cut-Off Threshold", Range(0,1)) = 0.5
|
||||
_Glossiness("Smoothness", Range(0,1)) = 0.5
|
||||
_Metallic("Metallic", Range(0,1)) = 0.0
|
||||
}
|
||||
|
||||
SubShader{
|
||||
Tags { "RenderType" = "Transparent" "Queue" = "Transparent+1"}
|
||||
|
||||
Cull Off
|
||||
ZWrite Off
|
||||
|
||||
CGPROGRAM
|
||||
#pragma surface surf Standard alpha:fade
|
||||
#pragma target 3.0
|
||||
|
||||
struct Input
|
||||
{
|
||||
float2 uv_MainTex;
|
||||
float facing : VFACE;
|
||||
};
|
||||
|
||||
sampler2D _MainTex;
|
||||
float _Cutoff;
|
||||
fixed4 _Color;
|
||||
half _Glossiness;
|
||||
half _Metallic;
|
||||
|
||||
void surf(Input IN, inout SurfaceOutputStandard o)
|
||||
{
|
||||
fixed4 c = tex2D(_MainTex, IN.uv_MainTex) * _Color;
|
||||
clip(-(c.a - _Cutoff));
|
||||
o.Albedo = c.rgb;// *float3(1, 0, 0);
|
||||
//o.Emission = float3(1, 0, 0);
|
||||
o.Metallic = _Metallic * (IN.facing);
|
||||
o.Smoothness = _Glossiness * (IN.facing);
|
||||
o.Alpha = c.a;
|
||||
o.Normal *= -1 * IN.facing;
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
FallBack "Transparent/Cutout/VertexLit"
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7985dff6279757748a73ac62e1c47b1c
|
||||
ShaderImporter:
|
||||
externalObjects: {}
|
||||
defaultTextures: []
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 35611
|
||||
packageName: UMA 2
|
||||
packageVersion: 2.13
|
||||
assetPath: Assets/UMA/Content/Hair/Shader/UnityHairShader-master/Version6/Modern
|
||||
Hair V6-A.shader
|
||||
uploadId: 679826
|
||||
@@ -0,0 +1,101 @@
|
||||
|
||||
Shader "Sine Wave/Hair/Modern Hair V6 Part B" {
|
||||
Properties{
|
||||
_Color("Main Color", Color) = (1,1,1,1)
|
||||
_MainTex("Diffuse (RGB) Alpha (A)", 2D) = "gray" {}
|
||||
_Cutoff("Alpha Cut-Off Threshold", Range(0,1)) = 0.5
|
||||
_Glossiness("Smoothness", Range(0,1)) = 0.5
|
||||
_Metallic("Metallic", Range(0,1)) = 0.0
|
||||
}
|
||||
|
||||
SubShader{
|
||||
Tags { "RenderType" = "TransparentCutout" }
|
||||
|
||||
Cull Off
|
||||
|
||||
|
||||
Pass {
|
||||
ZWrite On
|
||||
Cull Off
|
||||
ColorMask 0
|
||||
|
||||
CGPROGRAM
|
||||
#pragma vertex vert
|
||||
#pragma fragment frag
|
||||
|
||||
// vertex shader inputs
|
||||
struct appdata
|
||||
{
|
||||
float4 vertex : POSITION; // vertex position
|
||||
float2 uv : TEXCOORD0; // texture coordinate
|
||||
};
|
||||
|
||||
// vertex shader outputs ("vertex to fragment")
|
||||
struct v2f
|
||||
{
|
||||
float2 uv : TEXCOORD0; // texture coordinate
|
||||
float4 vertex : SV_POSITION; // clip space position
|
||||
};
|
||||
|
||||
float _Cutoff;
|
||||
|
||||
// vertex shader
|
||||
v2f vert(appdata v)
|
||||
{
|
||||
v2f o;
|
||||
// transform position to clip space
|
||||
// (multiply with model*view*projection matrix)
|
||||
o.vertex = UnityObjectToClipPos(v.vertex);
|
||||
// just pass the texture coordinate
|
||||
o.uv = v.uv;
|
||||
return o;
|
||||
}
|
||||
|
||||
// texture we will sample
|
||||
sampler2D _MainTex;
|
||||
|
||||
// pixel shader; returns low precision ("fixed4" type)
|
||||
// color ("SV_Target" semantic)
|
||||
fixed4 frag(v2f i) : SV_Target
|
||||
{
|
||||
// sample texture and return it
|
||||
fixed4 col = tex2D(_MainTex, i.uv);
|
||||
clip(col.a - _Cutoff);
|
||||
return col;
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
|
||||
ColorMask ARGB
|
||||
|
||||
|
||||
CGPROGRAM
|
||||
#pragma surface surf Standard
|
||||
#pragma target 3.0
|
||||
|
||||
struct Input
|
||||
{
|
||||
float2 uv_MainTex;
|
||||
float facing : VFACE;
|
||||
};
|
||||
|
||||
sampler2D _MainTex;
|
||||
float _Cutoff;
|
||||
fixed4 _Color;
|
||||
half _Glossiness;
|
||||
half _Metallic;
|
||||
|
||||
void surf(Input IN, inout SurfaceOutputStandard o)
|
||||
{
|
||||
fixed4 c = tex2D(_MainTex, IN.uv_MainTex) * _Color;
|
||||
clip(c.a - _Cutoff);
|
||||
o.Albedo = c;
|
||||
o.Metallic = _Metallic * (IN.facing);
|
||||
o.Smoothness = _Glossiness * (IN.facing);
|
||||
o.Alpha = c.a;
|
||||
o.Normal *= -1 * IN.facing;
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
FallBack "Transparent/Cutout/VertexLit"
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 031795b6e5e7b7241919c15476122a35
|
||||
ShaderImporter:
|
||||
externalObjects: {}
|
||||
defaultTextures: []
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 35611
|
||||
packageName: UMA 2
|
||||
packageVersion: 2.13
|
||||
assetPath: Assets/UMA/Content/Hair/Shader/UnityHairShader-master/Version6/Modern
|
||||
Hair V6-B.shader
|
||||
uploadId: 679826
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e1cc9e44376aca44497856ddeed91cb8
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,423 @@
|
||||
Shader "Hair/Hair Mark 9"
|
||||
{
|
||||
Properties
|
||||
{
|
||||
_Color("Color", Color) = (1,1,1,1)
|
||||
_MainTex ("Texture", 2D) = "white" {}
|
||||
_Cutoff ("Alpha cutoff", Range(0,1)) = 0.4
|
||||
_CutoffOffset ("Alpha cutoff shadows", Range(0,1)) = 0.4
|
||||
_MipScale ("Mip Level Alpha Scale", Range(0,1)) = 0.25
|
||||
_MipScaleOffset ("Shadow Scale", Range(0,3)) = 1.5
|
||||
_ShadowScaleOffset ("Shadow Scale Offset", float) = -0.001
|
||||
_Spec("Spec Color", Color) = (1,1,1,1)
|
||||
_Gloss("Gloss", float) = 1.0
|
||||
_AnisoOffset("Aniso Offset", float) = 1.0
|
||||
_Flatness("Flatness", float) = 0.5
|
||||
_Smoother("Lighting Smoother", float) = 4
|
||||
_RimPower("Rim Lighting", Range(0,2)) = 0
|
||||
_RimAngle("Rim Angle", Range(0,20)) = 1
|
||||
_AnisoTwo("Aniso", float) = 1.0
|
||||
_AnisoThree("Strandiness", float) = 1.0
|
||||
_AnisoFour("Strand Highlight Cutoff", float) = 1.0
|
||||
_AnisoDir("Aniso Dir", Vector) = (0.5,0.5,1.0,1.0)
|
||||
_BlueNoiseCrossfade("Blue Noise Texture", 2D) = "white" {}
|
||||
}
|
||||
SubShader
|
||||
{
|
||||
Tags { "RenderQueue"="AlphaTest" "RenderType"="TransparentCutout" }
|
||||
Cull Off
|
||||
|
||||
Pass
|
||||
{
|
||||
Tags { "LightMode"="ForwardBase" }
|
||||
//AlphaToMask On
|
||||
ZWrite On
|
||||
ColorMask RGB
|
||||
|
||||
CGPROGRAM
|
||||
#pragma vertex vert
|
||||
#pragma fragment frag
|
||||
#pragma multi_compile_fwdbase
|
||||
|
||||
#include "UnityCG.cginc"
|
||||
#include "Lighting.cginc"
|
||||
#include "AutoLight.cginc"
|
||||
#include "DitherFunctions.cginc"
|
||||
|
||||
struct appdata
|
||||
{
|
||||
float4 vertex : POSITION;
|
||||
float2 uv : TEXCOORD0;
|
||||
half3 normal : NORMAL;
|
||||
};
|
||||
|
||||
struct v2f
|
||||
{
|
||||
float4 pos : SV_POSITION;
|
||||
float2 uv : TEXCOORD0;
|
||||
half3 worldNormal : NORMAL;
|
||||
half3 viewDir : TEXCOORD1;
|
||||
float4 screenPos : TEXCOORD2;
|
||||
LIGHTING_COORDS(3,4)
|
||||
};
|
||||
|
||||
sampler2D _MainTex;
|
||||
float4 _MainTex_ST;
|
||||
float4 _MainTex_TexelSize;
|
||||
|
||||
fixed _Cutoff;
|
||||
half _MipScale;
|
||||
|
||||
fixed _Gloss;
|
||||
fixed4 _Spec;
|
||||
half _AnisoOffset;
|
||||
half _Flatness;
|
||||
fixed4 _Color;
|
||||
float4 _AnisoDir;
|
||||
float _AnisoTwo;
|
||||
float _AnisoThree;
|
||||
float _AnisoFour;
|
||||
float _Smoother;
|
||||
|
||||
float CalcMipLevel(float2 texture_coord)
|
||||
{
|
||||
float2 dx = ddx(texture_coord);
|
||||
float2 dy = ddy(texture_coord);
|
||||
float delta_max_sqr = max(dot(dx, dx), dot(dy, dy));
|
||||
|
||||
return max(0.0, 0.5 * log2(delta_max_sqr));
|
||||
}
|
||||
|
||||
v2f vert (appdata v)
|
||||
{
|
||||
v2f o;
|
||||
o.pos = UnityObjectToClipPos(v.vertex);
|
||||
o.uv = TRANSFORM_TEX(v.uv, _MainTex);
|
||||
o.worldNormal = UnityObjectToWorldNormal(v.normal);
|
||||
o.viewDir = ObjSpaceViewDir(v.vertex);
|
||||
o.screenPos = ComputeScreenPos(UnityObjectToClipPos(v.vertex));
|
||||
|
||||
TRANSFER_VERTEX_TO_FRAGMENT(o);
|
||||
|
||||
return o;
|
||||
}
|
||||
|
||||
float _RimAngle;
|
||||
float _RimPower;
|
||||
|
||||
inline fixed4 CalculateLighting(v2f i, fixed facing : VFACE, fixed4 albedo) {
|
||||
float3 lightDir = normalize(_WorldSpaceLightPos0.xyz);
|
||||
float3 worldNormal = i.worldNormal * facing;
|
||||
fixed3 h = normalize(normalize(lightDir) + normalize(i.viewDir));
|
||||
|
||||
float d = max(dot(lightDir, worldNormal), dot(lightDir, worldNormal * -1));
|
||||
|
||||
float NdotL = saturate(d * _Smoother + _Flatness);
|
||||
|
||||
fixed HdotA = dot(normalize(worldNormal + _AnisoDir.rgb), h);
|
||||
float aniso = max(0, sin(radians((HdotA + _AnisoOffset) * 180)));
|
||||
|
||||
float specX = saturate(dot(worldNormal, h));
|
||||
float rim = saturate(pow(max(dot(i.worldNormal * facing, i.viewDir), dot(i.worldNormal * facing, i.viewDir)), _RimAngle)) * _RimPower;
|
||||
|
||||
float3 spec = saturate((pow(lerp(specX, aniso, _AnisoTwo), _Gloss * 128) + rim) * _Spec);
|
||||
|
||||
float maxAlbedo = max(max(albedo.r, albedo.g), albedo.b);
|
||||
|
||||
|
||||
spec = lerp(spec, spec*saturate(((maxAlbedo - _AnisoFour)*(1.0 / _AnisoFour))), _AnisoThree);
|
||||
|
||||
|
||||
|
||||
fixed4 c;
|
||||
half3 sh9 = ShadeSH9(float4(worldNormal.rgb,1.0));
|
||||
|
||||
c.rgb = ((albedo * _LightColor0.rgb * NdotL * 0.5) + (_LightColor0.rgb * spec * maxAlbedo))
|
||||
* (LIGHT_ATTENUATION(i) * 2)
|
||||
+ (sh9 * albedo);
|
||||
c.a = albedo.a;
|
||||
//clip(albedo.Alpha - _Cutoff);
|
||||
return c;
|
||||
}
|
||||
|
||||
fixed4 frag (v2f i, fixed facing : VFACE) : SV_Target
|
||||
{
|
||||
fixed4 col = tex2D(_MainTex, i.uv) * _Color;
|
||||
// rescale alpha by mip level (if not using preserved coverage mip maps)
|
||||
col.a *= 1 + max(0, CalcMipLevel(i.uv * _MainTex_TexelSize.zw)) * _MipScale;
|
||||
// rescale alpha by partial derivative
|
||||
col.a = (col.a - _Cutoff) / max(fwidth(col.a), 0.0001) + 0.5;
|
||||
|
||||
half3 worldNormal = normalize(i.worldNormal * facing);
|
||||
|
||||
col = CalculateLighting(i, facing, col);
|
||||
|
||||
|
||||
//col.rg = (i.screenPos.xy / i.screenPos.w);
|
||||
|
||||
ditherClip(i.screenPos.xy / i.screenPos.w, col.a, _Cutoff);
|
||||
|
||||
|
||||
return col;
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
|
||||
Pass
|
||||
{
|
||||
Tags { "LightMode"="ForwardBase" }
|
||||
AlphaToMask Off
|
||||
ZWrite Off
|
||||
ZTest Less
|
||||
Cull Off
|
||||
ColorMask RGB
|
||||
Blend SrcAlpha OneMinusSrcAlpha
|
||||
|
||||
CGPROGRAM
|
||||
#pragma vertex vert
|
||||
#pragma fragment frag
|
||||
#pragma multi_compile_fwdbase
|
||||
|
||||
#include "UnityCG.cginc"
|
||||
#include "Lighting.cginc"
|
||||
#include "AutoLight.cginc"
|
||||
#include "DitherFunctions.cginc"
|
||||
|
||||
struct appdata
|
||||
{
|
||||
float4 vertex : POSITION;
|
||||
float2 uv : TEXCOORD0;
|
||||
half3 normal : NORMAL;
|
||||
};
|
||||
|
||||
struct v2f
|
||||
{
|
||||
float4 pos : SV_POSITION;
|
||||
float2 uv : TEXCOORD0;
|
||||
half3 worldNormal : NORMAL;
|
||||
half3 viewDir : TEXCOORD1;
|
||||
float4 screenPos : TEXCOORD2;
|
||||
LIGHTING_COORDS(3,4)
|
||||
};
|
||||
|
||||
sampler2D _MainTex;
|
||||
float4 _MainTex_ST;
|
||||
float4 _MainTex_TexelSize;
|
||||
|
||||
fixed _Cutoff;
|
||||
half _MipScale;
|
||||
|
||||
fixed _Gloss;
|
||||
fixed4 _Spec;
|
||||
half _AnisoOffset;
|
||||
half _Flatness;
|
||||
fixed4 _Color;
|
||||
float4 _AnisoDir;
|
||||
float _AnisoTwo;
|
||||
float _AnisoThree;
|
||||
float _AnisoFour;
|
||||
float _Smoother;
|
||||
|
||||
float CalcMipLevel(float2 texture_coord)
|
||||
{
|
||||
float2 dx = ddx(texture_coord);
|
||||
float2 dy = ddy(texture_coord);
|
||||
float delta_max_sqr = max(dot(dx, dx), dot(dy, dy));
|
||||
|
||||
return max(0.0, 0.5 * log2(delta_max_sqr));
|
||||
}
|
||||
|
||||
v2f vert (appdata v)
|
||||
{
|
||||
v2f o;
|
||||
o.pos = UnityObjectToClipPos(v.vertex);
|
||||
o.uv = TRANSFORM_TEX(v.uv, _MainTex);
|
||||
o.worldNormal = UnityObjectToWorldNormal(v.normal);
|
||||
o.viewDir = ObjSpaceViewDir(v.vertex);
|
||||
o.screenPos = ComputeScreenPos(UnityObjectToClipPos(v.vertex));
|
||||
|
||||
TRANSFER_VERTEX_TO_FRAGMENT(o);
|
||||
|
||||
return o;
|
||||
}
|
||||
|
||||
float _RimAngle;
|
||||
float _RimPower;
|
||||
|
||||
inline fixed4 CalculateLighting(v2f i, fixed facing : VFACE, fixed4 albedo) {
|
||||
float3 lightDir = normalize(_WorldSpaceLightPos0.xyz);
|
||||
float3 worldNormal = i.worldNormal * facing;
|
||||
fixed3 h = normalize(normalize(lightDir) + normalize(i.viewDir));
|
||||
|
||||
float d = max(dot(lightDir, worldNormal), dot(lightDir, worldNormal * -1));
|
||||
|
||||
float NdotL = saturate(d * _Smoother + _Flatness);
|
||||
|
||||
fixed HdotA = dot(normalize(worldNormal + _AnisoDir.rgb), h);
|
||||
float aniso = max(0, sin(radians((HdotA + _AnisoOffset) * 180)));
|
||||
|
||||
float specX = saturate(dot(worldNormal, h));
|
||||
float rim = saturate(pow(max(dot(i.worldNormal * facing, i.viewDir), dot(i.worldNormal * facing, i.viewDir)), _RimAngle)) * _RimPower;
|
||||
|
||||
float3 spec = saturate((pow(lerp(specX, aniso, _AnisoTwo), _Gloss * 128) + rim) * _Spec);
|
||||
|
||||
float maxAlbedo = max(max(albedo.r, albedo.g), albedo.b);
|
||||
|
||||
|
||||
spec = lerp(spec, spec*saturate(((maxAlbedo - _AnisoFour)*(1.0 / _AnisoFour))), _AnisoThree);
|
||||
|
||||
|
||||
|
||||
fixed4 c;
|
||||
half3 sh9 = ShadeSH9(float4(worldNormal.rgb,1.0));
|
||||
|
||||
c.rgb = ((albedo * _LightColor0.rgb * NdotL * 0.5) + (_LightColor0.rgb * spec * maxAlbedo))
|
||||
* (LIGHT_ATTENUATION(i) * 2)
|
||||
+ (sh9 * albedo);
|
||||
c.a = albedo.a;
|
||||
//clip(albedo.Alpha - _Cutoff);
|
||||
return c;
|
||||
}
|
||||
|
||||
fixed4 frag (v2f i, fixed facing : VFACE) : SV_Target
|
||||
{
|
||||
fixed4 col = tex2D(_MainTex, i.uv) * _Color;
|
||||
// rescale alpha by mip level (if not using preserved coverage mip maps)
|
||||
//col.a *= 1 + max(0, CalcMipLevel(i.uv * _MainTex_TexelSize.zw)) * _MipScale;
|
||||
// rescale alpha by partial derivative
|
||||
//col.a = (col.a - _Cutoff) / max(fwidth(col.a), 0.0001) + 0.5;
|
||||
|
||||
half3 worldNormal = normalize(i.worldNormal * facing);
|
||||
|
||||
col = CalculateLighting(i, facing, col);
|
||||
|
||||
//ditherClip(i.screenPos.xy / i.screenPos.w, 1.0 - col.a, _Cutoff);
|
||||
|
||||
col.a = saturate(col.a * (1/_Cutoff));
|
||||
|
||||
return col;
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
/*
|
||||
Pass {
|
||||
Name "CASTER"
|
||||
Tags { "LIGHTMODE"="SHADOWCASTER" "QUEUE"="AlphaTest" "IGNOREPROJECTOR"="true" "SHADOWSUPPORT"="true" "RenderType"="TransparentCutout" }
|
||||
//AlphaToMask On
|
||||
Cull Off
|
||||
ZWrite On
|
||||
|
||||
CGPROGRAM
|
||||
|
||||
#include "HLSLSupport.cginc"
|
||||
#include "UnityShaderVariables.cginc"
|
||||
#include "UnityShaderUtilities.cginc"
|
||||
|
||||
#pragma vertex vert
|
||||
#pragma fragment frag
|
||||
#pragma target 2.0
|
||||
#pragma multi_compile_shadowcaster
|
||||
#pragma multi_compile_instancing // allow instanced shadow pass for most of the shaders
|
||||
#include "UnityCG.cginc"
|
||||
|
||||
struct v2f {
|
||||
V2F_SHADOW_CASTER;
|
||||
float2 uv : TEXCOORD1;
|
||||
UNITY_VERTEX_OUTPUT_STEREO
|
||||
};
|
||||
|
||||
uniform float4 _MainTex_ST;
|
||||
|
||||
float _ShadowScaleOffset;
|
||||
|
||||
v2f vert( appdata_base v )
|
||||
{
|
||||
v2f o;
|
||||
v.vertex.xyz += v.normal.xyz * _ShadowScaleOffset;
|
||||
UNITY_SETUP_INSTANCE_ID(v);
|
||||
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
|
||||
TRANSFER_SHADOW_CASTER_NORMALOFFSET(o)
|
||||
o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);
|
||||
return o;
|
||||
}
|
||||
|
||||
|
||||
uniform sampler2D _MainTex;
|
||||
float4 _MainTex_TexelSize;
|
||||
uniform fixed _CutoffOffset;
|
||||
uniform fixed4 _Color;
|
||||
half _MipScaleOffset;
|
||||
|
||||
float CalcMipLevel(float2 texture_coord)
|
||||
{
|
||||
float2 dx = ddx(texture_coord);
|
||||
float2 dy = ddy(texture_coord);
|
||||
float delta_max_sqr = max(dot(dx, dx), dot(dy, dy));
|
||||
|
||||
return max(0.0, 0.5 * log2(delta_max_sqr));
|
||||
}
|
||||
|
||||
float4 frag( v2f i ) : SV_Target
|
||||
{
|
||||
fixed4 col = tex2D( _MainTex, i.uv );
|
||||
|
||||
//col.a *= 1 + max(0, CalcMipLevel(i.uv * _MainTex_TexelSize.zw)) * _MipScaleOffset;
|
||||
//col.a -= _CutoffOffset + 0.1;
|
||||
//col.a = (col.a - _CutoffOffset) / max(fwidth(col.a), 0.0) + 0.5;
|
||||
|
||||
clip( col.a - _CutoffOffset);
|
||||
|
||||
SHADOW_CASTER_FRAGMENT(i)
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
*/
|
||||
Pass
|
||||
{
|
||||
Name "CASTER"
|
||||
Tags { "LIGHTMODE"="SHADOWCASTER" "QUEUE"="AlphaTest" "IGNOREPROJECTOR"="true" "SHADOWSUPPORT"="true" "RenderType"="TransparentCutout" }
|
||||
|
||||
CGPROGRAM
|
||||
#include "UnityCG.cginc"
|
||||
#include "DitherFunctions.cginc"
|
||||
#pragma vertex vert
|
||||
#pragma fragment frag
|
||||
|
||||
float4 _Color;
|
||||
float4 _MainTex_ST; // For the Main Tex UV transform
|
||||
sampler2D _MainTex; // Texture used for the line
|
||||
float _MipScaleOffset;
|
||||
float _CutoffOffset;
|
||||
|
||||
struct v2f
|
||||
{
|
||||
float4 pos : POSITION;
|
||||
float2 uv : TEXCOORD0;
|
||||
float4 screenPos : TEXCOORD1;
|
||||
};
|
||||
|
||||
v2f vert(appdata_base v)
|
||||
{
|
||||
v2f o;
|
||||
o.pos = UnityObjectToClipPos(v.vertex);
|
||||
o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);
|
||||
o.screenPos = ComputeScreenPos(UnityObjectToClipPos(v.vertex));
|
||||
|
||||
return o;
|
||||
}
|
||||
|
||||
float4 frag(v2f i) : COLOR
|
||||
{
|
||||
float4 col = _Color * tex2D(_MainTex, i.uv);
|
||||
ditherClip(i.screenPos.xy / i.screenPos.w, col.a * _MipScaleOffset, _CutoffOffset);
|
||||
|
||||
return float4(0,0,0,0);
|
||||
}
|
||||
|
||||
ENDCG
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
FallBack "Transparent/Cutout/Specular"
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
fileFormatVersion: 2
|
||||
guid: def76a94c229c2a4dae4e0ec3bcd8cca
|
||||
ShaderImporter:
|
||||
externalObjects: {}
|
||||
defaultTextures: []
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 35611
|
||||
packageName: UMA 2
|
||||
packageVersion: 2.13
|
||||
assetPath: Assets/UMA/Content/Hair/Shader/UnityHairShader-master/Version9/AlphaCoverageAnisoHair.shader
|
||||
uploadId: 679826
|
||||
@@ -0,0 +1,136 @@
|
||||
// Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt)
|
||||
|
||||
Shader "Legacy Shaders/Transparent/Cutout/VertexLit" {
|
||||
Properties {
|
||||
_Color ("Main Color", Color) = (1,1,1,1)
|
||||
_SpecColor ("Spec Color", Color) = (1,1,1,0)
|
||||
_Emission ("Emissive Color", Color) = (0,0,0,0)
|
||||
_Shininess ("Shininess", Range (0.1, 1)) = 0.7
|
||||
_MainTex ("Base (RGB) Trans (A)", 2D) = "white" {}
|
||||
_Cutoff ("Alpha cutoff", Range(0,1)) = 0.5
|
||||
}
|
||||
|
||||
SubShader {
|
||||
Tags {"Queue"="AlphaTest" "IgnoreProjector"="True" "RenderType"="TransparentCutout"}
|
||||
LOD 100
|
||||
|
||||
// Non-lightmapped
|
||||
Pass {
|
||||
Tags { "LightMode" = "Vertex" }
|
||||
Alphatest Greater [_Cutoff]
|
||||
AlphaToMask True
|
||||
ColorMask RGB
|
||||
Material {
|
||||
Diffuse [_Color]
|
||||
Ambient [_Color]
|
||||
Shininess [_Shininess]
|
||||
Specular [_SpecColor]
|
||||
Emission [_Emission]
|
||||
}
|
||||
Lighting On
|
||||
SeparateSpecular On
|
||||
SetTexture [_MainTex] {
|
||||
Combine texture * primary DOUBLE, texture * primary
|
||||
}
|
||||
}
|
||||
|
||||
// Lightmapped, encoded as dLDR
|
||||
Pass {
|
||||
Tags { "LightMode" = "VertexLM" }
|
||||
Alphatest Greater [_Cutoff]
|
||||
AlphaToMask True
|
||||
ColorMask RGB
|
||||
|
||||
BindChannels {
|
||||
Bind "Vertex", vertex
|
||||
Bind "normal", normal
|
||||
Bind "texcoord1", texcoord0 // lightmap uses 2nd uv
|
||||
Bind "texcoord", texcoord1 // main uses 1st uv
|
||||
}
|
||||
SetTexture [unity_Lightmap] {
|
||||
matrix [unity_LightmapMatrix]
|
||||
constantColor [_Color]
|
||||
combine texture * constant
|
||||
}
|
||||
SetTexture [_MainTex] {
|
||||
combine texture * previous DOUBLE, texture * primary
|
||||
}
|
||||
}
|
||||
|
||||
// Lightmapped, encoded as RGBM
|
||||
Pass {
|
||||
Tags { "LightMode" = "VertexLMRGBM" }
|
||||
Alphatest Greater [_Cutoff]
|
||||
AlphaToMask True
|
||||
ColorMask RGB
|
||||
|
||||
BindChannels {
|
||||
Bind "Vertex", vertex
|
||||
Bind "normal", normal
|
||||
Bind "texcoord1", texcoord0 // lightmap uses 2nd uv
|
||||
Bind "texcoord1", texcoord1 // unused
|
||||
Bind "texcoord", texcoord2 // main uses 1st uv
|
||||
}
|
||||
|
||||
SetTexture [unity_Lightmap] {
|
||||
matrix [unity_LightmapMatrix]
|
||||
combine texture * texture alpha DOUBLE
|
||||
}
|
||||
SetTexture [unity_Lightmap] {
|
||||
constantColor [_Color]
|
||||
combine previous * constant
|
||||
}
|
||||
SetTexture [_MainTex] {
|
||||
combine texture * previous QUAD, texture * primary
|
||||
}
|
||||
}
|
||||
|
||||
// Pass to render object as a shadow caster
|
||||
Pass {
|
||||
Name "Caster"
|
||||
Tags { "LightMode" = "ShadowCaster" }
|
||||
|
||||
CGPROGRAM
|
||||
#pragma vertex vert
|
||||
#pragma fragment frag
|
||||
#pragma target 2.0
|
||||
#pragma multi_compile_shadowcaster
|
||||
#pragma multi_compile_instancing // allow instanced shadow pass for most of the shaders
|
||||
#include "UnityCG.cginc"
|
||||
|
||||
struct v2f {
|
||||
V2F_SHADOW_CASTER;
|
||||
float2 uv : TEXCOORD1;
|
||||
UNITY_VERTEX_OUTPUT_STEREO
|
||||
};
|
||||
|
||||
uniform float4 _MainTex_ST;
|
||||
|
||||
v2f vert( appdata_base v )
|
||||
{
|
||||
v2f o;
|
||||
UNITY_SETUP_INSTANCE_ID(v);
|
||||
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
|
||||
TRANSFER_SHADOW_CASTER_NORMALOFFSET(o)
|
||||
o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);
|
||||
return o;
|
||||
}
|
||||
|
||||
uniform sampler2D _MainTex;
|
||||
uniform fixed _Cutoff;
|
||||
uniform fixed4 _Color;
|
||||
|
||||
float4 frag( v2f i ) : SV_Target
|
||||
{
|
||||
fixed4 texcol = tex2D( _MainTex, i.uv );
|
||||
clip( texcol.a*_Color.a - _Cutoff );
|
||||
|
||||
SHADOW_CASTER_FRAGMENT(i)
|
||||
}
|
||||
ENDCG
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e58e02fdda99e774fb09e5cd2ebc3a11
|
||||
ShaderImporter:
|
||||
externalObjects: {}
|
||||
defaultTextures: []
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 35611
|
||||
packageName: UMA 2
|
||||
packageVersion: 2.13
|
||||
assetPath: Assets/UMA/Content/Hair/Shader/UnityHairShader-master/Version9/AlphaTest-VertexLit.shader
|
||||
uploadId: 679826
|
||||
|
After Width: | Height: | Size: 19 KiB |
@@ -0,0 +1,153 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 23fd7a3ab1a69344a9eda1a6ca4223f7
|
||||
TextureImporter:
|
||||
fileIDToRecycleName: {}
|
||||
externalObjects: {}
|
||||
serializedVersion: 4
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
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
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: -1
|
||||
mipBias: -1
|
||||
wrapU: 0
|
||||
wrapV: 1
|
||||
wrapW: -1
|
||||
nPOTScale: 1
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spritePixelsToUnits: 100
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 0
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 0
|
||||
textureShape: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
platformSettings:
|
||||
- buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
- buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
- buildTarget: iPhone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
- buildTarget: tvOS
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
- buildTarget: Android
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
- buildTarget: Tizen
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
- buildTarget: Windows Store Apps
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
- buildTarget: WebGL
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
- buildTarget: Samsung TV
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
spritePackingTag:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 35611
|
||||
packageName: UMA 2
|
||||
packageVersion: 2.13
|
||||
assetPath: Assets/UMA/Content/Hair/Shader/UnityHairShader-master/Version9/BlueNoiseCrossfade_16x256.png
|
||||
uploadId: 679826
|
||||
@@ -0,0 +1,95 @@
|
||||
// From: https://github.com/gkjohnson/unity-dithered-transparency-shader
|
||||
// MIT License
|
||||
|
||||
//Copyright (c) 2017 Garrett Johnson
|
||||
|
||||
//Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
//of this software and associated documentation files (the "Software"), to deal
|
||||
//in the Software without restriction, including without limitation the rights
|
||||
//to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
//copies of the Software, and to permit persons to whom the Software is
|
||||
//furnished to do so, subject to the following conditions:
|
||||
|
||||
//The above copyright notice and this permission notice shall be included in all
|
||||
//copies or substantial portions of the Software.
|
||||
|
||||
//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
//SOFTWARE.
|
||||
|
||||
#ifndef __DITHER_FUNCTIONS__
|
||||
#define __DITHER_FUNCTIONS__
|
||||
#include "UnityCG.cginc"
|
||||
|
||||
// Returns > 0 if not clipped, < 0 if clipped based
|
||||
// on the dither
|
||||
// For use with the "clip" function
|
||||
// pos is the fragment position in screen space from [0,1]
|
||||
float isDithered(float2 pos, float alpha) {
|
||||
pos *= _ScreenParams.xy;
|
||||
|
||||
// Define a dither threshold matrix which can
|
||||
// be used to define how a 4x4 set of pixels
|
||||
// will be dithered
|
||||
float DITHER_THRESHOLDS[16] =
|
||||
{
|
||||
1.0 / 17.0, 9.0 / 17.0, 3.0 / 17.0, 11.0 / 17.0,
|
||||
13.0 / 17.0, 5.0 / 17.0, 15.0 / 17.0, 7.0 / 17.0,
|
||||
4.0 / 17.0, 12.0 / 17.0, 2.0 / 17.0, 10.0 / 17.0,
|
||||
16.0 / 17.0, 8.0 / 17.0, 14.0 / 17.0, 6.0 / 17.0
|
||||
};
|
||||
|
||||
uint index = (uint(pos.x) % 4) * 4 + uint(pos.y) % 4;
|
||||
return alpha - DITHER_THRESHOLDS[index];
|
||||
}
|
||||
|
||||
// Returns whether the pixel should be discarded based
|
||||
// on the dither texture
|
||||
// pos is the fragment position in screen space from [0,1]
|
||||
float isDithered(float2 pos, float alpha, sampler2D tex, float scale) {
|
||||
pos *= _ScreenParams.xy;
|
||||
|
||||
// offset so we're centered
|
||||
pos.x -= _ScreenParams.x / 2;
|
||||
pos.y -= _ScreenParams.y / 2;
|
||||
|
||||
// scale the texture
|
||||
pos.x /= scale;
|
||||
pos.y /= scale;
|
||||
|
||||
// ensure that we clip if the alpha is zero by
|
||||
// subtracting a small value when alpha == 0, because
|
||||
// the clip function only clips when < 0
|
||||
return alpha - tex2D(tex, pos.xy).r - 0.0001 * (1 - ceil(alpha));
|
||||
}
|
||||
|
||||
// Helpers that call the above functions and clip if necessary
|
||||
void ditherClip(float2 pos, float alpha) {
|
||||
clip(isDithered(pos, alpha));
|
||||
}
|
||||
|
||||
|
||||
sampler2D _BlueNoiseCrossfade;
|
||||
float4 _BlueNoiseCrossfade_TexelSize;
|
||||
|
||||
float rand(float2 co){
|
||||
return frac(sin(dot(co.xy ,float2(12.9898,78.233))) * 43758.5453);
|
||||
}
|
||||
|
||||
void ditherClip(float2 pos, float alpha, float clipV) {
|
||||
pos *= _ScreenParams.xy;
|
||||
|
||||
//clip(isDithered(pos, alpha));
|
||||
|
||||
float2 vpos = float2((pos.x + pos.y), alpha);
|
||||
clip(tex2D(_BlueNoiseCrossfade, vpos).r - clipV);
|
||||
}
|
||||
|
||||
void ditherClip(float2 pos, float alpha, sampler2D tex, float scale) {
|
||||
clip(isDithered(pos, alpha, tex, scale));
|
||||
}
|
||||
#endif
|
||||
@@ -0,0 +1,15 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4005a78a9c44dfb4db4801941bd1768a
|
||||
ShaderImporter:
|
||||
externalObjects: {}
|
||||
defaultTextures: []
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 35611
|
||||
packageName: UMA 2
|
||||
packageVersion: 2.13
|
||||
assetPath: Assets/UMA/Content/Hair/Shader/UnityHairShader-master/Version9/DitherFunctions.cginc
|
||||
uploadId: 679826
|
||||
@@ -0,0 +1,113 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f518b34f64e6ae24486b693967c5cd25
|
||||
ModelImporter:
|
||||
serializedVersion: 21300
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
materials:
|
||||
materialImportMode: 2
|
||||
materialName: 0
|
||||
materialSearch: 1
|
||||
materialLocation: 1
|
||||
animations:
|
||||
legacyGenerateAnimations: 4
|
||||
bakeSimulation: 0
|
||||
resampleCurves: 1
|
||||
optimizeGameObjects: 0
|
||||
removeConstantScaleCurves: 1
|
||||
motionNodeName:
|
||||
rigImportErrors:
|
||||
rigImportWarnings:
|
||||
animationImportErrors:
|
||||
animationImportWarnings:
|
||||
animationRetargetingWarnings:
|
||||
animationDoRetargetingWarnings: 0
|
||||
importAnimatedCustomProperties: 0
|
||||
importConstraints: 0
|
||||
animationCompression: 1
|
||||
animationRotationError: 0.5
|
||||
animationPositionError: 0.5
|
||||
animationScaleError: 0.5
|
||||
animationWrapMode: 0
|
||||
extraExposedTransformPaths: []
|
||||
extraUserProperties: []
|
||||
clipAnimations: []
|
||||
isReadable: 0
|
||||
meshes:
|
||||
lODScreenPercentages: []
|
||||
globalScale: 1
|
||||
meshCompression: 0
|
||||
addColliders: 0
|
||||
useSRGBMaterialColor: 1
|
||||
sortHierarchyByName: 1
|
||||
importVisibility: 1
|
||||
importBlendShapes: 1
|
||||
importCameras: 1
|
||||
importLights: 1
|
||||
nodeNameCollisionStrategy: 1
|
||||
fileIdsGeneration: 2
|
||||
swapUVChannels: 0
|
||||
generateSecondaryUV: 0
|
||||
useFileUnits: 1
|
||||
keepQuads: 0
|
||||
weldVertices: 1
|
||||
bakeAxisConversion: 0
|
||||
preserveHierarchy: 0
|
||||
skinWeightsMode: 0
|
||||
maxBonesPerVertex: 4
|
||||
minBoneWeight: 0.001
|
||||
optimizeBones: 1
|
||||
meshOptimizationFlags: -1
|
||||
indexFormat: 0
|
||||
secondaryUVAngleDistortion: 8
|
||||
secondaryUVAreaDistortion: 15.000001
|
||||
secondaryUVHardAngle: 88
|
||||
secondaryUVMarginMethod: 1
|
||||
secondaryUVMinLightmapResolution: 40
|
||||
secondaryUVMinObjectScale: 1
|
||||
secondaryUVPackMargin: 4
|
||||
useFileScale: 1
|
||||
tangentSpace:
|
||||
normalSmoothAngle: 60
|
||||
normalImportMode: 0
|
||||
tangentImportMode: 3
|
||||
normalCalculationMode: 4
|
||||
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
|
||||
blendShapeNormalImportMode: 1
|
||||
normalSmoothingSource: 0
|
||||
referencedClips: []
|
||||
importAnimation: 1
|
||||
humanDescription:
|
||||
serializedVersion: 3
|
||||
human: []
|
||||
skeleton: []
|
||||
armTwist: 0.5
|
||||
foreArmTwist: 0.5
|
||||
upperLegTwist: 0.5
|
||||
legTwist: 0.5
|
||||
armStretch: 0.05
|
||||
legStretch: 0.05
|
||||
feetSpacing: 0
|
||||
globalScale: 1
|
||||
rootMotionBoneName:
|
||||
hasTranslationDoF: 0
|
||||
hasExtraRoot: 0
|
||||
skeletonHasParents: 1
|
||||
lastHumanDescriptionAvatarSource: {instanceID: 0}
|
||||
autoGenerateAvatarMappingIfUnspecified: 1
|
||||
animationType: 2
|
||||
humanoidOversampling: 1
|
||||
avatarSetup: 0
|
||||
addHumanoidExtraRootOnlyWhenUsingAvatar: 1
|
||||
remapMaterialsIfMaterialImportModeIsNone: 0
|
||||
additionalBone: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 35611
|
||||
packageName: UMA 2
|
||||
packageVersion: 2.13
|
||||
assetPath: Assets/UMA/Content/Hair/ShortHairCards.fbx
|
||||
uploadId: 679826
|
||||
|
After Width: | Height: | Size: 312 KiB |
@@ -0,0 +1,154 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e8b4d5910ea94604c862b2bd0417d111
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 12
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 1
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMasterTextureLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
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: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 0
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
cookieLightType: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
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: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Server
|
||||
maxTextureSize: 2048
|
||||
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: 2048
|
||||
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: 2048
|
||||
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: []
|
||||
nameFileIdTable: {}
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 35611
|
||||
packageName: UMA 2
|
||||
packageVersion: 2.13
|
||||
assetPath: Assets/UMA/Content/Hair/bb_male_hair_UMA2.png
|
||||
uploadId: 679826
|
||||
|
After Width: | Height: | Size: 5.8 MiB |
@@ -0,0 +1,154 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ea5ae972f5147ea4eac10acb648b83ca
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 12
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 1
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMasterTextureLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
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: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 0
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
cookieLightType: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
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: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Server
|
||||
maxTextureSize: 2048
|
||||
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: 2048
|
||||
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: 2048
|
||||
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: []
|
||||
nameFileIdTable: {}
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 35611
|
||||
packageName: UMA 2
|
||||
packageVersion: 2.13
|
||||
assetPath: Assets/UMA/Content/Hair/man-haircard 1-Alpha.png
|
||||
uploadId: 679826
|
||||
|
After Width: | Height: | Size: 9.6 MiB |
@@ -0,0 +1,154 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1afdf426d6c18d94d958683356478fc5
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 12
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 1
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMasterTextureLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
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: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 0
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
cookieLightType: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
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: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Server
|
||||
maxTextureSize: 2048
|
||||
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: 2048
|
||||
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: 2048
|
||||
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: []
|
||||
nameFileIdTable: {}
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 35611
|
||||
packageName: UMA 2
|
||||
packageVersion: 2.13
|
||||
assetPath: Assets/UMA/Content/Hair/man-haircard 1-ao.png
|
||||
uploadId: 679826
|
||||
|
After Width: | Height: | Size: 7.8 MiB |
@@ -0,0 +1,154 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ef1ad9f8e5c727b40a0836c37b78df41
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 12
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 1
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMasterTextureLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
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: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 0
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
cookieLightType: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
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: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Server
|
||||
maxTextureSize: 2048
|
||||
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: 2048
|
||||
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: 2048
|
||||
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: []
|
||||
nameFileIdTable: {}
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 35611
|
||||
packageName: UMA 2
|
||||
packageVersion: 2.13
|
||||
assetPath: Assets/UMA/Content/Hair/man-haircard 1-color.png
|
||||
uploadId: 679826
|
||||
|
After Width: | Height: | Size: 9.1 MiB |
@@ -0,0 +1,154 @@
|
||||
fileFormatVersion: 2
|
||||
guid: adbbfee8a2eaf1a4386f6b3044005ece
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 12
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 1
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMasterTextureLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
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: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 0
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
cookieLightType: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
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: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Server
|
||||
maxTextureSize: 2048
|
||||
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: 2048
|
||||
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: 2048
|
||||
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: []
|
||||
nameFileIdTable: {}
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 35611
|
||||
packageName: UMA 2
|
||||
packageVersion: 2.13
|
||||
assetPath: Assets/UMA/Content/Hair/man-haircard 1-depth.png
|
||||
uploadId: 679826
|
||||
|
After Width: | Height: | Size: 8.5 MiB |
@@ -0,0 +1,154 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2574a135ed7df174bbf2343a7b8d8ed4
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 12
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 1
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMasterTextureLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
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: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 0
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
cookieLightType: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
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: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Server
|
||||
maxTextureSize: 2048
|
||||
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: 2048
|
||||
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: 2048
|
||||
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: []
|
||||
nameFileIdTable: {}
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 35611
|
||||
packageName: UMA 2
|
||||
packageVersion: 2.13
|
||||
assetPath: Assets/UMA/Content/Hair/man-haircard 1-id.png
|
||||
uploadId: 679826
|
||||
|
After Width: | Height: | Size: 11 MiB |
@@ -0,0 +1,154 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b801212351ee38640ad808ad284e7fa8
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 12
|
||||
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
|
||||
vTOnly: 0
|
||||
ignoreMasterTextureLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
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: 1
|
||||
alphaIsTransparency: 0
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 1
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
cookieLightType: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
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: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Server
|
||||
maxTextureSize: 2048
|
||||
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: 2048
|
||||
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: 2048
|
||||
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: []
|
||||
nameFileIdTable: {}
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 35611
|
||||
packageName: UMA 2
|
||||
packageVersion: 2.13
|
||||
assetPath: Assets/UMA/Content/Hair/man-haircard 1-normals.png
|
||||
uploadId: 679826
|
||||
|
After Width: | Height: | Size: 10 MiB |
@@ -0,0 +1,154 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 92b771e93c36a2f4ba6dae392756f370
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 12
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 1
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMasterTextureLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
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: 1
|
||||
alphaIsTransparency: 0
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 0
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
cookieLightType: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
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: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Server
|
||||
maxTextureSize: 2048
|
||||
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: 2048
|
||||
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: 2048
|
||||
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: []
|
||||
nameFileIdTable: {}
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 35611
|
||||
packageName: UMA 2
|
||||
packageVersion: 2.13
|
||||
assetPath: Assets/UMA/Content/Hair/man-haircard 1-reflect.png
|
||||
uploadId: 679826
|
||||
|
After Width: | Height: | Size: 6.1 MiB |
@@ -0,0 +1,154 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 52f5bb85dbf10b249884940c5c44ebc2
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 12
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 1
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMasterTextureLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
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: 1
|
||||
alphaIsTransparency: 0
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 0
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
cookieLightType: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
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: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Server
|
||||
maxTextureSize: 2048
|
||||
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: 2048
|
||||
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: 2048
|
||||
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: []
|
||||
nameFileIdTable: {}
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 35611
|
||||
packageName: UMA 2
|
||||
packageVersion: 2.13
|
||||
assetPath: Assets/UMA/Content/Hair/man-haircard 1-root.png
|
||||
uploadId: 679826
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 57181c46a2946ab428e00e42325c2266
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,40 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
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: f0188188c253e0c4bb9b46e19fa7312e, type: 3}
|
||||
m_Name: woman-haircard 4_Recipe
|
||||
m_EditorClassIdentifier:
|
||||
label:
|
||||
resourcesOnly: 0
|
||||
recipeType: Wardrobe
|
||||
DisplayValue: woman-haircard 4_slot
|
||||
compatibleRaces:
|
||||
- HumanFemale
|
||||
wardrobeRecipeThumbs:
|
||||
- race: HumanFemale
|
||||
filename:
|
||||
thumb: {fileID: 0}
|
||||
wardrobeSlot: Hair
|
||||
Appended: 0
|
||||
Hides: []
|
||||
HideTags: []
|
||||
suppressWardrobeSlots: []
|
||||
activeWardrobeSet: []
|
||||
MeshHideAssets: []
|
||||
OverrideDNA:
|
||||
PreloadValues: []
|
||||
recipeString: '{"version":3,"packedSlotDataList":[],"slotsV2":[],"slotsV3":[{"id":"woman-haircard
|
||||
4","scale":100,"copyIdx":-1,"overlays":[{"id":"NewHairOverlay","colorIdx":0,"rect":[0.0,0.0,0.0,0.0],"isTransformed":false,"scale":{"x":1.0,"y":1.0,"z":1.0},"rotation":0.0,"blendModes":[],"Tags":[],"tiling":[],"uvOverride":0}],"Tags":[],"Races":[],"blendShapeTarget":"","overSmoosh":0.009999999776482582,"smooshDistance":0.0010000000474974514,"smooshInvertX":false,"smooshInvertY":true,"smooshInvertZ":false,"smooshInvertDist":true,"smooshTargetTag":"","smooshableTag":"","isSwapSlot":false,"swapTag":"LongHair","uvOverride":0},{"id":"woman-haircard_4_tie","scale":100,"copyIdx":-1,"overlays":[{"id":"PonyTail_Scrunchie_Overlay","colorIdx":1,"rect":[0.0,0.0,0.0,0.0],"isTransformed":false,"scale":{"x":1.0,"y":1.0,"z":1.0},"rotation":0.0,"blendModes":[0,0,0],"Tags":[],"tiling":[false,false,false],"uvOverride":0}],"Tags":[],"Races":[],"blendShapeTarget":"","overSmoosh":0.009999999776482582,"smooshDistance":0.0010000000474974514,"smooshInvertX":false,"smooshInvertY":true,"smooshInvertZ":false,"smooshInvertDist":true,"smooshTargetTag":"","smooshableTag":"","isSwapSlot":false,"swapTag":"LongHair","uvOverride":0}],"colors":[],"fColors":[{"name":"-","colors":[255,255,255,255,0,0,0,0],"ShaderParms":[],"alwaysUpdate":false,"alwaysUpdateParms":false,"isBaseColor":false,"displayColor":-1},{"name":"","colors":[121,217,255,255,0,0,0,0],"ShaderParms":[],"alwaysUpdate":false,"alwaysUpdateParms":false,"isBaseColor":false,"displayColor":-9862}],"sharedColorCount":0,"race":"HumanFemale","packedDna":[],"uvOverride":0}'
|
||||
forceKeep: 0
|
||||
labelLocalFiles: 0
|
||||
IncompatibleRecipes: []
|
||||
UserField:
|
||||
replaces: Nothing
|
||||
@@ -0,0 +1,15 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b17a5eafd0dcbed459812286d0fe78ef
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 35611
|
||||
packageName: UMA 2
|
||||
packageVersion: 2.13
|
||||
assetPath: Assets/UMA/Content/Hair/woman-haircard 4/woman-haircard 4_Recipe.asset
|
||||
uploadId: 679826
|
||||
@@ -0,0 +1,15 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ca814d57603a0d2439f2f24d0e75edf6
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 35611
|
||||
packageName: UMA 2
|
||||
packageVersion: 2.13
|
||||
assetPath: Assets/UMA/Content/Hair/woman-haircard 4/woman-haircard 4_slot.asset
|
||||
uploadId: 679826
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 32ead006c6d870f4282996e502069e36
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,40 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
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: f0188188c253e0c4bb9b46e19fa7312e, type: 3}
|
||||
m_Name: woman-haircard 7_Recipe
|
||||
m_EditorClassIdentifier:
|
||||
label:
|
||||
resourcesOnly: 0
|
||||
recipeType: Wardrobe
|
||||
DisplayValue: woman-haircard 7_slot
|
||||
compatibleRaces:
|
||||
- HumanFemale
|
||||
wardrobeRecipeThumbs:
|
||||
- race: HumanFemale
|
||||
filename:
|
||||
thumb: {fileID: 0}
|
||||
wardrobeSlot: Hair
|
||||
Appended: 0
|
||||
Hides: []
|
||||
HideTags: []
|
||||
suppressWardrobeSlots: []
|
||||
activeWardrobeSet: []
|
||||
MeshHideAssets: []
|
||||
OverrideDNA:
|
||||
PreloadValues: []
|
||||
recipeString: '{"version":3,"packedSlotDataList":[],"slotsV2":[],"slotsV3":[{"id":"woman-haircard
|
||||
7","scale":100,"copyIdx":-1,"overlays":[{"id":"NewHairOverlay","colorIdx":0,"rect":[0.0,0.0,0.0,0.0],"isTransformed":false,"scale":{"x":1.0,"y":1.0,"z":1.0},"rotation":0.0,"blendModes":[],"Tags":[],"tiling":[],"uvOverride":0}],"Tags":[],"Races":[],"blendShapeTarget":"","overSmoosh":0.009999999776482582,"smooshDistance":0.0010000000474974514,"smooshInvertX":false,"smooshInvertY":true,"smooshInvertZ":false,"smooshInvertDist":true,"smooshTargetTag":"","smooshableTag":"","isSwapSlot":false,"swapTag":"LongHair","uvOverride":0}],"colors":[],"fColors":[{"name":"","colors":[255,255,255,255,0,0,0,0],"ShaderParms":[],"alwaysUpdate":false,"alwaysUpdateParms":false,"isBaseColor":false,"displayColor":-1}],"sharedColorCount":0,"race":"","packedDna":[],"uvOverride":0}'
|
||||
forceKeep: 0
|
||||
labelLocalFiles: 0
|
||||
IncompatibleRecipes: []
|
||||
UserField:
|
||||
replaces: Nothing
|
||||
@@ -0,0 +1,15 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f37201b58cc14f645894495c5461a63d
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 35611
|
||||
packageName: UMA 2
|
||||
packageVersion: 2.13
|
||||
assetPath: Assets/UMA/Content/Hair/woman-haircard 7/woman-haircard 7_Recipe.asset
|
||||
uploadId: 679826
|
||||
@@ -0,0 +1,15 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4219fd2b8f1290e4dab65630460abc13
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 35611
|
||||
packageName: UMA 2
|
||||
packageVersion: 2.13
|
||||
assetPath: Assets/UMA/Content/Hair/woman-haircard 7/woman-haircard 7_slot.asset
|
||||
uploadId: 679826
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: bc425df09a15431498ccc0dab65d99ad
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,36 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
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: f0188188c253e0c4bb9b46e19fa7312e, type: 3}
|
||||
m_Name: woman-haircard_4_tie_Recipe
|
||||
m_EditorClassIdentifier:
|
||||
label:
|
||||
resourcesOnly: 0
|
||||
recipeType: Wardrobe
|
||||
DisplayValue: woman-haircard_4_tie_slot
|
||||
compatibleRaces: []
|
||||
wardrobeRecipeThumbs: []
|
||||
wardrobeSlot: None
|
||||
Appended: 0
|
||||
Hides: []
|
||||
HideTags: []
|
||||
suppressWardrobeSlots: []
|
||||
activeWardrobeSet: []
|
||||
MeshHideAssets: []
|
||||
OverrideDNA:
|
||||
PreloadValues: []
|
||||
disabled: 0
|
||||
recipeString: '{"version":3,"packedSlotDataList":[],"slotsV2":[],"slotsV3":[{"id":"woman-haircard_4_tie","scale":100,"copyIdx":-1,"overlays":[],"Tags":[],"Races":[],"blendShapeTarget":"","overSmoosh":0.009999999776482582,"smooshDistance":0.0010000000474974514,"smooshInvertX":false,"smooshInvertY":true,"smooshInvertZ":false,"smooshInvertDist":true,"smooshTargetTag":"","smooshableTag":"","isSwapSlot":false,"swapTag":"LongHair","uvOverride":0,"isDisabled":false,"expandAlongNormal":0}],"colors":[],"fColors":[],"sharedColorCount":0,"race":"","packedDna":[],"uvOverride":0}'
|
||||
forceKeep: 0
|
||||
labelLocalFiles: 0
|
||||
IncompatibleRecipes: []
|
||||
UserField:
|
||||
replaces: Nothing
|
||||
@@ -0,0 +1,15 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 81f78d58f6040a146ad1ffbf26c58380
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 35611
|
||||
packageName: UMA 2
|
||||
packageVersion: 2.13
|
||||
assetPath: Assets/UMA/Content/Hair/woman-haircard_4_tie/woman-haircard_4_tie_Recipe.asset
|
||||
uploadId: 679826
|
||||
@@ -0,0 +1,15 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 13ec784be1fc2b24080a24f6dde66f6e
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
AssetOrigin:
|
||||
serializedVersion: 1
|
||||
productId: 35611
|
||||
packageName: UMA 2
|
||||
packageVersion: 2.13
|
||||
assetPath: Assets/UMA/Content/Hair/woman-haircard_4_tie/woman-haircard_4_tie_slot.asset
|
||||
uploadId: 679826
|
||||