Unity背景模糊图片高斯模糊高性能的实现方案

环境:

unity2021.3.x

效果:

模糊前:

模糊后:

模糊前:

模糊后:

实现核心思路(shader):

 SubShader {CGINCLUDE#include "UnityCG.cginc"sampler2D _MainTex; // 主纹理half4 _MainTex_TexelSize; // _MainTex的像素尺寸大小, float4(1/width, 1/height, width, height)float _BlurSize; // 模糊尺寸(纹理坐标的偏移量)struct v2f {float4 pos : SV_POSITION; // 模型空间顶点坐标half2 uv[5]: TEXCOORD0; // 5个邻域的纹理坐标};v2f vertBlurVertical(appdata_img v) { // 垂直模糊顶点着色器v2f o;o.pos = UnityObjectToClipPos(v.vertex); // 模型空间顶点坐标变换到裁剪空间, 等价于: mul(UNITY_MATRIX_MVP, v.vertex)half2 uv = v.texcoord;o.uv[0] = uv;o.uv[1] = uv + float2(0.0, _MainTex_TexelSize.y * 1.0) * _BlurSize;o.uv[2] = uv - float2(0.0, _MainTex_TexelSize.y * 1.0) * _BlurSize;o.uv[3] = uv + float2(0.0, _MainTex_TexelSize.y * 2.0) * _BlurSize;o.uv[4] = uv - float2(0.0, _MainTex_TexelSize.y * 2.0) * _BlurSize;      return o;}v2f vertBlurHorizontal(appdata_img v) { // 水平模糊顶点着色器v2f o;o.pos = UnityObjectToClipPos(v.vertex); // 模型空间顶点坐标变换到裁剪空间, 等价于: mul(UNITY_MATRIX_MVP, v.vertex)half2 uv = v.texcoord;o.uv[0] = uv;o.uv[1] = uv + float2(_MainTex_TexelSize.x * 1.0, 0.0) * _BlurSize;o.uv[2] = uv - float2(_MainTex_TexelSize.x * 1.0, 0.0) * _BlurSize;o.uv[3] = uv + float2(_MainTex_TexelSize.x * 2.0, 0.0) * _BlurSize;o.uv[4] = uv - float2(_MainTex_TexelSize.x * 2.0, 0.0) * _BlurSize;      return o;}fixed4 fragBlur(v2f i) : SV_Target {float weight[3] = {0.4026, 0.2442, 0.0545}; // 大小为5的一维高斯核,实际只需记录3个权值fixed3 sum = tex2D(_MainTex, i.uv[0]).rgb * weight[0];for (int j = 1; j < 3; j++) {sum += tex2D(_MainTex, i.uv[j * 2 - 1]).rgb * weight[j]; // 中心右侧或下侧的纹理*权值sum += tex2D(_MainTex, i.uv[j * 2]).rgb * weight[j]; // 中心左侧或上侧的纹理*权值}return fixed4(sum, 1.0);}ENDCGZTest Always Cull Off ZWrite OffPass {NAME "GAUSSIAN_BLUR_VERTICAL"CGPROGRAM#pragma vertex vertBlurVertical  #pragma fragment fragBlurENDCG  }Pass {  NAME "GAUSSIAN_BLUR_HORIZONTAL"CGPROGRAM  #pragma vertex vertBlurHorizontal  #pragma fragment fragBlurENDCG}}

github地址:高斯模糊 Github地址

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

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

相关文章

Autosar教程-Mcal教程-GPT配置教程

3.3GPT配置、生成 3.3.1 GPT配置所需要的元素 GPT实际上就是硬件定时器,需要配置的元素有: 1)定时器时钟:定时器要工作需要使能它的时钟源 2)定时器分步:时钟源进到定时器后可以通过分频后再给到定时器 定时器模块选择:MCU有多个定时器模块,需要决定使用哪个定时器模块作…

开发知识点-python-Tornado框架

介绍 Tornado是一个基于Python语言的高性能Web框架和异步网络库&#xff0c;它专注于提供快速、可扩展和易于使用的网络服务。由于其出色的性能和灵活的设计&#xff0c;Tornado被广泛用于构建高性能的Web应用程序、实时Web服务、长连接的实时通信以及网络爬虫等领域。 Torna…

Claude3超大杯发布,将取代ChatGPT4?

演示站点&#xff1a; https://ai.uaai.cn 创作模块 &#xff08;Claude3已接入&#xff0c;欢迎体验&#xff09;官方论坛&#xff1a; www.jingyuai.com 前言 今天【超越GPT-4 接近人类水平&#xff01;Claude 3系列大模型惊艳问世】登上了全网热搜&#xff0c;那么【超…

React_ 三、Router路由配置

文章目录 [TOC](文章目录) Router路由配置安装和封装使用声明式导航Link和编程式导航useNavigate 导航传参useSearchParams 接收传参useParams 接收传参 路由嵌套children和菜单式渲染404路由配置 路由模式history模式&#xff0c;无/#/ 需要后端支持hash模式&#xff0c;有/#/…

【Flink网络传输】ShuffleMaster与ShuffleEnvironment创建细节与提供的能力

文章目录 一. Taskmanager之间传递数据细节二. ShuffleService的设计与实现三. 在JobMaster中创建ShuffleMaster四. 在TaskManager中创建ShuffleEnvironment五. 基于ShuffleEnvironment创建ResultPartition1. 在task启动时创建ResultPartition2. ResultPartition的创建与对数据…

C++写食堂菜品管理系统

说明:本博文来自CSDN-问答板块,题主提问。 需要:学校拟开发一套食堂菜品管理系统,以便对菜品和同学们的评价进行管理,其中包含如下信息: 商户:商户名称、柜面位置、电话…… 菜品:菜品编号、菜品名称、价格、所属商户…… 学生:注册账号、昵称、电话…… 食堂里的商户…

arguments和剩余参数(...)

1、arguments对象 是函数内部内置的对象&#xff0c;是一个伪数组&#xff0c;包含了调用函数是传入的所有实参。可用来动态获取函数的实参。 function init(a,b,c) {console.log(arguments)}init(1,2,3) 2、剩余函数(...) 获取多余的实参&#xff0c;并形成一个真数组&#xf…

不精确一维搜索:Armijo-Goldstein准则Wolfe-Powell准则

一维搜索/线搜索 1.引言2.内容3.准则思想 1.引言 为了防止迭代过程中函数值 f ( x k ) f(x^k) f(xk) 的下降量不够充分&#xff0c;以至于算法无法收敛到极小值点&#xff0c;必须引入一些更合理的线搜索准则来确保迭代的收敛性。保证每一步迭代充分下降。 2.内容 line sea…

PMP证书:究竟值不值得考?含金量如何?

PMP证书在项目管理领域还是很受关注&#xff0c;但其含金量和是否必须考取一直存在争议。在这里&#xff0c;我们来深入分析&#xff0c;看看PMP证书到底值不值得考&#xff0c;以及背后的原因。 首先&#xff0c;我们要关注的是PMP考试的通过率。根据网络数据&#xff0c;PMP…

Tomcat性能调优

1‍.应用场景/常见内容溢出问题‍ 常见问题为内存溢出&#xff0c;分为堆内存溢出、非堆内存溢出&#xff0c;比较常见的为堆内存溢出&#xff0c;后2类属于非堆内存溢出。 堆溢出&#xff1a; java.lang.OutOfMemoryError:Java heap spcace 原因:项目运行阶段,new的对象过多…

SAP MM学习笔记 - 错误 BMG140 - The material number is longer than the length set

错误 BMG140 - The material number is longer than the length set 品目编号大于长度设置 1&#xff0c;在新规品目的时候&#xff0c;出的错 2&#xff0c;OMSL 品目Code书式变更 IMG path>Logistic general>Material Master>Basic settings>Define output for…

第十五届蓝桥杯青少组STEMA测评SPIKE初级真题试卷 2024年1月

第十五届蓝桥杯青少组STEMA测评SPIKE初级真题试卷 2024年1月 ​​​​​​​ 来自&#xff1a;6547网 http://www.6547.cn/doc/vywur8eics