Shader "Unlit/cubecap"
{//cubecapProperties{_NormalMap("法线贴图", 2D) = "bump" {}_Cubemap("环境贴图", Cube) = "_Skybox" {}_MidMapLevel("贴图模糊度", Range(0, 7)) = 1.227742_fresnelpow("菲涅尔强度", Range(0, 1)) = 1_env("env", Range(0, 5)) = 1.93491}SubShader{Tags {"RenderType" = "Opaque"}Pass {Name "FORWARD"Tags {"LightMode" = "ForwardBase"}CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"#pragma multi_compile_fwdbase_fullshadows#pragma target 3.0//输入参数uniform samplerCUBE _Cubemap;uniform sampler2D _NormalMap;uniform float _MidMapLevel;uniform float _fresnelpow;uniform float _env;//输入结构struct VertexInput {float4 vertex : POSITION;float3 normal : NORMAL;float4 tangent : TANGENT;float2 uv0 : TEXCOORD0;};//输出结构struct VertexOutput {float4 pos : SV_POSITION;float2 uv0 : TEXCOORD0;float3 nDirWS : TEXCOORD1;float3 tDirWS : TEXCOORD2;float3 bDirWS : TEXCOORD3;float3 posWS : TEXCOORD4;};//顶点shaderVertexOutput vert(VertexInput v) {VertexOutput o = (VertexOutput)0;o.uv0 = v.uv0;o.nDirWS = UnityObjectToWorldNormal(v.normal);o.tDirWS = normalize(mul(unity_ObjectToWorld, float4(v.tangent.xyz, 0.0)).xyz);o.bDirWS = normalize(cross(o.nDirWS, o.tDirWS) * v.tangent.w);o.pos = UnityObjectToClipPos(v.vertex);o.posWS = mul(unity_ObjectToWorld,v.vertex);return o;}//像素shaderfloat4 frag(VertexOutput i) : COLOR{//向量准备float3  nDirTS = UnpackNormal(tex2D(_NormalMap, i.uv0)).rgb;float3x3 tbn = float3x3(i.tDirWS, i.bDirWS, i.nDirWS);float3 nDirWS = normalize(mul(nDirTS, tbn));float3 vDirWS = normalize(_WorldSpaceCameraPos.xyz - i.posWS.xyz);float3 vrDirWS = reflect(-vDirWS, nDirWS);//中间量准备float ndotv = dot(nDirWS,vDirWS);//光照模型float3 cubemap = texCUBElod(_Cubemap,float4(vrDirWS, _MidMapLevel) );float fresnel = pow(1.0 - ndotv, _fresnelpow);float3 envSpcLighting = cubemap * fresnel * _env;//返回值return fixed4(envSpcLighting,1);}ENDCG}}FallBack "Diffuse"
}

效果实现:

Unity中简单的cubecap+fresnel shader的实现相关推荐

  1. Unity中简单的matcap+fresnel shader的实现

    Shader "Unlit/matcap"{//matcapProperties{_NormalMap("法线贴图", 2D) = "bump&quo ...

  2. unity中简单的血条自作

    unity中制作血条有很多方法,多数用NGUI:这里我就说说一个简单的血条制作方法吧: 这个血条制作不像NGUI一样,它是靠一段代码就可以实现的,但看起来比较效果比较差,还是看代码吧: public ...

  3. 在Unity中简单地制作一张2D地图并随机生成资源

    这个作业属于哪个课程 软件工程2022年春-F班 这个作业要求在哪里 软件工程实践总结&个人技术博客 这个作业的目标 课程回顾.个人技术总结 其他参考文献 <构建之法> 目录 一. ...

  4. 【unity游戏开发教程】Unity+Umotion Pro+VRoid+Blender制作人物模型和动画,在unity中简单制作二次元人物动画

    前言 大家好!本期教程教大家在unity中制作二次元人物模型和动画 文章目录 前言 0.环境准备 1.下载VRoid Studio 2.Umotion Pro下载 3.Mixamo网站 4.blend ...

  5. Unity中简单粗暴的消息机制(可限制消息调用次数)

    上代码 /********************************************************文件: EasyMsg.cs作者: 阿飞日期: 2022年02月15日_09: ...

  6. Unity中简单冲刺技能,加技能图标倒计时UI制作

    首先,在Canvas下创建一个image1,改名 然后把image1的source image换成技能图片,或者随便一张图片都行 接着,在image1下创建子类image2 接着,按照下面图片调整 s ...

  7. [Unity] Unity中实现羽化功能的shader

    GLSL->ShaderLab,原GLSL代码来自http://blog.csdn.net/panda1234lee/article/details/52199296, 由于shaderLab的 ...

  8. 【Unity3D Shader编程】之五 圣诞夜篇 Unity中Shader的三种形态对比 混合操作合辑

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 本系列文 ...

  9. Unity Shader入门精要学习笔记 - 第6章 开始 Unity 中的基础光照

    转自冯乐乐的<Unity Shader入门精要> 通常来讲,我们要模拟真实的光照环境来生成一张图像,需要考虑3种物理现象. 首先,光线从光源中被发射出来. 然后,光线和场景中的一些物体相交 ...

最新文章

  1. 【新周报(051)】Datawhale组队学习
  2. 敏捷开发和测试中重现缺陷和验证缺陷的解决方案(2)
  3. 电压放大倍数公式运放_运放电路:同相放大还是反相放大?
  4. 【linux】kill命令模板
  5. k8s资源控制(污点和容忍)
  6. sleep 与 wait 区别
  7. 网易2016年研发project师编程题(2)
  8. 如果人民币贬值,对股市会有什么影响?
  9. 设计模式笔录(一),什么是设计模式
  10. 车牌识别用php算法,车牌识别算法实现及其代码实现之一:车牌区域检测
  11. 清明上河图30亿像素_清明上河图高清下载|
  12. 使用webpack搭建vue项目;webpack+vue
  13. android_5.0简介
  14. 德拜方程及matlab实现
  15. 计算机视觉的终极目标
  16. Win10-更改c盘下的用户文件夹名
  17. 使用JNI造成安卓应用闪退
  18. SQL Server-设置局域网内访问
  19. python数据分析(三)——pandas缺失值处理
  20. wcf 基础知识 之 消息交换模式 response/reply oneway deplex

热门文章

  1. 交换机连接两个网段进行通信
  2. 国庆看了长津湖 | 坚韧的毅力让我拿到了薪资18.5K,人生就像马拉松,坚持到最后,就是胜利者
  3. sleep()和wait()方法有什么区别
  4. 回溯算法模板之:332. 重新安排行程
  5. OracleRMAN备份与恢复之二:数据恢复
  6. BeeWare开发安卓app科目三灯光模拟器
  7. 直布罗陀将制定全球首个ICO监管法案
  8. 【算法与数据结构】—— 博弈论(初级篇之巴什博弈)
  9. 直线回归和相关------(一)回归和相关的概念与直线回归(含最小二乘推导)
  10. BrainNet Viewer 索引超出矩阵维度