当前位置: 首页 > news >正文

Unity中BRP下的深度图

文章目录

  • 前言
  • 一、在Shader中使用
    • 1、在使用深度图前申明
    • 2、在片元着色器中
  • 二、在C#脚本中开启摄像机深度图
  • 三、最终效果


前言

在之前的文章中,我们实现了URP下的深度图使用。

  • Unity中URP下使用屏幕坐标采样深度图

在这篇文章中,我们来看一下BRP下深度图怎么单独使用。


一、在Shader中使用

1、在使用深度图前申明

sampler2D _CameraDepthTexture;

2、在片元着色器中

float2 uv = i.positionCS/ _ScreenParams.xy;
float4 cameraDepthTex = tex2D(_CameraDepthTexture,uv);
float depthTex = LinearEyeDepth(cameraDepthTex);
return frac(depthTex);


二、在C#脚本中开启摄像机深度图

Camera.main.depthTextureMode = DepthTextureMode.Depth;


三、最终效果

在这里插入图片描述

Shader "MyShader/URP/P4_1"
{Properties {_Color("Color",Color) = (0,0,0,0)_MainTex("MainTex",2D) = "white"{}}SubShader{Tags{//渲染类型"RenderType"="Transparent"//渲染队列"Queue"="Transparent"}//Blend One OneZWrite OffPass{CGPROGRAM#pragma vertex vert#pragma fragment frag// Pragmas#pragma target 2.0// Includes#include "UnityCG.cginc"half4 _Color;sampler2D _MainTex;float4 _MainTex_ST;sampler2D _CameraDepthTexture;struct appdata{float3 positionOS : POSITION;float2 uv : TEXCOORD0;};struct v2f{float4 positionCS : SV_POSITION;float2 uv : TEXCOORD0;float4 screenPos : TEXCOORD1;};v2f vert(appdata v){v2f o;o.positionCS = UnityObjectToClipPos(v.positionOS);o.uv = TRANSFORM_TEX(v.uv,_MainTex);o.screenPos = ComputeScreenPos(o.positionCS);return o;}//fixed4 frag(v2f i) : SV_TARGET//片元着色器half4 frag(v2f i) : SV_TARGET{half4 c;float4 mainTex = tex2D(_MainTex,i.uv);//c = _Color *  mainTex;//深度图//float2 uv = i.screenPos.xy / i.screenPos.w;float2 uv = i.positionCS/ _ScreenParams.xy;float4 cameraDepthTex = tex2D(_CameraDepthTexture,uv);float depthTex = LinearEyeDepth(cameraDepthTex);return frac(depthTex);}ENDCG}}
}
http://www.lryc.cn/news/277269.html

相关文章:

  • 物联网的感知层、网络层与应用层分享
  • kafka KRaft 集群搭建
  • oracle角色管理
  • 汽车信息安全--芯片厂、OEM安全启动汇总(2)
  • HarmonyOS 开发基础(五)Button
  • 带前后端H5即时通讯聊天系统源码
  • vsCode输出控制台中文乱码解决
  • 「服务器」4.新手小白如何安装服务器环境-宝塔
  • Docker安装MySql详细步骤
  • 【微服务合集】
  • Hadoop之mapreduce参数大全-2
  • 目标检测YOLO实战应用案例100讲-基于图像增强的鸟类目标检测(续)
  • MYSQL分表容量预估:简明指南
  • 面试宝典进阶之Java线程面试题
  • BOM简介
  • Java中的集合框架
  • Rustdesk打开Win10 下客户端下面服务不会自启,显示服务未运行
  • 【SPDK】【NoF】使用SPDK部署NVMe over TCP
  • Spring boot 3 集成rocketmq-spring-boot-starter解决版本不一致问题
  • python爬虫实战(6)--获取某度热榜
  • 十三、K8S之亲和性
  • 对于网关的理解-Gateway
  • win10 - Snipaste截图工具的使用
  • Selenium 学习(0.19)——软件测试之基本路径测试法——拓展案例
  • 工作记录-------正则表达式---小白也能看懂
  • C3-1.3.1 无监督学习——异常检测
  • 1.4.1机器学习——梯度下降+α学习率大小判定
  • 在IntelliJ IDEA中,.idea文件是什么,可以删除吗
  • 【Spring Cloud】Gateway组件的三种使用方式
  • 对象的复制