unity 眼球效果 eyes shader
上图
注意:为了避免虹膜在莫个光照角度产生平板光,需要把模型虹膜部分微微往下凹
上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相关推荐
- Unity镜子效果的实现(无需镜子Shader)
Unity镜子效果制作教程 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人! (拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享 ...
- unity 2020 怎么写shader使其接受光照?_如何在Unity中造一个PBR Shader轮子
之前有业界大佬建议我去了解下Unity的PBR.说来惭愧,我查找了下资料才发现自己在这方面的知识居然是一片空白.经过几周的学习与尝试我对这一块算是有了初步的了解,于是写了这篇文章,一方面对自己学到的东 ...
- unity 全息和xRay shader
unity 全息和xRay shader 这个是网上的效果,科幻的感觉是不是很强烈. 下面是我们去实现的效果. 先看下效果图,左边的是Xray的效果,右边是全息的效果.都有着异曲同工的妙处. 全息的效 ...
- unity性能最高的Shader:Unlit
原文链接:http://www.jianshu.com/p/f6a0b6037ada unity性能最高的Shader: Unlit 材质分类 1.现在游戏常用材质分为PBR(Standard)和不受 ...
- Shader2D: 一些2D效果的Shader实现
刚刚开源了自己积累的一些2D效果的Shader实现,项目GitHub地址.效果在下面列出,我使用的Unity版本是5.3.5p8(当前已更新到5.6.0f3),可用不低于此版本的unity打开查看.需 ...
- Unity 毛玻璃效果(UGUI)—高斯模糊
因为Unity 提供了GrabPass,可以在Shader中很方便的拿到Panel下面的图像,即_GrabTexture. 注:添加优化.原本的搞死模糊效果达不到苹果的那种细腻效果,修改参数即可. 修 ...
- Unity 性能最高的Shader: Unlit
材质分类 1.现在游戏常用材质分为PBR(Standard)和不受光材质(Unlit). 2.次世代游戏用的是PBR材质,其中最基本的是4张贴图:颜色贴图,Normal贴图,AO贴图,高光贴图. 3. ...
- 在3dmax里仿unity的Unlit/Texture shader并渲染
在3dmax里实现unity的texture shader并渲染 3dsmax版本:2019 首先感谢这位大哥的 Unity与3DMax效果同步--3DMaxDX Shader:https://zhu ...
- unity HLSL 面片火焰Shader V0.2
目的: 比上一个版本更好的做法 [上一个版本](https://blog.csdn.net/qq_45253770/article/details/122034252?spm=1001.2014.30 ...
最新文章
- Redis Pub/Sub (Java)
- java jdbc数据库五种连接方式
- C语言给出任意4个数算24点,讨论24点算法。
- VC消息传递(对话框间传递参数)
- 最受白领欢迎的12大办公软件
- windows安装rockmongo的步骤
- Linux FrameBuffer操作(二十七)
- 拟阵论 贪心策略的数学基础
- 2016年WiFi行业技术发展趋势解析
- mysql group by 用法解析(详细)
- 冲量在线荣获STIF2021国际科创节2021年度技术先锋奖
- 项目管理之敏捷开发之道
- Google浏览器任务栏图标变白
- echarts自定义legend图例和tooltip默认提示文字
- 计算机术语中ict表示是什么意思,ICT是什么工作
- fedora11上安装fcitx
- 阿里云ECS之下载与安装SSH(二)
- JAVA 中级 ARRAYLIST - ARRAYLIST上使用泛型
- 【树链剖分】【模板】树的统计(P2590)
- 高中二年级计算机会考吉大附中,长春小学、初中、高中期末考试时间大曝光
热门文章
- [置顶]R语言 ggplot2包
- 深度学习之目标检测(Swin Transformer for Object Detection)
- 国家电网计算机专业考试科目,2019国家电网考试科目:你的专业都考什么?
- 推荐5款体验较好的团队协作工具
- 理解 B 树、B+ 树特点及使用场景
- 研究生的压力应对与心理健康期末考试答案
- ACM-ICPC 2018 南京赛区网络预赛 - AC Challenge(状压DP)
- 天下国家之事,败于小人者十一,败于君子者十九(转)
- 已解决AttributeError: module ‘tkinter‘ has no attribute ‘TK
- 从博士生论文选题看威客理论研究最新进展