Unity shader 初学 玻璃透明效果

2023-11-07

Properties
	{
		_BumpMap("BumpMap",2D)="Bump"{}
		_CubeMap("CubeMap",Cube)=""{}

		_Dist("Dist",range(0,100))=0
		_Amount("Amount",range(0,1))=0

	}
	SubShader
	{
		Tags { "Queue"="Transparent" }

		GrabPass
		{
			"_GrabTex1"
		}

		Pass
		{
			CGPROGRAM
			#pragma vertex vert
			#pragma fragment frag
			
			#include "Lighting.cginc"

			sampler2D _BumpMap;
			float4 _BumpMap_ST;

			sampler2D _GrabTex1;
			float4 _GrabTex1_TexelSize;

			samplerCUBE _CubeMap;

			float _Dist;
			float _Amount;

			struct appdata
			{
				float4 vertex : POSITION;
				float2 uv : TEXCOORD0;
			};

			struct v2f
			{
				float4 vertex : SV_POSITION;
				float2 uv : TEXCOORD0;
				float3 tbn[3] : TEXCOORD1;
				float3 worldPos : TEXCOORD4;
				float4 scrPos : TEXCOORD5;
			};

			v2f vert (appdata_full v)
			{
				v2f o;
				o.vertex = UnityObjectToClipPos(v.vertex);
				o.uv = TRANSFORM_TEX(v.texcoord,_BumpMap);
				o.worldPos=mul(unity_ObjectToWorld,v.vertex).xyz;
				o.scrPos=ComputeGrabScreenPos(o.vertex);

				float3 worldNormal=UnityObjectToWorldNormal(v.normal);
				float3 worldTangent=UnityObjectToWorldNormal(v.tangent);
				float3 bitangent=cross(worldTangent,worldNormal);

				o.tbn[0]=worldTangent;
				o.tbn[1]=bitangent;
				o.tbn[2]=worldNormal;

				return o;
			}
			
			fixed4 frag (v2f i) : SV_Target
			{
				fixed3 worldViewDir=normalize(UnityWorldSpaceViewDir(i.worldPos));
				fixed3 bump=UnpackNormal(tex2D(_BumpMap,i.uv.xy));

				
				fixed2 offset=bump*_GrabTex1_TexelSize*_Dist;
				i.scrPos.xy=(offset+i.scrPos.xy)/i.scrPos.w;
				fixed3 refrColor=tex2D(_GrabTex1,i.scrPos.xy).rgb;

				bump=normalize(float3(i.tbn[0]*bump.r+i.tbn[1]*bump.g+i.tbn[2]*bump.b));
				fixed3 reflDir=reflect(-worldViewDir,bump);

				
				fixed3 reflColor=texCUBE(_CubeMap,reflDir).rgb;

				fixed3 color=lerp(reflColor,refrColor,_Amount);
				return fixed4(color,1.0);
			}


			ENDCG
		}
	}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Unity shader 初学 玻璃透明效果 的相关文章

  • FBX导入Unity中模型没有材质的处理

    一 3dMax导出FBX时的注意事项 导出时 确保maps文件存在 里面放着fbx用到的image 二 在Unity中的设置 1 文件拖入Unity的Assets文件夹中 2 查看模型的材质是否存在 如下所示 材质为None 此时拖入sce
  • Unity中按钮检测鼠标状态

    改方法主要是用于按钮检测鼠标的进入 滑出 点击 抬起 长按 长按停止 1 先将下面这个脚本挂载到需要检测鼠标状态的按钮上 using System Collections using System Collections Generic u
  • Unity中实现倒计时的几种方式

    1 Time time using UnityEngine public class TimeTest MonoBehaviour public float secound 10 void Update Timing private flo
  • Unity中UI框架的使用1-添加面板、显示Loading页面

    其中BasePanel和Canvas都是挂在面板的预制物上的 1 导入我们的UI框架 本篇文章中有用的是两个UIPanelType NUIManager和NBasePanel 会放在文章最后供大家使用 2 先将我们做好的Panel设置成预制
  • Unity 键盘控制人物移动——之输入方式代码的编写

    键盘输入 控制人物移动 在我们制作游戏中最常见的需求之一就是使用键盘移动游戏角色 那么我们首先需要获取键盘输入 以下提供两种方法获取键盘 这里尽量通过截图解释让大家理解代码的含义 GetInput void FixedUpdate Move
  • Unity打开工程时卡住的问题

    自从Unity升级了一个版本后 Unity打开工程卡住的问题越来越严重了 具体表现为 选择工程后 Unity窗口消失 但进程还在 有时候等个几分钟能出来 有时候等10分钟都不见得能出来 直观感受上看 似乎是Unity加载工程的时候某一步卡了
  • unity3d大型互动照片墙

    1 本次应客户需求 制作一个大型照片墙互动 输出分辨率为9600 4320 注 unity3d官方推荐最大分辨率为8192 3686 4 经过现场长达24小时暴力测试中途未发生问题 姑且判定可以达到正常标准 废话不多说 先上效果 unity
  • Unity打包WebGL的优化常用操作?

    1 贴图部分优化 如果贴图格式时2048 在不影响画面效果的情况下 改成1024或者5 12 还可以缩小包体 2 压缩和解压缩问题 WebGL打包的时候分三种压缩情况 gzip 比Brotli文件打 但打包快 http和https都支持 B
  • 【Unity步步升】监控与检测物体的各种方案,如:射线、碰撞、挂载等...

    在制作AR模型数值控制方案的时候遇到了检测的问题 学习过程受益匪浅 故今天为大家整理带来一篇监控与检测物体的参考方案集合 目录 一 射线检测 二 物体存在检测 三 碰撞检测 一 射线检测 单射线检测 首先完成搭建场景如下图1 1 我这里用到
  • Unity万向节死锁解决方案(2023/12/4)

    1 万向节死锁无法解决 这是因为它的特性就是如此 就像玻璃杯就是玻璃 这不可否认 别钻牛角尖昂 2 大多数情况下欧拉角足够用 例如 CF 摄像机不可能绕z轴旋转 x轴旋转也不会超过九十度 因为那样人物的腰子会被扭断 塔防游戏 保卫萝卜 吃鸡
  • unity3d image组件不显示

    需要将UI组件放到画布下面
  • 【UE】制作物体逐渐溶解消失并且可以复原的效果

    效果 步骤 1 新建一个工程 创建一个Basic关卡 添加第三人称游戏和初学者内容包资源到内容浏览器 2 找到并打开初学者内容包中椅子的材质 M Chair 将混合模式改为 已遮罩 在材质图表中添加如下节点 此时我们就可以通过参数 Fade
  • 【UE】制作熔岩星球材质

    效果 步骤 1 新建一个工程 创建一个Basic关卡 添加第三人称游戏和初学者内容包资源到内容浏览器 2 新建一个材质 这里命名为 M Sun 打开 M Sun 添加两个Texture节点 纹理分别为 T Rock Basalt N 和 T
  • Unity学习笔记

    一 旋转欧拉角 四元数 Vector3 rotate new Vector3 0 30 0 Quaternion quaternion Quaternion identity quaternion Quaternion Euler rota
  • Unity中URP下的指数雾

    文章目录 前言 一 指数雾 雾效因子 1 FOG EXP 2 FOG EXP2 二 MixFog 1 ComputeFogIntensity 雾效强度计算 2 lerp fogColor fragColor fogIntensity 雾效颜
  • U3D游戏开发中摇杆的制作(UGUI版)

    在PC端模拟摇杆 实现玩家通过控制摇杆让玩家移动 以下是完整代码 using System Collections using System Collections Generic using UnityEngine using Unity
  • 游戏开发常见操作梳理之NPC任务系统

    多数游戏存在任务系统 接下来介绍通过NPC触发任务的游戏制作代码 using System Collections using System Collections Generic using UnityEngine
  • 游戏开发常见操作梳理系列之——玩家信息的显示系统

    在游戏中 有不少游戏在左上角会出现玩家的头像和等级以及血量 这就是玩家的信息显示系统 那么这些是如何制作的呢 接下来我将讲讲代码的操作 其它操作我会在其它笔记中一一说明 敬请期待 信息的显示相当简单就是控制一些UI 然后在其它系统里面填写相
  • 游戏开发常见操作梳理之NPC药品商店系统(NGUI版)

    后续会出UGUI Json的版本 敬请期待 游戏开发中经常会出现药品商店 实际操作与武器商店类似 甚至根据实际情况可以简化设置 废话不多说 直接上代码 药品商店的源码 using System Collections using Syste
  • 游戏开发之常见操作梳理——武器装备商店系统(NGUI版)

    游戏开发中经常出现武器商店 接下来为你们带来武器装备商店系统的具体解决办法 后续出UGUI Json版本 敬请期待 武器道具的具体逻辑 using System Collections using System Collections Ge

随机推荐

  • 多线程(四)线程的状态及生命周期

    目录 一 线程的状态 新建 初始 就绪 可运行 运行 阻塞 死亡 二 线程的状态转移 NEW RUNNABLE TERMINATED 状态的转移 yield 方法 让出 CPU执行权 三 线程的生命周期 一 线程的状态 NEW 安排了工作
  • Redis数据类型-hash

    一 概述 Redis中hash类型可以具有String key和String value的map容器 所以该类型非常适合存储值对象的信息 如username password和age等 如果hash中包含很少的字段 那么该类型的数据也将仅占
  • 华为无盘服务器,无盘服务器操作系统

    无盘服务器操作系统 内容精选 换一换 本节操作介绍购买云耀云服务器的操作步骤 购买时 为减少您配置参数的时间 部分参数由系统自动分配 以下参数配置供你了解系统的默认配置 购买云耀云服务器仅支持 包年 包月 的计费方式 请您在购买前确保已完成
  • Web实现前后端分离,前后端解耦

    点击上方 Java之间 选择 置顶或者星标 你关注的就是我关心的 作者 山河远阔 来源 https blog csdn net weixin 37539378 article details 79956760 上一篇 面试官 数据量很大 分
  • 蜗牛君漫聊动态布局框架(二):核心功能的思路与实现

    Hello 大家好 我是蜗牛君 我们又见面了 本篇文章是蜗牛君漫聊动态布局框架的第二篇 上一篇中我们讲解了框架的大致思路 以及复习了一下RecyclerView的基础使用方式 那么本篇文章我们就正式开始框架的搭建了 首先我们要做一件事情 就
  • Python出现Could not find a version that satisfies the requirement openpyxl (from versions: )

    一 环境使用python3 7时 用pip安装openpyxl出现如下错误 系统环境 windows10家庭版Python版本 python3 7 1IDE sublime text 3二 解决方案按照提示所示是其中一个原因是pip版本过低
  • GPU对应的cuda以及cuDNN驱动安装

    cudnn 临时个性化版本切换 https blog csdn net sslfk article details 123053540 1 查看自己的cuda 最高支持的版本 查看方法 sudo cat usr local cuda ver
  • Spring到底是一个什么东西呢?

    转自 Spring到底是一个什么东西呢 Spring 自面世以来 一直深受大家的喜爱 它延申出很多优秀的框架 如 Spring framework SpringMVC SpringBoot Spring Cloud Spring Data
  • 那些会阻碍程序员成长的细节[5]

    全文共 1304字 预计阅读时间 4分钟 断断续续的写成一个系列 也出乎我的意料 越展开内容越多 有点收不住 Let s 继续吧 进入主题 不依规范行事 这个很常见 嘴上一套 行动时另一套 也就是知行不一 实际是知易行难 不自我监督 不自我
  • (四)RTL级低功耗设计

    前面介绍了系统级的低功耗设计 换句话说就是在系统级降低功耗可以考虑的方面 系统级的低功耗设计 主要是由系统级设计 具有丰富经验的人员实现 虽然还轮不到我们设计 我们了解一下还是比较好的 我们前端设计人员的重点不在系统级设计上面 而是在RTL
  • webapi添加html页面,webApi添加视图出现/Index.cshtml”处的视图必须派生自 WebViewPage 或 WebViewPage。...

    是因为webApi Views文件夹下缺乏web config文件 从mvc项目相同目录拷贝一个web Config文件放入 删除多余的namespaces 即可 web config配置如下 Index period cshtml 处的视
  • 零基础玩转树莓派(四)—GPIO端口控制(LED灯)

    一 GPIO介绍 树莓派3B 和普通电脑不一样的地方在于它还带了40个可编程的GPIO General Purpose Input Output 可以用来驱动各种外设 如传感器 步进电机等 GPIO General Purpose I O
  • Markdown学习

    标题 Hello world hello world 引用 选择java走向人生巅峰 格式 gt 回车 分割线 回车 图片 图片名字 超链接 格式 链接名字 点击跳转4399游戏 列表 有序列表 格式 数字 空格 无序列表 格式 空格 表格
  • 移植OpenHarmony 3.0到ARM单片机

    9月30日 OpenHarmony 3 0 LTS版本发布 本文将介绍如何移植OpenHarmony 3 0到星空派开发板上 1 星空派开发板介绍 星空派 GD 开发板是由旗点科技推出的一款GD32开发板 板载GD32F303ZET6芯片
  • Linux终端打印

    student myhost echo h h h h h h student myhost echo h h h h h h student myhost echo h h h h h h 我们可以看到echo命令执行完后自带一个换行符并
  • 相关滤波跟踪(MOSSE)

    相关滤波跟踪 MOSSE 在信号处理中 有这么一个概念 相关性 correlation 用来描述两个因素之间的联系 而相关性又分为cross correlation 互相关 两个信号之间的联系 和auto correlation 自相关 本
  • 拍档的快速排序怎么写?

    我可以提供一个快速排序的算法 1 选择一个基准元素 2 遍历数组 将小于基准元素的放入一个新的数组中 将大于基准元素的放入另一个新的数组中 3 递归地 recursively 对小于基准元素的数组和大于基准元素的数组进行排序 4 将排序后的
  • 用jquery插件实现自动添加用户

  • Android-CheckBox和RadioButton调整间距(有坑,注意)

    经常遇到设计师要求button部分和文字的添加间距 总结以下几种方式吧 修改button素材 将button素材周围添加透明区域 缺点 增大图片素材 间距不好控制 文字部分增加空格 缺点 虽然控制相对方便 但是还是受限于字体的样式和大小对于
  • Unity shader 初学 玻璃透明效果

    Properties BumpMap BumpMap 2D Bump CubeMap CubeMap Cube Dist Dist range 0 100 0 Amount Amount range 0 1 0 SubShader Tags