diff --git a/Assets/Render/SpecialMaterials/JingTi.meta b/Assets/Render/SpecialMaterials/JingTi.meta new file mode 100644 index 00000000..605f91d0 --- /dev/null +++ b/Assets/Render/SpecialMaterials/JingTi.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a0facaea376a17b418e34534036830f6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Render/SpecialMaterials/JingTi/Bur.meta b/Assets/Render/SpecialMaterials/JingTi/Bur.meta new file mode 100644 index 00000000..7bc16d84 --- /dev/null +++ b/Assets/Render/SpecialMaterials/JingTi/Bur.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3876ef4e688a9824caaf4112d4e189b5 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Render/SpecialMaterials/JingTi/Bur/Bur.shader b/Assets/Render/SpecialMaterials/JingTi/Bur/Bur.shader new file mode 100644 index 00000000..6494662b --- /dev/null +++ b/Assets/Render/SpecialMaterials/JingTi/Bur/Bur.shader @@ -0,0 +1,132 @@ +Shader "Unlit URP Shader/Bur" +{ + Properties + { + _BaseColor("Base Color",color) = (1,1,1,1) + //_BaseMap("BaseMap", 2D) = "white" {} + _MainTex("MainTex",2d)="white"{} + //_Value("Value", Float) = 1 + } + HLSLINCLUDE + #pragma multi_compile _ LIGHTMAP_ON + #pragma multi_compile _ _MAIN_LIGHT_SHADOWS //接受主光源阴影 + #pragma multi_compile _ _MAIN_LIGHT_SHADOWS_CASCADE //投射主光源的阴影 + #pragma multi_compile _ _SHADOWS_SOFT //软阴影 + #pragma multi_compile _ _ADDITIONAL_LIGHTS //附加光源 + + + + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl" + + + + struct Attributes + { + float4 positionOS : POSITION; + float2 uv : TEXCOORD0; + float3 normal:NORMAL; + }; + + struct Varyings + { + float4 positionCS : SV_POSITION; + float2 uv : TEXCOORD0; + float3 Wnormal : TEXCOORD1; + float3 Wpos:TEXCOORD2; + }; + + CBUFFER_START(UnityPerMaterial) + half4 _BaseColor; + float4 _MainTex_TexelSize; + float4 _BaseMap_ST; + float _Value; + float2 HorV; + CBUFFER_END + TEXTURE2D (_MainTex);SAMPLER(sampler_MainTex); + //TEXTURE2D (_CameraOpaqueTexture);SAMPLER(sampler_CameraOpaqueTexture); + + Varyings vert(Attributes v) + { + Varyings o = (Varyings)0; + + o.positionCS = TransformObjectToHClip(v.positionOS.xyz); + o.uv = TRANSFORM_TEX(v.uv, _BaseMap); + o.Wpos = TransformObjectToWorld(v.positionOS); + o.Wnormal=TransformObjectToWorldNormal(v.normal); + + return o; + } + + half4 fragHorV(Varyings i) : SV_Target + { + float2 offset=_MainTex_TexelSize.xy; + half4 c; + float2 uv=i.positionCS.xy/_ScreenParams.xy; + half4 baseMap = 0.4*SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex,uv); + c = baseMap ;//* _BaseColor; + { + c+= 0.15*SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex,uv+offset*1*_Value*HorV); + c+= 0.15*SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex,uv+offset*-2*_Value*HorV); + c+= 0.10 *SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex,uv+offset*2*_Value*HorV); + c+= 0.10 *SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex,uv+offset*-2*_Value*HorV); + c+= 0.05 *SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex,uv+offset*3*_Value*HorV); + c+= 0.05 *SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex,uv+offset*-3*_Value*HorV); + } + + + + return c; + } + half4 fragBur(Varyings i) : SV_Target + { + float2 offset=_MainTex_TexelSize.xy; + + half4 c=half4(0,0,0,0); + float2 uv=i.positionCS.xy/_ScreenParams.xy; + //c = baseMap ;//* _BaseColor; + { + float f=0.4; + c+= SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex,uv+offset*float2(1,1)*_Value*f); + c+= SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex,uv+offset*float2(-1,1)*_Value*f); + c+= SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex,uv+offset*float2(1,-1)*_Value*f); + c+= SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex,uv+offset*float2(-1,-1)*_Value*f); + + c+= SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex,uv+offset*float2(2,2)*_Value*f); + c+= SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex,uv+offset*float2(-2,2)*_Value*f); + c+= SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex,uv+offset*float2(2,-2)*_Value*f); + c+= SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex,uv+offset*float2(-2,-2)*_Value*f); + c/=8; + } + + return c; + } + + ENDHLSL + SubShader + { + Tags { "Queue"="Transparent" "RenderType" = "Transparent" "RenderPipeline" = "UniversalPipeline" } + ZTest Always + Cull Off + LOD 100 + //高斯模糊 + Pass + { + Tags {"LightMode" = "UniversalForward"} + HLSLPROGRAM + #pragma vertex vert + #pragma fragment fragHorV + ENDHLSL + } + //快速模糊 + Pass + { + Tags {"LightMode" = "UniversalForward"} + HLSLPROGRAM + #pragma vertex vert + #pragma fragment fragBur + + ENDHLSL + } + } +} \ No newline at end of file diff --git a/Assets/Render/SpecialMaterials/JingTi/Bur/Bur.shader.meta b/Assets/Render/SpecialMaterials/JingTi/Bur/Bur.shader.meta new file mode 100644 index 00000000..89f058b1 --- /dev/null +++ b/Assets/Render/SpecialMaterials/JingTi/Bur/Bur.shader.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: ab89475eab71d344eb252d7e2828add6 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + preprocessorOverride: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Render/SpecialMaterials/JingTi/Bur/BurRenderPassFeature.cs b/Assets/Render/SpecialMaterials/JingTi/Bur/BurRenderPassFeature.cs new file mode 100644 index 00000000..335d2bac --- /dev/null +++ b/Assets/Render/SpecialMaterials/JingTi/Bur/BurRenderPassFeature.cs @@ -0,0 +1,96 @@ +using UnityEngine; +using UnityEngine.Rendering; +using UnityEngine.Rendering.Universal; + +public class BurRenderPassFeature : ScriptableRendererFeature +{ + public float Value=1; + class BurRenderPass : ScriptableRenderPass + { + public float Value; + private readonly int BurTexture = Shader.PropertyToID("_BurTexture"); + private readonly int BurTemp = Shader.PropertyToID("BurTemp"); + private Material mat; + private Vector4 H = new Vector4(1, 0, 0, 0); + private Vector4 V = new Vector4(0, 1, 0, 0); + + // This method is called before executing the render pass. + // It can be used to configure render targets and their clear state. Also to create temporary render target textures. + // When empty this render pass will render to the active camera render target. + // You should never call CommandBuffer.SetRenderTarget. Instead call ConfigureTarget and ConfigureClear. + // The render pipeline will ensure target setup and clearing happens in a performant manner. + public override void OnCameraSetup(CommandBuffer cmd, ref RenderingData renderingData) + { + if (mat == null) mat = CoreUtils.CreateEngineMaterial("Unlit URP Shader/Bur"); + //if(bur==null) + //var dp = renderingData.cameraData.cameraTargetDescriptor; + //dp.msaaSamples = 1; + //cmd.GetTemporaryRT(BurTexture, dp); + //bur = RTHandles.Alloc(BurTexture); + } + + // Here you can implement the rendering logic. + // Use ScriptableRenderContext to issue drawing commands or execute command buffers + // https://docs.unity3d.com/ScriptReference/Rendering.ScriptableRenderContext.html + // You don't have to call ScriptableRenderContext.submit, the render pipeline will call it at specific points in the pipeline. + public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData) + { + CommandBuffer cmd = CommandBufferPool.Get("Bur"); + var dp = renderingData.cameraData.cameraTargetDescriptor; + dp.msaaSamples = 1; + + cmd.GetTemporaryRT(BurTemp, dp); + cmd.GetTemporaryRT(BurTexture, dp); + + //mat.SetFloat("_Value",Value); + cmd.SetGlobalVector("HorV",H); + cmd.Blit(renderingData.cameraData.renderer.cameraColorTarget,BurTexture,mat,0); + cmd.SetGlobalVector("HorV",V); + cmd.Blit(BurTexture,BurTemp,mat,0); + cmd.Blit(BurTemp,BurTexture,mat,1); + cmd.SetRenderTarget(renderingData.cameraData.renderer.cameraColorTarget); + cmd.ReleaseTemporaryRT(BurTemp); + cmd.ReleaseTemporaryRT(BurTexture); + + context.ExecuteCommandBuffer(cmd); + cmd.Release(); + } + + // Cleanup any allocated resources that were created during the execution of this render pass. + public override void OnCameraCleanup(CommandBuffer cmd) + { + } + + public void Disop() + { + if(mat!=null) + CoreUtils.Destroy(mat); + } + } + + BurRenderPass m_ScriptablePass; + + /// + public override void Create() + { + m_ScriptablePass = new BurRenderPass(); + + // Configures where the render pass should be injected. + m_ScriptablePass.renderPassEvent = RenderPassEvent.BeforeRenderingPostProcessing; + } + + // Here you can inject one or multiple render passes in the renderer. + // This method is called when setting up the renderer once per-camera. + public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData) + { + m_ScriptablePass.Value = Value; + renderer.EnqueuePass(m_ScriptablePass); + } + + protected override void Dispose(bool disposing) + { + m_ScriptablePass.Disop(); + } +} + + diff --git a/Assets/Render/SpecialMaterials/JingTi/Bur/BurRenderPassFeature.cs.meta b/Assets/Render/SpecialMaterials/JingTi/Bur/BurRenderPassFeature.cs.meta new file mode 100644 index 00000000..cfe71b63 --- /dev/null +++ b/Assets/Render/SpecialMaterials/JingTi/Bur/BurRenderPassFeature.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b2175cb1f6f57794ea63d290dbaf906d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Render/SpecialMaterials/JingTi/Bur/BurValue.cs b/Assets/Render/SpecialMaterials/JingTi/Bur/BurValue.cs new file mode 100644 index 00000000..2500cde1 --- /dev/null +++ b/Assets/Render/SpecialMaterials/JingTi/Bur/BurValue.cs @@ -0,0 +1,20 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +[ExecuteAlways] +public class BurValue : MonoBehaviour +{ + [Range(0,10)]public float Value; + // Start is called before the first frame update + void Start() + { + + } + + // Update is called once per frame + void Update() + { + Shader.SetGlobalFloat("_Value",Value); + } +} diff --git a/Assets/Render/SpecialMaterials/JingTi/Bur/BurValue.cs.meta b/Assets/Render/SpecialMaterials/JingTi/Bur/BurValue.cs.meta new file mode 100644 index 00000000..bcf66db0 --- /dev/null +++ b/Assets/Render/SpecialMaterials/JingTi/Bur/BurValue.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1a875baee8e85d24a8addec970f2485a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Render/SpecialMaterials/JingTi/Bur/Unlit URP Shader_sampbur.mat b/Assets/Render/SpecialMaterials/JingTi/Bur/Unlit URP Shader_sampbur.mat new file mode 100644 index 00000000..8b5048d9 --- /dev/null +++ b/Assets/Render/SpecialMaterials/JingTi/Bur/Unlit URP Shader_sampbur.mat @@ -0,0 +1,31 @@ +%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: Unlit URP Shader_sampbur + m_Shader: {fileID: 4800000, guid: dedbc0fc0ecaf744fb075c715a940c87, type: 3} + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: [] + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/Render/SpecialMaterials/JingTi/Bur/Unlit URP Shader_sampbur.mat.meta b/Assets/Render/SpecialMaterials/JingTi/Bur/Unlit URP Shader_sampbur.mat.meta new file mode 100644 index 00000000..885ea1b7 --- /dev/null +++ b/Assets/Render/SpecialMaterials/JingTi/Bur/Unlit URP Shader_sampbur.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f7336ae76112887468c35a66492667c3 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Render/SpecialMaterials/JingTi/Bur/sampbur.shader b/Assets/Render/SpecialMaterials/JingTi/Bur/sampbur.shader new file mode 100644 index 00000000..74551a0b --- /dev/null +++ b/Assets/Render/SpecialMaterials/JingTi/Bur/sampbur.shader @@ -0,0 +1,95 @@ +Shader "Unlit URP Shader/sampbur" +{ + Properties + { + _BaseColor("Base Color",color) = (1,1,1,1) + _BaseMap("BaseMap", 2D) = "white" {} + } + + SubShader + { + Tags { "Queue"="Geometry" "RenderType" = "Opaque" "RenderPipeline" = "UniversalPipeline" } + LOD 100 + + Pass + { + Tags {"LightMode" = "UniversalForward"} + HLSLPROGRAM + // Required to compile gles 2.0 with standard srp library + #pragma prefer_hlslcc gles + #pragma exclude_renderers d3d11_9x + + #pragma multi_compile _ LIGHTMAP_ON + #pragma multi_compile _ _MAIN_LIGHT_SHADOWS //接受主光源阴影 + #pragma multi_compile _ _MAIN_LIGHT_SHADOWS_CASCADE //投射主光源的阴影 + #pragma multi_compile _ _SHADOWS_SOFT //软阴影 + #pragma multi_compile _ _ADDITIONAL_LIGHTS //附加光源 + + #pragma vertex vert + #pragma fragment frag + + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl" + + + + struct Attributes + { + float4 positionOS : POSITION; + float2 uv : TEXCOORD0; + float3 normal:NORMAL; + }; + + struct Varyings + { + float4 positionCS : SV_POSITION; + float2 uv : TEXCOORD0; + float3 Wnormal : TEXCOORD1; + float3 Wpos:TEXCOORD2; + }; + + CBUFFER_START(UnityPerMaterial) + half4 _BaseColor; + float4 _BaseMap_ST; + CBUFFER_END + TEXTURE2D (_BurTexture);SAMPLER(sampler_BurTexture); + + + Varyings vert(Attributes v) + { + Varyings o = (Varyings)0; + + o.positionCS = TransformObjectToHClip(v.positionOS.xyz); + o.uv = TRANSFORM_TEX(v.uv, _BaseMap); + o.Wpos = TransformObjectToWorld(v.positionOS); + o.Wnormal=TransformObjectToWorldNormal(v.normal); + + return o; + } + + half4 frag(Varyings i) : SV_Target + { + float3 N=normalize(i.Wnormal); + float3 V=normalize(_WorldSpaceCameraPos.xyz-i.Wpos.xyz); + float2 uv=i.positionCS.xy/_ScreenParams.xy; + half4 c; + half4 baseMap = SAMPLE_TEXTURE2D(_BurTexture, sampler_BurTexture, uv); + c = baseMap * _BaseColor; + //c.rgb = MixFog(c.rgb, i.fogCoord); + float _Me=0.6;//干净的透明玻璃漫反射少,所以金属度直接拉满 + + //间接高光和漫反射 + float aa=1; + BRDFData brdfData; + InitializeBRDFData(c,_Me,1,1,aa, brdfData); + half3 ambient_contrib = SampleSH(float4(N, 1)); + float3 ambient = 0.3 * c;// 随便乘个暗的系数 + float3 iblDiffuse = max(half3(0, 0, 0), ambient.rgb + ambient_contrib); + float3 inssp= GlobalIllumination(brdfData,iblDiffuse,1,i.Wpos,N,V); + c.rgb+=inssp*0.5; + return c; + } + ENDHLSL + } + } +} \ No newline at end of file diff --git a/Assets/Render/SpecialMaterials/JingTi/Bur/sampbur.shader.meta b/Assets/Render/SpecialMaterials/JingTi/Bur/sampbur.shader.meta new file mode 100644 index 00000000..9bb1a817 --- /dev/null +++ b/Assets/Render/SpecialMaterials/JingTi/Bur/sampbur.shader.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: dedbc0fc0ecaf744fb075c715a940c87 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + preprocessorOverride: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Render/SpecialMaterials/JingTi/YvShi.meta b/Assets/Render/SpecialMaterials/JingTi/YvShi.meta new file mode 100644 index 00000000..581850e2 --- /dev/null +++ b/Assets/Render/SpecialMaterials/JingTi/YvShi.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d185642e79220d4428dce0ee5f6e9000 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Render/SpecialMaterials/JingTi/YvShi/sources.meta b/Assets/Render/SpecialMaterials/JingTi/YvShi/sources.meta new file mode 100644 index 00000000..095f2c9b --- /dev/null +++ b/Assets/Render/SpecialMaterials/JingTi/YvShi/sources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ed418064695901b48b5932ab6d0781bd +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Render/SpecialMaterials/JingTi/YvShi/sources/SSS.shader b/Assets/Render/SpecialMaterials/JingTi/YvShi/sources/SSS.shader new file mode 100644 index 00000000..19c3db7c --- /dev/null +++ b/Assets/Render/SpecialMaterials/JingTi/YvShi/sources/SSS.shader @@ -0,0 +1,117 @@ +Shader "Unlit URP Shader" +{ + Properties + { + _BaseColor("Base Color",color) = (1,1,1,1) + _BaseMap("BaseMap", 2D) = "white" {} + _Thickness("Thickness",2D)="white"{} + _MatCap("MatCap",2D)="white"{} + + _NormalDistortion("NormalDistortion",Range(0.1,5))=1 + _SSSPower("SSSPower",Range(0.1,5))=1 + _SSSScale("_SSSScale",Range(0.1,5))=1 + } + + SubShader + { + Tags { "Queue"="Geometry" "RenderType" = "Opaque" "RenderPipeline" = "UniversalPipeline" } + LOD 100 + + Pass + { + Tags {"LightMode" = "UniversalForward"} + HLSLPROGRAM + // Required to compile gles 2.0 with standard srp library + #pragma prefer_hlslcc gles + #pragma exclude_renderers d3d11_9x + + #pragma multi_compile _ LIGHTMAP_ON + #pragma multi_compile _ _MAIN_LIGHT_SHADOWS //接受主光源阴影 + #pragma multi_compile _ _MAIN_LIGHT_SHADOWS_CASCADE //投射主光源的阴影 + #pragma multi_compile _ _SHADOWS_SOFT //软阴影 + #pragma multi_compile _ _ADDITIONAL_LIGHTS //附加光源 + + #pragma vertex vert + #pragma fragment frag + + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl" + + + + struct Attributes + { + float4 positionOS : POSITION; + float2 uv : TEXCOORD0; + float3 normal:NORMAL; + }; + + struct Varyings + { + float4 positionCS : SV_POSITION; + float2 uv : TEXCOORD0; + float3 Wnormal : TEXCOORD1; + float3 Wpos:TEXCOORD2; + }; + + CBUFFER_START(UnityPerMaterial) + half4 _BaseColor; + float4 _BaseMap_ST; + CBUFFER_END + TEXTURE2D (_BaseMap);SAMPLER(sampler_BaseMap); + TEXTURE2D (_Thickness);SAMPLER(sampler_Thickness); + TEXTURE2D (_MatCap);SAMPLER(sampler_MatCap); + float _NormalDistortion; + float _SSSPower; + float _SSSScale; + Varyings vert(Attributes v) + { + Varyings o = (Varyings)0; + + o.positionCS = TransformObjectToHClip(v.positionOS.xyz); + o.uv = TRANSFORM_TEX(v.uv, _BaseMap); + o.Wpos = TransformObjectToWorld(v.positionOS); + o.Wnormal=TransformObjectToWorldNormal(v.normal); + + return o; + } + + half4 frag(Varyings i) : SV_Target + { + half4 c; + half4 baseMap = SAMPLE_TEXTURE2D(_BaseMap, sampler_BaseMap, i.uv); + c = baseMap * _BaseColor; + float3 L=normalize(_MainLightPosition); + float3 V=normalize(_WorldSpaceCameraPos.xyz-i.Wpos.xyz); + float3 N=normalize(i.Wnormal); + float3 H=normalize(V+L); + //float3 + float3 Back=-normalize(L+N*_NormalDistortion); + float NdV=pow(1-saturate(dot(N,V)),3)*0.2; + float NdL=dot(N,L)*0.5+0.5; + float NdH=pow(saturate(dot(N,H)),2)*0.1; + float VdB=pow(saturate(dot(V,Back)),_SSSPower)*_SSSScale; + float thickness=1-SAMPLE_TEXTURE2D(_Thickness,sampler_Thickness,i.uv).r*0.5; + float3 sss=max(VdB,0.5)*thickness*_BaseColor; + + float3 reflectVec=reflect(-V,N); + half4 rgbm = SAMPLE_TEXTURECUBE_LOD(unity_SpecCube0,samplerunity_SpecCube0,reflectVec, 4); + float3 iblSpecular = DecodeHDREnvironment(rgbm, unity_SpecCube0_HDR); + + float3 viewNorm = normalize(mul((i.Wnormal),(float3x3)UNITY_MATRIX_I_V)); + float3 viewPos = normalize(TransformWorldToView(i.Wpos).xyz); + float3 viewCross = cross(viewPos, viewNorm); + viewNorm = float3(-viewCross.y, viewCross.x, 0.0); + float2 matCapUV = viewNorm.xy* 0.5 + 0.5; + half4 matCap = min(SAMPLE_TEXTURE2D_LOD(_MatCap, sampler_MatCap, matCapUV,2),0.5); + + //次表面散射+漫反射+高光+环境高光+matcap高光采样 + c.rgb = sss+NdL*_BaseColor*_MainLightColor*0.5+NdH*_MainLightColor*saturate(dot(N,L))+iblSpecular*0.2+matCap*max(NdL,0.3)+NdV*_BaseColor; + + + return c; + } + ENDHLSL + } + } +} \ No newline at end of file diff --git a/Assets/Render/SpecialMaterials/JingTi/YvShi/sources/SSS.shader.meta b/Assets/Render/SpecialMaterials/JingTi/YvShi/sources/SSS.shader.meta new file mode 100644 index 00000000..239830b6 --- /dev/null +++ b/Assets/Render/SpecialMaterials/JingTi/YvShi/sources/SSS.shader.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 18f99f35cb0098946a1a36647fcc293c +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + preprocessorOverride: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Render/SpecialMaterials/JingTi/YvShi/sources/matcap05.jpg b/Assets/Render/SpecialMaterials/JingTi/YvShi/sources/matcap05.jpg new file mode 100644 index 00000000..aa99824c Binary files /dev/null and b/Assets/Render/SpecialMaterials/JingTi/YvShi/sources/matcap05.jpg differ diff --git a/Assets/Render/SpecialMaterials/JingTi/YvShi/sources/matcap05.jpg.meta b/Assets/Render/SpecialMaterials/JingTi/YvShi/sources/matcap05.jpg.meta new file mode 100644 index 00000000..2259553a --- /dev/null +++ b/Assets/Render/SpecialMaterials/JingTi/YvShi/sources/matcap05.jpg.meta @@ -0,0 +1,146 @@ +fileFormatVersion: 2 +guid: b633fd7e58b12b54183daeb4cde4701c +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + 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: WebGL + 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: diff --git a/Assets/Render/SpecialMaterials/JingTi/Zuan.meta b/Assets/Render/SpecialMaterials/JingTi/Zuan.meta new file mode 100644 index 00000000..c03759fd --- /dev/null +++ b/Assets/Render/SpecialMaterials/JingTi/Zuan.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6ec97165eccc4bc4e98031a5d910772a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Render/SpecialMaterials/JingTi/Zuan/31a2bb886f91db328c95f70e7cd51cdf1ea757ae 2.png b/Assets/Render/SpecialMaterials/JingTi/Zuan/31a2bb886f91db328c95f70e7cd51cdf1ea757ae 2.png new file mode 100644 index 00000000..92514d2b Binary files /dev/null and b/Assets/Render/SpecialMaterials/JingTi/Zuan/31a2bb886f91db328c95f70e7cd51cdf1ea757ae 2.png differ diff --git a/Assets/Render/SpecialMaterials/JingTi/Zuan/31a2bb886f91db328c95f70e7cd51cdf1ea757ae 2.png.meta b/Assets/Render/SpecialMaterials/JingTi/Zuan/31a2bb886f91db328c95f70e7cd51cdf1ea757ae 2.png.meta new file mode 100644 index 00000000..cbd40b0c --- /dev/null +++ b/Assets/Render/SpecialMaterials/JingTi/Zuan/31a2bb886f91db328c95f70e7cd51cdf1ea757ae 2.png.meta @@ -0,0 +1,128 @@ +fileFormatVersion: 2 +guid: 6db2befc32f8aeb4abb077c571f41678 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 1 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 2 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + 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: 0 + 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: 0 + 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: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Render/SpecialMaterials/JingTi/Zuan/CushionCut.obj b/Assets/Render/SpecialMaterials/JingTi/Zuan/CushionCut.obj new file mode 100644 index 00000000..5411160b --- /dev/null +++ b/Assets/Render/SpecialMaterials/JingTi/Zuan/CushionCut.obj @@ -0,0 +1,433 @@ +# Mesh "CushionCut" exported with Unity Assets Bundle Extractor; 174 vertices, 234 indices, 320 bits per vertex +g CushionCut +# SubMesh 0 +# Vertices +v -0.063436 -0.185491 -0.063442 +vn -0.585752 -0.773320 -0.242634 +v -0.089717 -0.185491 0.000004 +vn -0.585752 -0.773320 -0.242634 +v -0.000000 -0.253789 0.000000 +vn -0.587515 -0.771751 -0.243364 +v -0.429143 0.125808 -0.177757 +vn -0.583985 -0.774884 -0.241902 +v -0.063436 -0.185491 -0.063442 +vn -0.561019 -0.770348 -0.303022 +v -0.341977 0.126922 -0.341969 +vn -0.561019 -0.770348 -0.303022 +v -0.429143 0.125808 -0.177757 +vn -0.561019 -0.770348 -0.303022 +v -0.063436 -0.185491 -0.063442 +vn -0.302934 -0.770326 -0.561096 +v -0.177743 0.125808 -0.429109 +vn -0.302934 -0.770326 -0.561096 +v -0.341977 0.126922 -0.341969 +vn -0.302934 -0.770326 -0.561096 +v -0.246829 0.210963 -0.246825 +vn -0.245307 0.937904 -0.245275 +v -0.096629 0.253789 -0.233283 +vn -0.245307 0.937904 -0.245275 +v -0.233270 0.253789 -0.096624 +vn -0.245307 0.937904 -0.245275 +v -0.000004 -0.185491 -0.089717 +vn -0.242637 -0.773310 -0.585764 +v -0.063436 -0.185491 -0.063442 +vn -0.242637 -0.773310 -0.585764 +v -0.000000 -0.253789 0.000000 +vn -0.243357 -0.771763 -0.587502 +v -0.177743 0.125808 -0.429109 +vn -0.241916 -0.774851 -0.584022 +v -0.000004 -0.185491 -0.089717 +vn -0.000065 -0.735680 -0.677330 +v 0.000005 0.126939 -0.429062 +vn -0.000065 -0.735680 -0.677330 +v -0.177743 0.125808 -0.429109 +vn 0.004860 -0.735671 -0.677321 +v 0.177757 0.125808 -0.429143 +vn -0.004990 -0.735671 -0.677321 +v 0.000003 0.210963 -0.349066 +vn -0.000000 0.937904 -0.346894 +v 0.096624 0.253789 -0.233270 +vn -0.000000 0.937904 -0.346894 +v -0.096629 0.253789 -0.233283 +vn -0.000000 0.937904 -0.346894 +v 0.063442 -0.185491 -0.063436 +vn 0.242634 -0.773320 -0.585752 +v -0.000004 -0.185491 -0.089717 +vn 0.242634 -0.773320 -0.585752 +v -0.000000 -0.253789 0.000000 +vn 0.243364 -0.771751 -0.587515 +v 0.177757 0.125808 -0.429143 +vn 0.241902 -0.774884 -0.583985 +v 0.063442 -0.185491 -0.063436 +vn 0.303024 -0.770348 -0.561018 +v 0.341968 0.126922 -0.341977 +vn 0.303024 -0.770348 -0.561018 +v 0.177757 0.125808 -0.429143 +vn 0.303024 -0.770348 -0.561018 +v 0.063442 -0.185491 -0.063436 +vn 0.561093 -0.770326 -0.302939 +v 0.429110 0.125808 -0.177743 +vn 0.561093 -0.770326 -0.302939 +v 0.341968 0.126922 -0.341977 +vn 0.561093 -0.770326 -0.302939 +v 0.246825 0.210963 -0.246829 +vn 0.245275 0.937904 -0.245307 +v 0.233283 0.253789 -0.096629 +vn 0.245275 0.937904 -0.245307 +v 0.096624 0.253789 -0.233270 +vn 0.245275 0.937904 -0.245307 +v 0.089717 -0.185491 -0.000004 +vn 0.585764 -0.773310 -0.242637 +v 0.063442 -0.185491 -0.063436 +vn 0.585764 -0.773310 -0.242637 +v -0.000000 -0.253789 0.000000 +vn 0.587502 -0.771763 -0.243357 +v 0.429110 0.125808 -0.177743 +vn 0.584022 -0.774852 -0.241915 +v 0.089717 -0.185491 -0.000004 +vn 0.677307 -0.735656 0.008110 +v 0.429062 0.126939 0.000005 +vn 0.677307 -0.735656 0.008110 +v 0.429110 0.125808 -0.177743 +vn 0.677321 -0.735671 0.004864 +v 0.424883 0.125808 0.175992 +vn 0.677286 -0.735632 0.011355 +v 0.349066 0.210963 0.000003 +vn 0.346894 0.937904 0.000000 +v 0.233270 0.253789 0.096624 +vn 0.346894 0.937904 0.000000 +v 0.233283 0.253789 -0.096629 +vn 0.346894 0.937904 0.000000 +v 0.063436 -0.185491 0.063442 +vn 0.587879 -0.771427 0.243515 +v 0.089717 -0.185491 -0.000004 +vn 0.587879 -0.771427 0.243515 +v -0.000000 -0.253789 0.000000 +vn 0.587515 -0.771751 0.243364 +v 0.424883 0.125808 0.175992 +vn 0.588243 -0.771101 0.243666 +v 0.063436 -0.185491 0.063442 +vn 0.570961 -0.767917 0.290356 +v 0.341976 0.126922 0.341968 +vn 0.570961 -0.767917 0.290356 +v 0.424883 0.125808 0.175992 +vn 0.570961 -0.767917 0.290356 +v 0.063436 -0.185491 0.063442 +vn 0.302938 -0.770326 0.561094 +v 0.177743 0.125808 0.429109 +vn 0.302938 -0.770326 0.561094 +v 0.341976 0.126922 0.341968 +vn 0.302938 -0.770326 0.561094 +v 0.246829 0.210963 0.246825 +vn 0.245180 0.937932 0.245295 +v 0.096624 0.253772 0.233271 +vn 0.245180 0.937932 0.245295 +v 0.233270 0.253789 0.096624 +vn 0.245180 0.937932 0.245295 +v 0.000004 -0.185491 0.089717 +vn 0.242637 -0.773310 0.585764 +v 0.063436 -0.185491 0.063442 +vn 0.242637 -0.773310 0.585764 +v -0.000000 -0.253789 0.000000 +vn 0.243357 -0.771763 0.587502 +v 0.177743 0.125808 0.429109 +vn 0.241916 -0.774851 0.584022 +v 0.000004 -0.185491 0.089717 +vn 0.000032 -0.735680 0.677330 +v -0.000005 0.126939 0.429062 +vn 0.000032 -0.735680 0.677330 +v 0.177743 0.125808 0.429109 +vn -0.004860 -0.735671 0.677321 +v -0.177750 0.125808 0.429126 +vn 0.004925 -0.735671 0.677321 +v -0.000003 0.210963 0.349066 +vn -0.000000 0.937933 0.346818 +v -0.096624 0.253789 0.233270 +vn -0.000000 0.937933 0.346818 +v 0.096624 0.253772 0.233271 +vn -0.000000 0.937933 0.346818 +v -0.063442 -0.185491 0.063436 +vn -0.242637 -0.773312 0.585760 +v 0.000004 -0.185491 0.089717 +vn -0.242637 -0.773312 0.585760 +v -0.000000 -0.253789 0.000000 +vn -0.243364 -0.771751 0.587515 +v -0.177750 0.125808 0.429126 +vn -0.241909 -0.774869 0.584002 +v -0.089717 -0.185491 0.000004 +vn -0.585756 -0.773317 0.242634 +v -0.063442 -0.185491 0.063436 +vn -0.585756 -0.773317 0.242634 +v -0.000000 -0.253789 0.000000 +vn -0.587502 -0.771763 0.243357 +v -0.429126 0.125808 0.177750 +vn -0.584006 -0.774866 0.241909 +v -0.089717 -0.185491 0.000004 +vn -0.677330 -0.735680 0.000032 +v -0.429062 0.126939 -0.000005 +vn -0.677330 -0.735680 0.000032 +v -0.429126 0.125808 0.177750 +vn -0.677321 -0.735671 -0.004925 +v -0.429143 0.125808 -0.177757 +vn -0.677321 -0.735671 0.004990 +v -0.349066 0.210963 -0.000003 +vn -0.346894 0.937904 0.000000 +v -0.233270 0.253789 -0.096624 +vn -0.346894 0.937904 0.000000 +v -0.233283 0.253789 0.096629 +vn -0.346894 0.937904 0.000000 +v -0.429126 0.125808 0.177750 +vn -0.724247 0.689528 0.004127 +v -0.429062 0.126939 -0.000005 +vn -0.724253 0.689534 0.000035 +v -0.349066 0.210963 -0.000003 +vn -0.724253 0.689534 0.000035 +v -0.429143 0.125808 -0.177757 +vn -0.724247 0.689528 -0.004057 +v 0.177743 0.125808 0.429109 +vn 0.004196 0.689528 0.724247 +v -0.000005 0.126939 0.429062 +vn 0.000035 0.689534 0.724253 +v -0.000003 0.210963 0.349066 +vn 0.000035 0.689534 0.724253 +v -0.177750 0.125808 0.429126 +vn -0.004127 0.689528 0.724247 +v 0.341976 0.126922 0.341968 +vn 0.252421 0.836464 0.486427 +v 0.177743 0.125808 0.429109 +vn 0.252421 0.836464 0.486427 +v 0.246829 0.210963 0.246825 +vn 0.252421 0.836464 0.486427 +v 0.341976 0.126922 0.341968 +vn 0.495253 0.834425 0.241784 +v 0.246829 0.210963 0.246825 +vn 0.491099 0.842408 0.221746 +v 0.424883 0.125808 0.175992 +vn 0.491099 0.842408 0.221746 +v 0.349066 0.210963 0.000003 +vn 0.484417 0.851516 0.200652 +v 0.233270 0.253789 0.096624 +vn 0.482121 0.853041 0.199701 +v 0.429110 0.125808 -0.177743 +vn 0.724247 0.689528 -0.004192 +v 0.429062 0.126939 0.000005 +vn 0.724226 0.689508 0.008717 +v 0.349066 0.210963 0.000003 +vn 0.724226 0.689508 0.008717 +v 0.424883 0.125808 0.175992 +vn 0.724084 0.689373 0.021624 +v 0.341968 0.126922 -0.341977 +vn 0.486425 0.836465 -0.252422 +v 0.429110 0.125808 -0.177743 +vn 0.486425 0.836465 -0.252422 +v 0.246825 0.210963 -0.246829 +vn 0.486425 0.836465 -0.252422 +v 0.341968 0.126922 -0.341977 +vn 0.252492 0.836483 -0.486358 +v 0.246825 0.210963 -0.246829 +vn 0.252492 0.836483 -0.486358 +v 0.177757 0.125808 -0.429143 +vn 0.252492 0.836483 -0.486358 +v 0.177757 0.125808 -0.429143 +vn 0.004057 0.689528 -0.724247 +v 0.000003 0.210963 -0.349066 +vn -0.000069 0.689534 -0.724253 +v 0.000005 0.126939 -0.429062 +vn -0.000069 0.689534 -0.724253 +v -0.177743 0.125808 -0.429109 +vn -0.004196 0.689528 -0.724247 +v -0.341977 0.126922 -0.341969 +vn -0.252416 0.836466 -0.486426 +v -0.177743 0.125808 -0.429109 +vn -0.252416 0.836466 -0.486426 +v -0.246829 0.210963 -0.246825 +vn -0.252416 0.836466 -0.486426 +v -0.341977 0.126922 -0.341969 +vn -0.486358 0.836484 -0.252491 +v -0.246829 0.210963 -0.246825 +vn -0.486358 0.836484 -0.252491 +v -0.429143 0.125808 -0.177757 +vn -0.486358 0.836484 -0.252491 +v -0.349066 0.210963 -0.000003 +vn -0.478633 0.855339 -0.198256 +v -0.429143 0.125808 -0.177757 +vn -0.475135 0.857621 -0.196807 +v -0.246829 0.210963 -0.246825 +vn -0.478633 0.855339 -0.198256 +v -0.233270 0.253789 -0.096624 +vn -0.482121 0.853041 -0.199701 +v -0.096629 0.253789 -0.233283 +vn -0.199734 0.852987 -0.482202 +v -0.246829 0.210963 -0.246825 +vn -0.198290 0.855285 -0.478716 +v 0.000003 0.210963 -0.349066 +vn -0.198290 0.855285 -0.478716 +v -0.177743 0.125808 -0.429109 +vn -0.196842 0.857566 -0.475220 +v 0.096624 0.253789 -0.233270 +vn 0.199701 0.853041 -0.482121 +v 0.000003 0.210963 -0.349066 +vn 0.198256 0.855339 -0.478633 +v 0.246825 0.210963 -0.246829 +vn 0.198256 0.855339 -0.478633 +v 0.177757 0.125808 -0.429143 +vn 0.196807 0.857621 -0.475135 +v 0.233283 0.253789 -0.096629 +vn 0.482202 0.852987 -0.199734 +v 0.246825 0.210963 -0.246829 +vn 0.478715 0.855286 -0.198290 +v 0.349066 0.210963 0.000003 +vn 0.478715 0.855286 -0.198290 +v 0.429110 0.125808 -0.177743 +vn 0.475218 0.857567 -0.196841 +v 0.096624 0.253772 0.233271 +vn 0.199649 0.853123 0.481997 +v 0.246829 0.210963 0.246825 +vn 0.198248 0.855352 0.478613 +v -0.000003 0.210963 0.349066 +vn 0.198248 0.855352 0.478613 +v 0.177743 0.125808 0.429109 +vn 0.196842 0.857566 0.475220 +v 0.233283 0.253789 -0.096629 +vn -0.000000 1.000000 0.000000 +v 0.233270 0.253789 0.096624 +vn -0.000000 1.000000 0.000000 +v 0.096624 0.253772 0.233271 +vn -0.000000 1.000000 0.000000 +v -0.233283 0.253789 0.096629 +vn -0.000000 1.000000 0.000000 +v -0.096629 0.253789 -0.233283 +vn -0.000000 1.000000 0.000000 +v -0.233270 0.253789 -0.096624 +vn -0.000000 1.000000 0.000000 +v 0.096624 0.253789 -0.233270 +vn -0.000000 1.000000 0.000000 +v -0.096624 0.253789 0.233270 +vn -0.000000 1.000000 0.000000 +v -0.341977 0.126922 0.341968 +vn -0.252462 0.836473 0.486391 +v -0.246829 0.210963 0.246825 +vn -0.252462 0.836473 0.486391 +v -0.177750 0.125808 0.429126 +vn -0.252462 0.836473 0.486391 +v -0.341977 0.126922 0.341968 +vn -0.486393 0.836475 0.252450 +v -0.429126 0.125808 0.177750 +vn -0.486393 0.836475 0.252450 +v -0.246829 0.210963 0.246825 +vn -0.486393 0.836475 0.252450 +v -0.246829 0.210963 0.246825 +vn -0.478693 0.855301 0.198276 +v -0.429126 0.125808 0.177750 +vn -0.475179 0.857593 0.196821 +v -0.349066 0.210963 -0.000003 +vn -0.478693 0.855301 0.198276 +v -0.233283 0.253789 0.096629 +vn -0.482198 0.852991 0.199728 +v -0.177750 0.125808 0.429126 +vn -0.196829 0.857593 0.475176 +v -0.246829 0.210963 0.246825 +vn -0.198270 0.855324 0.478655 +v -0.000003 0.210963 0.349066 +vn -0.198270 0.855324 0.478655 +v -0.096624 0.253789 0.233270 +vn -0.199707 0.853038 0.482125 +v -0.246829 0.210963 0.246825 +vn -0.245275 0.937904 0.245307 +v -0.233283 0.253789 0.096629 +vn -0.245275 0.937904 0.245307 +v -0.096624 0.253789 0.233270 +vn -0.245275 0.937904 0.245307 +v -0.063442 -0.185491 0.063436 +vn -0.302985 -0.770337 0.561053 +v -0.341977 0.126922 0.341968 +vn -0.302985 -0.770337 0.561053 +v -0.177750 0.125808 0.429126 +vn -0.302985 -0.770337 0.561053 +v -0.063442 -0.185491 0.063436 +vn -0.561060 -0.770336 0.302975 +v -0.429126 0.125808 0.177750 +vn -0.561060 -0.770336 0.302975 +v -0.341977 0.126922 0.341968 +vn -0.561060 -0.770336 0.302975 +# Faces (1 to 174) +g CushionCut_0 +f -172//-172 -173//-173 -174//-174 +f -173//-173 -171//-171 -174//-174 +f -168//-168 -169//-169 -170//-170 +f -165//-165 -166//-166 -167//-167 +f -162//-162 -163//-163 -164//-164 +f -159//-159 -160//-160 -161//-161 +f -160//-160 -158//-158 -161//-161 +f -155//-155 -156//-156 -157//-157 +f -156//-156 -154//-154 -157//-157 +f -151//-151 -152//-152 -153//-153 +f -148//-148 -149//-149 -150//-150 +f -149//-149 -147//-147 -150//-150 +f -144//-144 -145//-145 -146//-146 +f -141//-141 -142//-142 -143//-143 +f -138//-138 -139//-139 -140//-140 +f -135//-135 -136//-136 -137//-137 +f -136//-136 -134//-134 -137//-137 +f -131//-131 -132//-132 -133//-133 +f -132//-132 -130//-130 -133//-133 +f -127//-127 -128//-128 -129//-129 +f -124//-124 -125//-125 -126//-126 +f -125//-125 -123//-123 -126//-126 +f -120//-120 -121//-121 -122//-122 +f -117//-117 -118//-118 -119//-119 +f -114//-114 -115//-115 -116//-116 +f -111//-111 -112//-112 -113//-113 +f -112//-112 -110//-110 -113//-113 +f -107//-107 -108//-108 -109//-109 +f -108//-108 -106//-106 -109//-109 +f -103//-103 -104//-104 -105//-105 +f -100//-100 -101//-101 -102//-102 +f -101//-101 -99//-99 -102//-102 +f -96//-96 -97//-97 -98//-98 +f -97//-97 -95//-95 -98//-98 +f -92//-92 -93//-93 -94//-94 +f -93//-93 -91//-91 -94//-94 +f -88//-88 -89//-89 -90//-90 +f -85//-85 -86//-86 -87//-87 +f -84//-84 -86//-86 -85//-85 +f -81//-81 -82//-82 -83//-83 +f -80//-80 -82//-82 -81//-81 +f -77//-77 -78//-78 -79//-79 +f -74//-74 -75//-75 -76//-76 +f -74//-74 -73//-73 -75//-75 +f -72//-72 -75//-75 -73//-73 +f -69//-69 -70//-70 -71//-71 +f -69//-69 -68//-68 -70//-70 +f -65//-65 -66//-66 -67//-67 +f -62//-62 -63//-63 -64//-64 +f -59//-59 -60//-60 -61//-61 +f -58//-58 -60//-60 -59//-59 +f -55//-55 -56//-56 -57//-57 +f -52//-52 -53//-53 -54//-54 +f -49//-49 -50//-50 -51//-51 +f -48//-48 -49//-49 -51//-51 +f -45//-45 -46//-46 -47//-47 +f -46//-46 -45//-45 -44//-44 +f -41//-41 -42//-42 -43//-43 +f -40//-40 -42//-42 -41//-41 +f -37//-37 -38//-38 -39//-39 +f -36//-36 -38//-38 -37//-37 +f -33//-33 -34//-34 -35//-35 +f -32//-32 -34//-34 -33//-33 +f -29//-29 -30//-30 -31//-31 +f -29//-29 -31//-31 -28//-28 +f -31//-31 -27//-27 -28//-28 +f -28//-28 -27//-27 -26//-26 +f -25//-25 -27//-27 -31//-31 +f -24//-24 -29//-29 -28//-28 +f -21//-21 -22//-22 -23//-23 +f -18//-18 -19//-19 -20//-20 +f -15//-15 -16//-16 -17//-17 +f -15//-15 -17//-17 -14//-14 +f -11//-11 -12//-12 -13//-13 +f -12//-12 -11//-11 -10//-10 +f -7//-7 -8//-8 -9//-9 +f -4//-4 -5//-5 -6//-6 +f -1//-1 -2//-2 -3//-3 + diff --git a/Assets/Render/SpecialMaterials/JingTi/Zuan/CushionCut.obj.meta b/Assets/Render/SpecialMaterials/JingTi/Zuan/CushionCut.obj.meta new file mode 100644 index 00000000..c41dd05d --- /dev/null +++ b/Assets/Render/SpecialMaterials/JingTi/Zuan/CushionCut.obj.meta @@ -0,0 +1,96 @@ +fileFormatVersion: 2 +guid: d1c1a9b9aebc51d4f95540616902957a +ModelImporter: + serializedVersion: 19300 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 1 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + 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 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + 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 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Render/SpecialMaterials/JingTi/Zuan/CustomInspector.cs b/Assets/Render/SpecialMaterials/JingTi/Zuan/CustomInspector.cs new file mode 100644 index 00000000..e4973fda --- /dev/null +++ b/Assets/Render/SpecialMaterials/JingTi/Zuan/CustomInspector.cs @@ -0,0 +1,30 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +#if UNITY_EDITOR +using UnityEditor; +namespace DiamondRender +{ + [CustomEditor(typeof(DiamondRenderer)), CanEditMultipleObjects] + public class CustomInspector : Editor + { + + public override void OnInspectorGUI() + { + DrawDefaultInspector(); + if (GUILayout.Button("CalculateMesh")) + { + foreach (var obj in targets) + { + DiamondRenderer ed = (DiamondRenderer)obj; + ed.Setup(); + } + } + + } + + } +} +#endif + + diff --git a/Assets/Render/SpecialMaterials/JingTi/Zuan/CustomInspector.cs.meta b/Assets/Render/SpecialMaterials/JingTi/Zuan/CustomInspector.cs.meta new file mode 100644 index 00000000..a27554b1 --- /dev/null +++ b/Assets/Render/SpecialMaterials/JingTi/Zuan/CustomInspector.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bdb877c81256e154182b7da1d5fc1b08 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Render/SpecialMaterials/JingTi/Zuan/DiamondRenderer.cs b/Assets/Render/SpecialMaterials/JingTi/Zuan/DiamondRenderer.cs new file mode 100644 index 00000000..ef280f89 --- /dev/null +++ b/Assets/Render/SpecialMaterials/JingTi/Zuan/DiamondRenderer.cs @@ -0,0 +1,415 @@ + + +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +#if UNITY_EDITOR +using UnityEditor; +#endif +namespace DiamondRender +{ + + [RequireComponent(typeof(MeshFilter))] + [RequireComponent(typeof(MeshRenderer))] + [ExecuteAlways] + public class DiamondRenderer : MonoBehaviour + { + // public JewelModel model; + public Color color = new Color(1,1,1,1); + + [Range(0, 3)] + public float ColorIntensity = 1.7f; + + [Range(0, 1.5f)] + public float LightTransmission = 0.5f; + + [Range(0, 1)] + public float ColorByDepth = 0.1f; + + [Range(0,10)] + public int MaxReflection = 4; + + [Range(1, 5)] + public float RefractiveIndex = 1.6f; + // public int maxReflectionCount; + Cubemap environment; + + + public bool autoCaptureEnvironment = false; + public bool captureEnvironmentOnSetup = false; + public int captureEnvironmentSize = 512; + + + // public ReflectionProbe _reflectionProbe; + + public MaterialPropertyBlock block; + + + /* public Shader ShaderCubeMap; + public Shader ShaderReflectionProbe; */ + + // calculated + [SerializeField] + // [HideInInspector] + float scale; + [SerializeField] + // [HideInInspector] + Texture2D shapeTexture; + [SerializeField] + [HideInInspector] + int planeCount; + + Cubemap capturedEnvironment = null; + Material mat; + + float Time_; + + Vector3 MinPos; + + Vector3 MaxPos; + + [HideInInspector] + public Vector4 CentreModel; + + MeshRenderer MR; + + [HideInInspector] + public Matrix4x4 m; + + + + + private void Start() + { + + MR = GetComponent(); + + if (block == null) + { + block = new MaterialPropertyBlock(); + MR.GetPropertyBlock(block); + + } + } + + private void Enable() + { + + MR = GetComponent(); + mat = MR.sharedMaterial; + + if (block == null) + { + block = new MaterialPropertyBlock(); + MR.GetPropertyBlock(block); + + } + } + + private void Update() + { + + if(block == null) + { + block = new MaterialPropertyBlock(); + + MR.GetPropertyBlock(block); + + } + + if (MR == null) + { + MR = GetComponent(); + } + + if (mat == null) + mat = MR.sharedMaterial; + + + m = MR.worldToLocalMatrix; + + m.m03 -= CentreModel.x; + m.m13 -= CentreModel.y; + m.m23 -= CentreModel.z; + + block.SetVector("CentreModel", CentreModel); + block.SetFloat("ColorByDepth", ColorByDepth); + block.SetColor("_Color", color); + block.SetFloat("ColorIntensity", ColorIntensity); + block.SetFloat("lighttransmission", LightTransmission); + block.SetFloat("_RefractiveIndex", RefractiveIndex); + block.SetInt("_MaxReflection", MaxReflection); + block.SetMatrix("MatrixWorldToObject", m); + + if (shapeTexture != null) { + block.SetTexture("_ShapeTex", shapeTexture); + block.SetInt("_SizeX", shapeTexture.width); + block.SetInt("_SizeY", shapeTexture.height); + block.SetFloat("_Scale", scale); + block.SetInt("_PlaneCount", planeCount); + } + + MR.SetPropertyBlock(block); + + if (mat == null) + mat = MR.sharedMaterial; + + + if (autoCaptureEnvironment) + { + CaptureEnvironment(); + } + } + + + + + + [ContextMenu("Setup")] + public void Setup() + { + mat = MR.sharedMaterial; + + + AnalyzeMesh(); + + MeshRenderer mr = GetComponent(); + + if (mat == null) + mat = mr.sharedMaterial; + + block.SetTexture("_ShapeTex", shapeTexture); + block.SetInt("_SizeX", shapeTexture.width); + block.SetInt("_SizeY", shapeTexture.height); + block.SetFloat("_Scale", scale); + block.SetInt("_PlaneCount", planeCount); + + mr.SetPropertyBlock(block); + mr.material = mat; + + if (captureEnvironmentOnSetup) + { + CaptureEnvironment(); + } + } + + [ContextMenu("CaptureEnvironment")] + public void CaptureEnvironment() + { + Material m = GetComponent().sharedMaterial; + + if( m == null ) + { + Debug.LogWarning("Material is not setup yet. please do Setup first."); + return; + } + + if (capturedEnvironment == null) + { + capturedEnvironment = new Cubemap(captureEnvironmentSize, TextureFormat.ARGB32, false); + } + + Camera cameraComponent = GetComponent(); + + bool temporaryCameraComponent = false; + if (cameraComponent == null) + { + cameraComponent = gameObject.AddComponent(); + temporaryCameraComponent = true; + } + + cameraComponent.RenderToCubemap(capturedEnvironment); + + environment = capturedEnvironment; + + m.SetTexture("_Environment", capturedEnvironment); + +#if UNITY_EDITOR + if ( temporaryCameraComponent) + { + DestroyImmediate(cameraComponent); + } +#endif + } + + [ContextMenu("ApplyNumericParameters")] + public void ApplyNumericParameters() + { + Material m = GetComponent().sharedMaterial; + m.SetInt("_SizeX", shapeTexture.width); + m.SetInt("_SizeY", shapeTexture.height); + m.SetFloat("_Scale", scale); + m.SetInt("_PlaneCount", planeCount); + m.SetColor("_Color", color); + + } + + bool AnalyzeMesh() + { + Mesh sourceMesh = GetComponent().sharedMesh; + + if (sourceMesh == null) + { + return false; + } + + Vector3[] vertices = sourceMesh.vertices; + Vector3[] normals = sourceMesh.normals; + int[] indices = sourceMesh.GetIndices(0); + + + + + + MeshTopology topology = sourceMesh.GetTopology(0); + + + CentreModel = new Vector4(1, 1, 1, 1); + + MaxPos = new Vector4(-9999999, -9999999, -9999999, 1); + MinPos = new Vector4(9999999, 9999999, 9999999, 1); + + for (int i = 0; i < vertices.Length; i++) + { + if (vertices[i].x < MinPos.x) + { + MinPos.x = vertices[i].x; + } + + if (vertices[i].y < MinPos.y) + { + MinPos.y = vertices[i].y; + } + + if (vertices[i].z < MinPos.z) + { + MinPos.z = vertices[i].z; + } + + + + if (vertices[i].x > MaxPos.x) + { + MaxPos.x = vertices[i].x; + } + + if (vertices[i].y > MaxPos.y) + { + MaxPos.y = vertices[i].y; + } + + if (vertices[i].z > MaxPos.z) + { + MaxPos.z = vertices[i].z; + } + + } + + + CentreModel.x = (MaxPos.x + MinPos.x) / 2; + CentreModel.y = (MaxPos.y + MinPos.y) / 2; + CentreModel.z = (MaxPos.z + MinPos.z) / 2; + + for (int i = 0; i < vertices.Length; i++) + { + vertices[i].x = vertices[i].x - CentreModel.x; + vertices[i].y = vertices[i].y - CentreModel.y; + vertices[i].z = vertices[i].z - CentreModel.z; + } + + + scale = 0.0f; + // calc scale + for (int i = 0; i < vertices.Length; ++i) + { + // 5% margin + scale = Mathf.Max(vertices[i].magnitude * 1.05f, scale); + } + + int texSize = 4; + Color[] planes = null; + + int stride = 3; + if (topology == MeshTopology.Triangles) + { + stride = 3; + } + else if (topology == MeshTopology.Quads) + { + stride = 4; + } + else + { + // no support + Debug.LogError("unsupported mesh topology detected : " + topology.ToString()); + } + + List tmpPlanes = new List(); + + int faceCount = indices.Length / stride; + + for (int i = 0; i < faceCount; i++) + { + int index = i * stride; + + int vertIndex = indices[index]; + Vector3 primaryPosition = vertices[vertIndex]; + Vector3 primaryNormal = normals[vertIndex]; + + Color packedPlane = PackPlaneIntoColor(primaryPosition, primaryNormal, scale); + + bool duplicated = false; + foreach(Color c in tmpPlanes) + { + if( c == packedPlane ) + { + duplicated = true; + break; + } + } + + if( !duplicated ) + { + tmpPlanes.Add(packedPlane); + } + } + + planeCount = tmpPlanes.Count; + while (texSize * texSize < planeCount) + { + texSize *= 2; + } + planes = new Color[texSize * texSize]; + for( int i=0; i 1) { + // Fin.rgb = Fin.rgb * 8; + // } + + + + + return Fin; + + } + + ENDCG + } + + + + + Pass + { + Name "ShadowCaster" + Tags { "LightMode" = "ShadowCaster" } + + ZWrite On ZTest LEqual Cull Off + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma target 2.0 + #pragma multi_compile_shadowcaster + #include "UnityCG.cginc" + + + float4 CentrePivotDiamond; +float4 CentrePivotDiamond2; +float CentreIntensity; +float4x4 MatrixWorldToObject; +float4x4 MatrixWorldToObject2; +float4 CentreModel; + + struct v2f { + V2F_SHADOW_CASTER; + UNITY_VERTEX_OUTPUT_STEREO + }; + + v2f vert(appdata_base v) + { + v2f o; + UNITY_SETUP_INSTANCE_ID(v); + + float4 pos = v.vertex; + + pos.xyz = lerp(pos.xyz, (pos.xyz - CentreModel.xyz), CentreIntensity); + + o.pos = UnityObjectToClipPos(pos); + + + + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); + TRANSFER_SHADOW_CASTER_NORMALOFFSET(o) + o.pos = UnityObjectToClipPos(pos); + return o; + } + + float4 frag(v2f i) : SV_Target + { + SHADOW_CASTER_FRAGMENT(i) + } + ENDCG + } + + } + + + + + FallBack "Diffuse" +} \ No newline at end of file diff --git a/Assets/Render/SpecialMaterials/JingTi/Zuan/JewelShader.shader.meta b/Assets/Render/SpecialMaterials/JingTi/Zuan/JewelShader.shader.meta new file mode 100644 index 00000000..68b6ef3f --- /dev/null +++ b/Assets/Render/SpecialMaterials/JingTi/Zuan/JewelShader.shader.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +guid: 6aa8c547a830c6944a78a6934111b781 +ShaderImporter: + externalObjects: {} + defaultTextures: + - _ShapeTex: {instanceID: 0} + - _Environment: {fileID: 8900000, guid: 43857f64b9cb80249bfee47fc411e27d, type: 3} + - ReflectionCube: {fileID: 8900000, guid: 5fb5922f716d8d545b0c1dea1fecc2a5, type: 3} + - NormalMap: {instanceID: 0} + - _Specular: {instanceID: 0} + - DifuseMask: {instanceID: 0} + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Render/SpecialMaterials/JingTi/Zuan/JewelShaderInc.cginc b/Assets/Render/SpecialMaterials/JingTi/Zuan/JewelShaderInc.cginc new file mode 100644 index 00000000..904b87c2 --- /dev/null +++ b/Assets/Render/SpecialMaterials/JingTi/Zuan/JewelShaderInc.cginc @@ -0,0 +1,436 @@ +// Upgrade NOTE: replaced 'UNITY_PASS_TEXCUBE(unity_SpecCube1)' with 'UNITY_PASS_TEXCUBE_SAMPLER(unity_SpecCube1,unity_SpecCube0)' + + +float Test_; + +struct appdata +{ + float4 vertex : POSITION; + float3 normal : NORMAL0; + float2 uv : TEXCOORD0; + float2 uv2 : TEXCOORD1; + float2 uv3 : TEXCOORD2; + float2 uv4 : TEXCOORD3; + float2 uv5 : TEXCOORD4; + float4 Color : COLOR; + uint id : SV_VertexID; + float4 tangent : TANGENT; +}; + + + +float FresnelDispersionPower; +float FresnelDispersionScale; +float ColorByDepth; + +float CentreIntensity; +float4x4 MatrixWorldToObject; +float4x4 MatrixWorldToObject2; +float4 CentreModel; +float lightEstimation2; +float MipLevel; + +samplerCUBE _Environment; +half4 _Environment_HDR; +float FixedlightEstimation; +float ColorIntensity; +struct v2f +{ + float2 uv : TEXCOORD0; + float2 uv2 : TEXCOORD1; + float2 uv3 : TEXCOORD2; + float3 WorldBitangent : TEXCOORD3; + float3 WorldNormal : TEXCOORD4; + float4 vertex : SV_POSITION0; + float3 Pos : TEXCOORD5; + float3 Pos2 : TEXCOORD6; + float3 Normal : NORMAL0; + float4 Color : COLOR; + uint id : TEXCOORD7; + float3 worldPos : TEXCOORD8; + float4 tangent : TEXCOORD9; +}; + +// vertex shader +v2f vert (appdata v) +{ + v2f o; + UNITY_INITIALIZE_OUTPUT(v2f, o); + + float3 _worldTangent = UnityObjectToWorldDir(v.tangent); + o.tangent.xyz = _worldTangent; + float3 _worldNormal = UnityObjectToWorldNormal(v.normal); + o.WorldNormal.xyz = _worldNormal; + float _vertexTangentSign = v.tangent.w * unity_WorldTransformParams.w; + float3 _worldBitangent = cross(_worldNormal, _worldTangent) * _vertexTangentSign; + o.WorldBitangent.xyz = _worldBitangent; + + float4 pos = v.vertex; + + pos.xyz = (pos.xyz - CentreModel.xyz); + + float3 cameraLocalPos; + + cameraLocalPos = mul(MatrixWorldToObject, float4(_WorldSpaceCameraPos, 1)); + + o.Pos2 = cameraLocalPos; + + o.vertex = UnityObjectToClipPos(v.vertex); + o.uv = v.uv; + o.uv2 = v.uv2; + o.uv3 = v.uv3; + o.Pos = float4(pos.xyz, 1); + o.Normal = v.normal; + o.Color = v.Color; + o.id = v.id; + o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz; + return o; +} + + +float Dispersion; + +float DispersionLimitedAngle; + +float DispersionR; +float DispersionG; +float DispersionB; +float Brightness; +float Power; + + + +float DispersionIntensity; +sampler2D _ShapeTex; +float _Scale; +float TotalInternalReflection; +int _SizeX; +int _SizeY; +int _PlaneCount; +int _MaxReflection; + +samplerCUBE ReflectionCube; +// samplerCUBE _Environment; +// half4 _Environment_HDR; +float _RefractiveIndex; +float _RefractiveIndex_; +float _BaseReflection; +#define MAX_REFLECTION (10) + +float random(float2 st) +{ + float r = frac(sin(dot(st.xy,float2(12.9898, 78.233)))* 43758.5453123); + return r * clamp(pow(distance(r, 0.6), 2.5) * 100, 0, 1); +} + +float CalcReflectionRate(float3 normal, float3 ray, float baseReflection, float borderDot) +{ + + float normalizedDot = clamp((abs(dot(normal, ray)) - borderDot) / (1.0 - borderDot), 0.0, 1.0); + return baseReflection + (1.0-baseReflection)*pow(1.0-normalizedDot, 5); +} + + +half rgb2hsv(half3 c) +{ + half4 K = half4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); + half4 p = lerp(half4(c.bg, K.wz), half4(c.gb, K.xy), step(c.b, c.g)); + half4 q = lerp(half4(p.xyw, c.r), half4(c.r, p.yzx), step(p.x, c.r)); + + float d = q.x - min(q.w, q.y); + float e = 1.0e-10; + return abs(q.z + (q.w - q.y) / (6.0 * d + e)); +} + +float Remap(float value, float min1, float max1, float min2, float max2) +{ + return (min2 + (value - min1) * (max2 - min2) / (max1 - min1)); +} + +float4 GetUnpackedPlaneByIndex(uint index) +{ + int x_index = index % _SizeX; + int y_index = index / _SizeX; + + float ustride = 1.0 / _SizeX; + float vstride = 1.0 / _SizeY; + + float2 uv = float2((0.5+x_index)*ustride, (0.5+y_index)*vstride); + + float4 packedPlane = tex2D(_ShapeTex, uv); + +#if !defined(UNITY_COLORSPACE_GAMMA) + packedPlane.xyz = LinearToGammaSpace(packedPlane.xyz); +#endif + + float3 normal = packedPlane.xyz*2 - float3(1,1,1); // смена диапозона + + return float4(normal, packedPlane.w*_Scale); +} + + +float CheckCollideRayWithPlane(float3 rayStart, float3 rayNormalized, float4 normalTriangle) // plane - normal.xyz и normal.w - distance +{ + float dp = dot(rayNormalized, normalTriangle.xyz); + if( dp < 0 ) + { + return -1; + } + else + { + float distanceNormalized = normalTriangle.w - dot(rayStart.xyz, normalTriangle.xyz); + if( distanceNormalized < 0 ) + { + return -1; + } + return distanceNormalized / dp; + } + return -1; +} + + +void CollideRayWithPlane(float3 Pos, float PassCount, float3 rayNormalized, float4 TriangleNormal, float startSideRelativeRefraction, out float reflectionRate, out float reflectionRate2, out float3 reflection, out float3 refraction, out float HorizontalElementSquared) +{ + float3 rayVertical = dot(TriangleNormal.xyz, rayNormalized) * TriangleNormal.xyz; + reflection = rayNormalized - rayVertical*2.0; + + + float3 rayHorizontal = rayNormalized - rayVertical; + + float3 refractHorizontal = rayHorizontal * startSideRelativeRefraction ; + + float horizontalElementSquared = dot(refractHorizontal, refractHorizontal); + + float borderDot = 0; + + + if( startSideRelativeRefraction > 1.0 ) + { + borderDot = sqrt(1.0-1.0f/(startSideRelativeRefraction*startSideRelativeRefraction)); + } + else + { + borderDot = 0.0; + } + + HorizontalElementSquared = 0; + + + + HorizontalElementSquared = horizontalElementSquared /3; + if (horizontalElementSquared >= TotalInternalReflection) + { + HorizontalElementSquared = 0; + reflectionRate = 1.0; + reflectionRate2 = 1.0; + refraction = TriangleNormal.xyz; + + return; + } + + float verticalSizeSquared = 1-horizontalElementSquared; + float3 refractVertical = rayVertical * sqrt( verticalSizeSquared / dot(rayVertical, rayVertical)); + + + refraction = refractHorizontal + refractVertical; + reflectionRate = CalcReflectionRate(rayNormalized, TriangleNormal.xyz, _BaseReflection * PassCount, borderDot); + reflectionRate2 =0;// CalcReflectionRate(rayNormalized, TriangleNormal.xyz, _BaseReflection * PassCount, borderDot); + return; +} + +float3 CalcColorCoefByDistance(float distance,float4 Color) +{ + return lerp(pow(max(Color.xyz, 0.01), distance * Color.w), Color.rgb, ColorByDepth); + +} + +float4 SampleEnvironment(float3 rayLocal) +{ + float3 rayWorld = mul(unity_ObjectToWorld, float4(rayLocal, 0)); + + rayWorld = normalize(rayWorld); + + +#if _CUBEMAPMODE_CUBEMAP + float4 tex = texCUBElod(_Environment, float4(rayWorld,MipLevel)); + return float4(DecodeHDR(tex, _Environment_HDR), 1); + +#endif + +#if _CUBEMAPMODE_REFLECTIONPROBE + float4 tex = UNITY_SAMPLE_TEXCUBE_LOD(unity_SpecCube0,rayWorld, MipLevel); + return float4(DecodeHDR(tex, unity_SpecCube0_HDR), 1); +#endif + +} + +void CheckCollideRayWithAllPlanes(float3 rayStart, float3 rayDirection, out float4 hitPlane, out float hitTime) +{ + hitTime=1000000.0; + hitPlane=float4(1,0,0,1); + //[unroll(20)] + for(int i=0; i<_PlaneCount; ++i) + { + float4 plane = GetUnpackedPlaneByIndex(i); + float tmpTime = CheckCollideRayWithPlane(rayStart, rayDirection, plane); + + if(tmpTime >= -0.001 && tmpTime= 2) + { + i_Pass = 0; + + } + + if (i_Pass < 2) + { + i_Pass = 1; + + } + + + CollideRayWithPlane(rayStart, i_Pass, tmpRayDirection, hitPlane, refractiveIndex, reflectionRate,reflectionRate2, reflectionRay, refractionRay, PlaneNull); + + reflectionRates[i] = reflectionRate; + + reflectionRates2[i] = reflectionRate2; + + float3 _worldViewDir = UnityWorldSpaceViewDir(rayStart.xyz); + _worldViewDir = normalize(_worldViewDir); + + float fresnelNdotV5 = dot(tmpRayStart, _worldViewDir); + float fresnelNode5 = (FresnelDispersionScale * pow(1.0 - fresnelNdotV5, FresnelDispersionPower)); + + fresnelNode5 = 1; + + DispersionR = DispersionR * Dispersion * fresnelNode5; + DispersionG = DispersionG * Dispersion * fresnelNode5; + DispersionB = DispersionB * Dispersion * fresnelNode5; + + + float3 DispersionRay_r = lerp(refractionRay, lerp(rayEnd, refractionRay,2), DispersionR * PlaneNull); + + float3 DispersionRay_g = lerp(refractionRay, lerp(rayEnd, refractionRay, 2), DispersionG * PlaneNull); + + float3 DispersionRay_b = lerp(refractionRay, lerp(rayEnd, refractionRay, 2), DispersionB * PlaneNull); + + refractionColors3[i] = SampleEnvironment(refractionRay); + + refractionColors2[i] = 1; + + refractionColors2[i].r = SampleEnvironment(DispersionRay_r).r; + refractionColors2[i].g = SampleEnvironment(DispersionRay_g).g; + refractionColors2[i].b = SampleEnvironment(DispersionRay_b).b; + + Color.rgb = lerp(1, Color, ColorIntensity).rgb; + + depthColors[i] = float4(CalcColorCoefByDistance(hitTime, lerp(Color, 1, lerp(0, (refractionColors3[i].r + refractionColors3[i].g + refractionColors3[i].b) / 2, lighttransmission))), 1); + + refractionColors2[i] = clamp(lerp(refractionColors3[i], refractionColors2[i], DispersionIntensity),0,1); + + refractionColors[i] = SampleEnvironment(refractionRay); + + if (i == loopCount - 1) + { + reflectionRates[i] = 0.0; + reflectionRates2[i] = 0.0; + } + + tmpRayStart = tmpRayStart + tmpRayDirection * hitTime; + tmpRayDirection = reflectionRay; + } + + float4 tmpReflectionColor = float4(0, 0, 0, 0); + + for (int j = loopCount - 1; j >= 0; --j) + { + + tmpReflectionColor = lerp(refractionColors2[j], tmpReflectionColor, reflectionRates[j]) * depthColors[j]; + tmpReflectionColor = pow(tmpReflectionColor * Brightness, Power); + + } + + if (badRay > 0) + { + return float4(1, 0, 0, 1); + } + + return tmpReflectionColor; +} + + +float4 CalculateContrast(float contrastValue, float4 colorTarget) +{ + float t = 0.5 * (1.0 - contrastValue); + return mul(float4x4(contrastValue, 0, 0, t, 0, contrastValue, 0, t, 0, 0, contrastValue, t, 0, 0, 0, 1), colorTarget); +} +//曝光、饱和、对比调整颜色 +float4 ToneMap(float4 MainColor, float brightness, float Disaturate, float _max, float _min, float contrast, float Satur) +{ + fixed4 output = MainColor; + output = output * brightness; + output = CalculateContrast(contrast, output); + + float4 disatur = dot(output, float3(0.299, 0.587, 0.114)); // Desaturate + output = lerp(output, disatur, clamp(pow(((output.x + output.y + output.z) / 3) * Disaturate, 1.3), 0, 1)); + output.x = clamp(Remap(output.x, 0, 1, _min, lerp(_max, 1, 0.5)), 0, 1.5); + output.y = clamp(Remap(output.y, 0, 1, _min, lerp(_max, 1, 0.5)), 0, 1.5); + output.z = clamp(Remap(output.z, 0, 1, _min, lerp(_max, 1, 0.5)), 0, 1.5); + + output = pow(output, contrast); + + output = lerp(clamp(output, 0, _max), output, pow(_max, 4)); + + output = lerp(smoothstep(output, -0.1, 0.25), output, (1 - distance(1, _max) * 2)); + + output = lerp(dot(output, float3(0.299, 0.587, 0.114)), output, Satur); + + output = output * lerp(brightness, 1, 0.75); + + return output; + + +} \ No newline at end of file diff --git a/Assets/Render/SpecialMaterials/JingTi/Zuan/JewelShaderInc.cginc.meta b/Assets/Render/SpecialMaterials/JingTi/Zuan/JewelShaderInc.cginc.meta new file mode 100644 index 00000000..c5fdf599 --- /dev/null +++ b/Assets/Render/SpecialMaterials/JingTi/Zuan/JewelShaderInc.cginc.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: d4a4d920ed2fb7e44943172caec6ce6f +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: