上图




注意:为了避免虹膜在莫个光照角度产生平板光,需要把模型虹膜部分微微往下凹
上shader 眼睛部分和眼睛前面晶体部分是分开2个shader
眼睛部分

Shader "Hero/Eye" {Properties{//cornea角膜 //Iris虹膜  黑眼球//sclera巩膜 眼白_Lum("Luminance", Range(0, 10)) = 4_MainTex("Base (RGB)", 2D) = "white" {}_IrisColor("cornea Color", Color) = (1, 1, 1, 1)_SCCornea("Specular Color", Color) = (1, 1, 1, 1)_NormalIrisTex("NormalIrisTex (RGB)", 2D) = "white" {}_NormalIrisDetialTex("Normal Iris Detial Tex (RGB)", 2D) = "white" {}_GLCornea("gloss", Range(0, 2)) = 0.5_GLIris("Iris Gloss", Range(0, 2)) = 0.5_SPIris("Iris Specular Power", Range(1, 100)) = 20_ReflAmount("ReflAmount", Range(0, 2)) = 1_Cubemap("CubeMap", CUBE) = ""{}
}SubShader{pass{Tags{ "LightMode" = "ForwardBase" }Cull BackCGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"float _SPIris;float _Lum;float  _ReflAmount;samplerCUBE _Cubemap;float4 _LightColor0;float4 _SCCornea;float4 _IrisColor;float _GLCornea;float _GLIris;sampler2D _MainTex;sampler2D _NormalIrisTex;sampler2D _NormalIrisDetialTex;float4 _MainTex_ST;struct v2f {float4 pos : SV_POSITION;float2 uv_MainTex : TEXCOORD0;float3 lightDir : TEXCOORD1;float3 viewDir : TEXCOORD2;float3 normal : TEXCOORD3;};v2f vert(appdata_full v) {v2f o;o.pos = UnityObjectToClipPos(v.vertex);o.normal = v.normal;o.lightDir = ObjSpaceLightDir(v.vertex);o.viewDir = ObjSpaceViewDir(v.vertex);o.uv_MainTex = TRANSFORM_TEX(v.texcoord, _MainTex);return o;}#define PIE 3.1415926535   float4 frag(v2f i) :COLOR{float3 viewDir = normalize(i.viewDir);float3 lightDir = normalize(i.lightDir);float3 H = normalize(lightDir + viewDir);float3 N = normalize(i.normal);float3 c = tex2D(_MainTex, i.uv_MainTex);/**这部分是关于虹膜的漫反射颜色,只是颜色*/c=c*_IrisColor;/**这部分是计算角膜的PBR镜面反射*/float _SP;_SP =pow(8192, _GLCornea);float d = (_SP + 2) / (8 * PIE) * pow(clamp(dot(N, H),0,1), _SP);float f = _SCCornea + (1 - _SCCornea)*pow(2, -10 * dot(H, lightDir));float k = min(1, _GLCornea + 0.545);float v = 1 / (k* dot(viewDir, H)*dot(viewDir, H) + (1 - k));float SpecIns = d*f*v;/**这部分是计算虹膜和巩膜的PBR镜面反射*/float3 n2;n2 = UnpackNormal(tex2D(_NormalIrisTex, i.uv_MainTex));_SP = pow(8192, _GLIris);d = (_SP + 2) / (8 * PIE) * pow(clamp(dot(n2, H),0,1), _SP);f = _SCCornea + (1 - _SCCornea)*pow(2, -10 * dot(H, lightDir));k = min(1, _GLIris + 0.545);v = 1 / (k* dot(viewDir, H)*dot(viewDir, H) + (1 - k));float3 refDir = reflect(-viewDir, N);float3 ref = texCUBElod(_Cubemap, float4(refDir, 0.5 - _GLCornea*0.5)).rgb;float3 diff;float roughSpecIns = d*f*v;diff = dot(lightDir, UnpackNormal(tex2D(_NormalIrisDetialTex, i.uv_MainTex)));float3 roughSpec = roughSpecIns*c;return float4(c *(diff)* _Lum + roughSpec * _SPIris + SpecIns + Luminance(ref)* _ReflAmount, 1) * _LightColor0;}ENDCG}}
}

眼睛前面晶体部分

Shader "Hero/EyeCrystal" {Properties{//cornea角膜 //Iris虹膜  黑眼球//sclera巩膜 眼白_AlphaVal ("AlphaVal", Float) = 0.5_BaseColor("Base Color", Color) = (1, 1, 1, 1)_SCCornea("Specular Color", Color) = (1, 1, 1, 1)_GLCornea("gloss", Range(0, 2)) = 0.5_ReflAmount("ReflAmount", Range(0, 2)) = 1_Cubemap("CubeMap", CUBE) = ""{}
}SubShader{pass{Tags{ "LightMode" = "ForwardBase" "RenderType" = "Transparent"}Blend One OneMinusSrcAlphaCull BackCGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"float _AlphaVal;float  _ReflAmount;samplerCUBE _Cubemap;float4 _LightColor0;float4 _SCCornea;float4 _BaseColor;float _GLCornea;struct v2f {float4 pos : SV_POSITION;float2 uv_MainTex : TEXCOORD0;float3 lightDir : TEXCOORD1;float3 viewDir : TEXCOORD2;float3 normal : TEXCOORD3;};v2f vert(appdata_full v) {v2f o;o.pos = UnityObjectToClipPos(v.vertex);o.normal = v.normal;o.lightDir = ObjSpaceLightDir(v.vertex);o.viewDir = ObjSpaceViewDir(v.vertex);return o;}#define PIE 3.1415926535 float4 frag(v2f i) :COLOR{float3 viewDir = normalize(i.viewDir);float3 lightDir = normalize(i.lightDir);float3 H = normalize(lightDir + viewDir);float3 N = normalize(i.normal);/**这部分是关于虹膜的漫反射颜色,只是颜色*/float3 c=_BaseColor;/**这部分是计算角膜的PBR镜面反射*/float _SP;_SP =pow(8192, _GLCornea);float d = (_SP + 2) / (8 * PIE) * pow(clamp(dot(N, H),0,1), _SP);float f = _SCCornea + (1 - _SCCornea)*pow(2, -10 * dot(H, lightDir));float k = min(1, _GLCornea + 0.545);float v = 1 / (k* dot(viewDir, H)*dot(viewDir, H) + (1 - k));float SpecIns = d*f*v;float3 refDir = reflect(-viewDir, N);float3 ref = texCUBElod(_Cubemap, float4(refDir, 0.5 - _GLCornea*0.5)).rgb;float4 r_color = float4(c  + SpecIns + Luminance(ref)* _ReflAmount, 1) * _LightColor0 * _SCCornea;r_color.a=_AlphaVal;return r_color;}ENDCG}}
}

unity 眼球效果 eyes shader相关推荐

  1. Unity镜子效果的实现(无需镜子Shader)

    Unity镜子效果制作教程 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人! (拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享 ...

  2. unity 2020 怎么写shader使其接受光照?_如何在Unity中造一个PBR Shader轮子

    之前有业界大佬建议我去了解下Unity的PBR.说来惭愧,我查找了下资料才发现自己在这方面的知识居然是一片空白.经过几周的学习与尝试我对这一块算是有了初步的了解,于是写了这篇文章,一方面对自己学到的东 ...

  3. unity 全息和xRay shader

    unity 全息和xRay shader 这个是网上的效果,科幻的感觉是不是很强烈. 下面是我们去实现的效果. 先看下效果图,左边的是Xray的效果,右边是全息的效果.都有着异曲同工的妙处. 全息的效 ...

  4. unity性能最高的Shader:Unlit

    原文链接:http://www.jianshu.com/p/f6a0b6037ada unity性能最高的Shader: Unlit 材质分类 1.现在游戏常用材质分为PBR(Standard)和不受 ...

  5. Shader2D: 一些2D效果的Shader实现

    刚刚开源了自己积累的一些2D效果的Shader实现,项目GitHub地址.效果在下面列出,我使用的Unity版本是5.3.5p8(当前已更新到5.6.0f3),可用不低于此版本的unity打开查看.需 ...

  6. Unity 毛玻璃效果(UGUI)—高斯模糊

    因为Unity 提供了GrabPass,可以在Shader中很方便的拿到Panel下面的图像,即_GrabTexture. 注:添加优化.原本的搞死模糊效果达不到苹果的那种细腻效果,修改参数即可. 修 ...

  7. Unity 性能最高的Shader: Unlit

    材质分类 1.现在游戏常用材质分为PBR(Standard)和不受光材质(Unlit). 2.次世代游戏用的是PBR材质,其中最基本的是4张贴图:颜色贴图,Normal贴图,AO贴图,高光贴图. 3. ...

  8. 在3dmax里仿unity的Unlit/Texture shader并渲染

    在3dmax里实现unity的texture shader并渲染 3dsmax版本:2019 首先感谢这位大哥的 Unity与3DMax效果同步--3DMaxDX Shader:https://zhu ...

  9. unity HLSL 面片火焰Shader V0.2

    目的: 比上一个版本更好的做法 [上一个版本](https://blog.csdn.net/qq_45253770/article/details/122034252?spm=1001.2014.30 ...

最新文章

  1. Redis Pub/Sub (Java)
  2. java jdbc数据库五种连接方式
  3. C语言给出任意4个数算24点,讨论24点算法。
  4. VC消息传递(对话框间传递参数)
  5. 最受白领欢迎的12大办公软件
  6. windows安装rockmongo的步骤
  7. Linux FrameBuffer操作(二十七)
  8. 拟阵论 贪心策略的数学基础
  9. 2016年WiFi行业技术发展趋势解析
  10. mysql group by 用法解析(详细)
  11. 冲量在线荣获STIF2021国际科创节2021年度技术先锋奖
  12. 项目管理之敏捷开发之道
  13. Google浏览器任务栏图标变白
  14. echarts自定义legend图例和tooltip默认提示文字
  15. 计算机术语中ict表示是什么意思,ICT是什么工作
  16. fedora11上安装fcitx
  17. 阿里云ECS之下载与安装SSH(二)
  18. JAVA 中级 ARRAYLIST - ARRAYLIST上使用泛型
  19. 【树链剖分】【模板】树的统计(P2590)
  20. 高中二年级计算机会考吉大附中,长春小学、初中、高中期末考试时间大曝光

热门文章

  1. [置顶]R语言 ggplot2包
  2. 深度学习之目标检测(Swin Transformer for Object Detection)
  3. 国家电网计算机专业考试科目,2019国家电网考试科目:你的专业都考什么?
  4. 推荐5款体验较好的团队协作工具
  5. 理解 B 树、B+ 树特点及使用场景
  6. 研究生的压力应对与心理健康期末考试答案
  7. ACM-ICPC 2018 南京赛区网络预赛 - AC Challenge(状压DP)
  8. 天下国家之事,败于小人者十一,败于君子者十九(转)
  9. 已解决AttributeError: module ‘tkinter‘ has no attribute ‘TK
  10. 从博士生论文选题看威客理论研究最新进展