有个unity类似于水晶球的效果如下:
原版的shader各个方向看都是这个样子
想转成cocos的effect 用的默认的effect:builtin-unlit,结果不管怎么调都感觉纹路不对

个人对与着色器部分确实比较欠缺,有没有大佬帮助一下
附上模型和贴图
res.zip (80.3 KB)
有个unity类似于水晶球的效果如下:

人工置顶!
原版unity shader代码如下:
Shader “Custom/CrystalBall”
{
Properties
{
_Color ("Color", Color) = (1,1,1,1)
_MatcapTex ("Matcap Texture", 2D) = "white" {}
// _MatcapIntensity (“Mapcap Intensity”, Range(0, 1)) = 0
// _Pow (“Power”, Range(0.1, 8)) = 3
}
SubShader
{
Tags {
"Queue"="Transparent"
"IgnoreProjector"="True"
"RenderType"="Transparent"
}
LOD 100
ZWrite Off
Lighting Off
Blend SrcAlpha OneMinusSrcAlpha
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma target 2.0
#include "UnityCG.cginc"
float4 _Color;
sampler2D _MatcapTex;
// float _MatcapIntensity;
// float _Pow;
struct appdata
{
float4 vertex : POSITION;
float3 normal : NORMAL;
};
struct v2f
{
float4 vertex : SV_POSITION;
float3 normal : TEXCOORD0;
// float3 viewDir : TEXCOORD1;
};
v2f vert(appdata v)
{
v2f OUT;
// OUT.viewDir = ObjSpaceViewDir(v.vertex);
// OUT.normal = v.normal;
OUT.normal = mul( unity_ObjectToWorld, float4(v.normal, 0) );
OUT.vertex = UnityObjectToClipPos(v.vertex);
return OUT;
}
half4 frag (v2f i) : SV_Target
{
// float3 viewDir = normalize(i.viewDir);
float3 normal = normalize(i.normal);
// float nv = saturate(dot(viewDir, normal));
half2 matUV = mul((float3x3)UNITY_MATRIX_V, normal).xy * 0.5 + 0.5;
half4 matcap = tex2D(_MatcapTex, matUV) * _Color /** _MatcapIntensity*/;
return matcap;
// return half4(_Color.rgb, pow(1 - nv, _Pow));
}
ENDCG
}
}
FallBack "Diffuse"
}
somebody help me
人工置顶!