Shader基础的简单实现(基于URP渲染)

一个模型是很多个顶点组成,顶点数据中包含坐标、法线、切线、UV坐标、顶点颜色等等组成。

URP(Universal Render Pipeline)通用渲染管线,是Unity在2019.3版本之后推出的一种新的渲染管线。传统的渲染管线在渲染多光源的情况,是把每一个主要光源都使用一个Pass来计算,然后再叠加,所以在计算多光源实时光时,消耗会比较大。URP中主光源只能是平行光、限定附加光源数量,然后在一个pass内处理完所有光源和光照的计算。这样会解决了默认渲染管线对于多光源的计算。URP的另外一个特点是SRP Batcher合并批次的支持。

一般项目创建后是默认的内置渲染管线,需要手动升级成URP,详细可以看Unity官网上对URP的说明:将通用渲染管线安装到现有项目中 | Universal RP | 12.1.1 使用一个模型颜色渐变效果来对比URP和内置渲染器的shader代码。效果如下:

内置渲染器:

Shader "Unlit/002"
{Properties{_BaseColor("基础颜色",Color) = (1,1,1,1)_ChangeColor("渐变颜色",Color) = (1,0,0,1)}SubShader{Tags { "RenderType" = "Opaque" }LOD 100Pass{CGPROGRAM#pragma vertex vert#pragma fragment fragfloat4 _BaseColor;float4 _ChangeColor;struct v2f{float4 uv : TEXCOORD0;float4 vertex : SV_POSITION;};struct appdata{float4 vertex : POSITION;float2 uv : TEXCOORD0;};v2f vert(appdata v) {v2f o;o.vertex = UnityObjectToClipPos(v.vertex);o.uv = v.vertex;return o;}fixed4 frag(v2f i) : SV_TARGET{return lerp(_BaseColor,_ChangeColor,i.uv.y + 0.5);}ENDCG}}
}

URP:

Shader "Unlit/003"
{Properties{_BaseColor("基础颜色",Color) =(1,1,1,1)_ChangeColor("渐变颜色",Color) =(1,0,1,1)}SubShader{Tags { "RenderPipeline"="UniversalPipeline""RenderType"="Opaque""IgnoreProjector" = "True"}LOD 100Pass{HLSLPROGRAM #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"//函数库:主要用于各种的空间变换#pragma vertex vert#pragma fragment fragstruct appdata{float4 vertex : POSITION;float2 uv : TEXCOORD0;};struct v2f{float4 uv : TEXCOORD0;float4 vertex : SV_POSITION;};float4 _BaseColor;float4 _ChangeColor;float4 _MainTex_ST;v2f vert (appdata v){v2f o;o.vertex = TransformObjectToHClip(v.vertex);o.uv = v.vertex;return o;}half4 frag (v2f i) : SV_TARGET{return lerp(_ChangeColor,_BaseColor,i.uv.y+0.5);}ENDHLSL }}
}

对于Unity来说,cg和hlsl的语法基本上是一致的,URP中把使用的CGPROGRAM改为HLSLPROGRAM了。

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

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

相关文章

C语言第二十八弹---整数在内存中的存储

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】 目录 1、整数在内存中的存储 2、大小端字节序和字节序 2.1、什么是大小端? 2.2、为什么有大小端? 2.3、练习 2.3.1、练习1 2.3.2、练习2 2.…

Java 注解机制解密并发编程的时间之谜:揭开Happens-Before的神秘面纱

优质博文:IT-BLOG-CN 一、简介 为什么需要happens-before原则: 主要是因为Java内存模型 , 为了提高CPU效率,通过工作内存Cache代替了主内存。修改这个临界资源会更新work memory但并不一定立刻刷到主存中。通常JMM会将编写的代码…

【数据结构初阶 6】二叉树:堆的基本操作 + 堆排序的实现

文章目录 🌈 Ⅰ 二叉树的顺序结构🌈 Ⅱ 堆的概念与性质🌈 Ⅲ 堆的基本操作01. 堆的定义02. 初始化堆03. 堆的销毁04. 堆的插入05. 向上调整堆06. 堆的创建07. 获取堆顶数据08. 堆的删除09. 向下调整堆10. 判断堆空 🌈 Ⅳ 堆的基本…

【selenium】八大元素定位方式|xpath css id name...

目录 一、基础元素定位 二、cssSelector元素定位——通过元素属性定位 三、xpath元素定位——通过路径 1 、xpath绝对定位 (用的不多) 缺点:一旦页面结构发生变化(比如重新设计时,路径少两节)&#x…

vs2015零基础编译zlib从失败到成功

本博文源于笔者不断尝试从0编译zlib到能够将文件打包成zip的一个简单过程,其中包含了如何下载zlib,如何编译zlib,如何使用zlib等。内容堪比教科书级别,可以收藏,可以自用,希望博文能帮助到读者。 1、下载z…

Protocol Buffers v21.12 安装 ( linux 系统 )

下载 Protocol Buffers v21.12 Protocol Buffers v21.12 解压 tar zxvf protobuf-cpp-3.21.12.tar.gz执行 进入解压目录,执行下面configure可执行程序,目的是监测安装环境,生成makefile ./configure执行完后可以检查是否生成makefile文件 构…

公司文件防泄密管理系统

公司文件防泄密管理系统是一种综合性的解决方案,旨在确保企业文件的安全性和保密性,防止内部员工或外部攻击者非法获取、泄露或篡改敏感信息。 PC端:https://isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-6757c5dfedee 以下是关于…

【JavaEE】_form表单构造HTTP请求

目录 1. form表单的格式 1.1 form表单的常用属性 1.2 form表单的常用搭配标签:input 2. form表单构造GET请求实例 3. form表单构造POST请求实例 4. form表单构造法的缺陷 对于客户端浏览器,以下操作即构造了HTTP请求: 1. 直接在浏览器…

IDM下载器2024中文版主要功能、使用场景、优点、缺点介绍

软件分析师眼中的IDM(Internet Download Manager) IDM绿色下载如下: https://wm.makeding.com/iclk/?zoneid34275 一、主要功能 高速下载:利用多线程技术和文件分块下载策略,显著提高下载速度。断点续传:即使在下载…

【Linux】MySQL数据库的使用

【Linux】MySQL数据库的使用 一、访问MySQL数据库二、创建及删除库和表1、创建新的库2、创建新的表3、删除一个数据表4、删除一个数据库 三、管理表中的数据记录1、插入数据记录2、查询数据记录3、修改数据记录4、删除数据记录 四、数据库用户授权1、授予权限2、查看权限3、撤销…

《图解HTTP》笔记1:http的诞生

1,http的诞生: 1.1 为共享知识而生 我们现在使用web(World Wide Web的简称,即万维网)浏览器,目前可以输入一个网址(http://www.baidu.com),就会有一个网页显示出来。 最开始设想出…

jenkins远程触发构建报:Error 403 No valid crumb was included in the request

最近在跨jenkins触发构建的时候发现不能触发相应的项目,报如下图错误 解决方案: 1、安装Build Authorization Token Root Plugin插件 安装完成后去配置API Token,用户列表,配置用户的API Token,生成后记得保存 2、项…

YOLOv9来啦!YOLO目标检测全新工作!性能表现SOTA!在各个方面都大大超过了RT-DETR、YOLOv8等

摘要 今天的深度学习方法侧重于如何设计最合适的目标函数,使模型的预测结果最接近实际情况。同时,必须设计一种适当的架构,该架构可以促进获取足够的信息用于预测。现有的方法忽略了一个事实,即当输入数据经过逐层特征提取和空间…

【Linux】再谈进程地址空间

目录 一、引入 二、物理内存和外设空间的交互 三、解决页表过大问题 一、引入 我们在往期的博客中有讲解过进程地址空间:【Linux】进程地址空间 但是在上述博客中我们只是对进程地址空间的左边部分详细进行了讲解,下面我们就来谈谈右边的部分&#…

第3.6章:StarRocks数据导入——DataX StarRocksWriter

一、Datax 1.1 DataX 3.0概述 DataX3.0是一个异构数据源离线同步工具,可以方便的对各种异构数据源进行高效的数据同步。 其github地址为: https://github.com/alibaba/DataX/blob/master/introduction.mdhttps://github.com/alibaba/DataX/blob/mast…

盘点那些世界名校计算机专业采用的教材

清华、北大、MIT、CMU、斯坦福的学霸们在新学期里要学什么?今天我们来盘点一下那些世界名校计算机专业采用的教材。 书单目录 1.《深入理解计算机系统》(原书第3版)2. 《算法导论》(原书第3版)3. 《计算机程序的构造和…

el-table增加/编辑打开el-dialog内嵌套el-form,解决编辑重置表单不成功等问题

需求:在做表格的增删改查,其中新增和编辑弹窗都是同一个弹窗,之后有个重置按钮,需要用户输入的时候可以重置清空等。本文章解决如下问题 1.就是在编辑数据回填后点击重置表单没有清空也没有报错 2.解决清空表单和表格数据相互影响…

C-MAPSS涡扇发动机仿真数据(PHM2008)

数据集介绍 在开始介绍数据集之前,先帮大家理清一下涡扇发动机的数据(NASA提供,本文中称为数据集A)和PHM2008竞赛数据(本文称为数据集B)的关系。之所以将数据集A和数据集B放在一篇文章中,是因为…

【论文解读】transformer小目标检测综述

目录 一、简要介绍 二、研究背景 三、用于小目标检测的transformer 3.1 Object Representation 3.2 Fast Attention for High-Resolution or Multi-Scale Feature Maps 3.3 Fully Transformer-Based Detectors 3.4 Architecture and Block Modifications 3.6 Improved …

MT8788|MTK8788安卓核心板参数_4G联发科MTK模块

MT8788核心板是一款功能强大的4G全网通安卓智能模块。该模块采用了联发科AIOT芯片平台,具有长达8年的生命周期。MT8788模块内置了12nm制程的八核处理器,包括4个Cortex A73和4个Coretex A53,主频最高可达2.0GHZ。标配内存为4GB64GB&#xff0c…