学习100个Unity Shader (17) --- 深度纹理

文章目录

  • 效果
  • shader部分
  • C# 部分
  • 理解
  • 参考

效果

在这里插入图片描述

shader部分

Shader "Example/DepthTexture"
{SubShader{Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"sampler2D _CameraDepthTexture;struct a2v{float4 pos : POSITION;float2 uv : TEXCOORD0;};struct v2f{float4 pos : POSITION;float2 uv : TEXCOORD0;};v2f vert (a2v i){v2f o;o.pos = UnityObjectToClipPos(i.pos);o.uv = i.uv;return o;}fixed4 frag (v2f i) : SV_Target{float depth = SAMPLE_DEPTH_TEXTURE(_CameraDepthTexture, i.uv);depth = Linear01Depth(depth);return fixed4(depth, depth, depth, 1);}ENDCG}}FallBack "Diffuse"
}

C# 部分

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class DepthTexture : MonoBehaviour {}
{public Shader depthTextureShader;private Material depthTextureMaterial = null;public Material material{get{depthTextureMaterial = new Material(depthTextureShader);return depthTextureMaterial;}}void OnEnable(){Camera cam = GetComponent<Camera>();cam.depthTextureMode |= DepthTextureMode.Depth;}void OnDisable(){Camera cam = GetComponent<Camera>();cam.depthTextureMode &= ~DepthTextureMode.Depth;}void OnRenderImage(RenderTexture src, RenderTexture dest){if (material != null){Graphics.Blit(src, dest, material);}else{Graphics.Blit(src, dest);}}}

理解

在Unity中,通过摄像机生成一个深度纹理,属于后处理,获取深度纹理通过在C#中cam.depthTextureMode = DepthTextureMode.Depth;实现。在Shader中,通过_CameraDepthTexture访问深度纹理,然后再使用SAMPLE_DEPTH_TEXTURE用当前像素的纹理坐标对深度纹理进行采样。Linear01Depth(i)通过深度纹理 i 给出高精度值时,返回相应的线性深度,范围在 0 到 1 之间。C#脚本需要挂在相机上。

参考

Unity 内置宏
《Unity Shader入门精要》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/681658.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

商务分析方法与工具(六):Python的趣味快捷-字符串巧妙破解密码本、身份证号码、词云图问题

Tips&#xff1a;"分享是快乐的源泉&#x1f4a7;&#xff0c;在我的博客里&#xff0c;不仅有知识的海洋&#x1f30a;&#xff0c;还有满满的正能量加持&#x1f4aa;&#xff0c;快来和我一起分享这份快乐吧&#x1f60a;&#xff01; 喜欢我的博客的话&#xff0c;记得…

二本生如何从大一准备考研!?保姆级全攻略

如果是二本大学&#xff0c;那考研确实是一个很好的机会 如果大家就有考研的打算&#xff0c;那就好好学习&#xff0c;好好学习英语&#xff0c;数学&#xff08;理工科&#xff09;和专业课&#xff0c;这些课程在考研的时候是肯定会考的 特别是英语和数学&#xff08;理工…

盘点企业信息防泄密软件对比|揭秘企业信息防泄密软件好用榜

在当今信息化社会&#xff0c;企业信息防泄密软件的需求日益凸显。这些软件不仅关乎企业的核心竞争力&#xff0c;更直接关系到企业的生死存亡。本文将对市面上几款主流的企业信息防泄密软件进行深入对比分析&#xff0c;以期为企业提供有益的参考。 一、企业信息防泄密软件好…

小程序开发之tdesignUI组件的简易使用教程

文章目录 TDesign简介小程序端使用TDesign一、安装二、使用可能的问题 附&#xff1a;如何使用weui开发参考链接 TDesign简介 TDesign 是腾讯各业务团队在服务业务过程中沉淀的一套企业级设计体系。 该UI框架支持桌面端、移动端、小程序端等全端。 小程序端使用TDesign 开发…

重学java 31.API 2.StringBuilder

总有一天&#xff0c;我不再畏惧任何人的离开 —— 24.5.8 StringBuilder的介绍 1.概述 一个可变的字符序列,此类提供了一个与StringBuffer兼容的一套API&#xff0c;但是不保证同步&#xff08;线程不安全&#xff0c;效率高&#xff…

网页主题自动适配:网页跟随系统自动切换主题

主题切换是网站设计中一个非常有趣的功能&#xff0c;它允许用户在多种预先设计的样式之间轻松切换&#xff0c;以改变网站的视觉表现。最常见的就是白天和黑夜主题的切换&#xff0c;用户可以根据自己的喜好进行设置。 除了让用户手动去切换主题外&#xff0c;如果能够让用户第…

传输商业密码电子文件的优选文件传输平台

在数字化浪潮的推动下&#xff0c;企业对机密信息的保护显得尤为关键。商业机密文件的传输不仅是企业运作的基础&#xff0c;更是企业竞争力的体现。面对日益增长的数据量和复杂的网络威胁&#xff0c;企业如何确保文件在传输过程中的安全&#xff0c;成为了一个亟待解决的问题…

今年做电商,视频号小店绝对是明智之举,未来风口就在这里

大家好&#xff0c;我是电商笨笨熊 电商一直是近几年的热门创业方向&#xff1b; 但是面对众多电商平台&#xff0c;对于普通玩家的我们来说&#xff0c;该怎么选择呢&#xff1f; 今年来说&#xff0c;我会更愿意选择视频号小店。 作为一个腾讯推出的电商项目&#xff0c;…

风味之旅:精酿啤酒的IPA风格探索

啤酒的世界是丰富多彩的&#xff0c;而IPA&#xff08;印度淡色艾尔&#xff09;作为一种与众不同的啤酒风格&#xff0c;以其浓郁的口感和与众不同的香气深受啤酒爱好者的喜爱。Fendi club啤酒作为精酿啤酒的品牌&#xff0c;对IPA风格的探索从未停止。 首先&#xff0c;让我们…

软件项目管理期末复习题8-16章

第八章软件项目质量计划 一、填空题 1、&#xff08;审计&#xff09;是对过程或产品的一次独立质量评估。 2、质量成本包括预防成本和&#xff08;缺陷成本&#xff09;。 3、&#xff08;软件质量&#xff09;是软件满足明确说明或者隐含的需求的程度。 5、McCall质量模…

隔离流量优化网络传输

不要将长流和短突发流(或者大象流和老鼠流)混部在一起&#xff0c;我建议用切片或虚通道将它们在全链路范围彻底隔离&#xff0c;而不仅仅在交换机上配合着大肆宣讲的高端包分类算法配置一些排队调度。 也不必扯泊松到达&#xff0c;帕累托分布&#xff0c;这些概念在论文建模…

学习CSS3动画教程:手把手教你绘制跑跑卡丁车

学习之前&#xff0c;请先听一段音乐&#xff1a;等登&#xff0c;等登&#xff0c;等登等登等登&#xff01;没错&#xff0c;这就是我们当年玩的跑跑卡丁车的背景音乐&#xff0c;虽然后来有了QQ飞车&#xff0c;但还是更喜欢跑跑卡丁车&#xff0c;从最初的基础板车&#xf…