unity 利用Graphics.Blit来制作图片效果
c# 的代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class GraphicsBlitTest : MonoBehaviour
{public Texture2D source;//原纹理public Material material;//效果材质public RawImage rawImage;// Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update(){if(Input.GetKeyDown(KeyCode.Space)){UseBlit();}}void UseBlit(){material.SetFloat("_HalfPixelX", 0.005f);material.SetFloat("_HalfPixelY", 0.008f);RenderTexture renderTexture = RenderTexture.GetTemporary(source.width,source.height,0);RenderTexture renderTexture1 = RenderTexture.GetTemporary(source.width,source.height,0);Graphics.Blit(source,renderTexture,material,0);//renderTexture就是经过材质shader之后的效果// Graphics.Blit(renderTexture,renderTexture1,material,1);// RenderTexture.active = renderTexture;// Texture2D texture2D = new Texture2D(renderTexture.width,renderTexture.height,TextureFormat.ARGB32,false);// texture2D.ReadPixels(new Rect(0,0,renderTexture.width,renderTexture.height),0,0);// texture2D.Apply(false);rawImage.texture = renderTexture;}
}
source可以是当前相机的RenderTexture也可以是准备好的一张图,然后利用material提供的效果将效果输出到renderTexture,第三个参数是使用哪个pass 0表示是使用第一个
下面是例子对应的shader,是一个模糊效果
Shader "JJ/ImageEffect/DualFilterBlur"
{Properties{_MainTex ("Texture", 2D) = "white" {}}SubShader{// No culling or depthCull Off ZWrite Off ZTest Always//pass 1Pass {CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"struct appdata{float4 vertex : POSITION;float2 uv : TEXCOORD0;};struct v2f{float2 uv : TEXCOORD0;float4 vertex : SV_POSITION;};v2f vert (appdata v){v2f o;o.vertex = UnityObjectToClipPos(v.vertex);o.uv = v.uv;return o;}sampler2D _MainTex;float _HalfPixelX;float _HalfPixelY;fixed4 Downsample(float2 uv){//原理是取相邻节点,最后取平均颜色float2 UV;fixed4 sum;sum = tex2D(_MainTex, uv) * 4.0;UV = float2(uv.x - _HalfPixelX, uv.y - _HalfPixelY);sum += tex2D(_MainTex, UV);UV = float2(uv.x + _HalfPixelX, uv.y + _HalfPixelY);sum += tex2D(_MainTex, UV);UV = float2(uv.x + _HalfPixelX, uv.y - _HalfPixelY);sum += tex2D(_MainTex, UV);UV = float2(uv.x - _HalfPixelX, uv.y + _HalfPixelY);sum += tex2D(_MainTex, UV);return sum * 0.125;}fixed4 frag (v2f i) : SV_Target{return Downsample(i.uv);}ENDCG}//pass 1Pass { CGPROGRAM#pragma vertex vert#pragma fragment fragstruct appdata{float4 vertex : POSITION;float2 uv : TEXCOORD0;};struct v2f{float2 uv : TEXCOORD0;float4 vertex : SV_POSITION;};v2f vert (appdata v){v2f o;o.vertex = UnityObjectToClipPos(v.vertex);o.uv = v.uv;return o;}sampler2D _MainTex;float _HalfPixelX;float _HalfPixelY;float _MaskPower;fixed4 Upsample(float2 uv) {float2 UV;fixed4 sum;UV = float2(uv.x - _HalfPixelX * 2.0, uv.y);sum = tex2D(_MainTex, UV);UV = float2(uv.x - _HalfPixelX, uv.y + _HalfPixelY);sum += tex2D(_MainTex, UV) * 2.0;UV = float2(uv.x, uv.y + _HalfPixelY * 2.0);sum += tex2D(_MainTex, UV);UV = float2(uv.x + _HalfPixelX, uv.y + _HalfPixelY);sum += tex2D(_MainTex, UV) * 2.0;UV = float2(uv.x + _HalfPixelX * 2.0, uv.y);sum += tex2D(_MainTex, UV);UV = float2(uv.x + _HalfPixelX, uv.y - _HalfPixelY);sum += tex2D(_MainTex, UV) * 2.0;UV = float2(uv.x, uv.y - _HalfPixelY * 2.0);sum += tex2D(_MainTex, UV);UV = float2(uv.x - _HalfPixelX, uv.y - _HalfPixelY);sum += tex2D(_MainTex, UV) * 2.0;sum /= 12.0;sum.rgb *= (1-_MaskPower);sum.a = 1;return sum;}fixed4 frag(v2f i) : SV_Target {return Upsample(i.uv);}ENDCG}}
}
相关文章:
unity 利用Graphics.Blit来制作图片效果
c# 的代码 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;public class GraphicsBlitTest : MonoBehaviour {public Texture2D source;//原纹理public Material material;//效果材质public RawImage rawImage;// Sta…...
Linux ---- 小玩具
目录 一、安装: 1、佛祖保佑,永不宕机,永无bug 2、小火车 3、艺术字和其它 天气预报 艺术字 4、会说话的小牦牛 5、其他趣味图片 我爱你 腻害 英雄联盟 帅 忍 龙 你是猪 福 好运连连 欢迎 加油 想你 忘不了你 我错了 你…...
练习题 有奖问答
题目 问题描述 小蓝正在参与一个现场问答的节目。活动中一共有 3030 道题目, 每题只有答对和答错两种情况, 每答对一题得 10 分,答错一题分数归零。 小蓝可以在任意时刻结束答题并获得目前分数对应的奖项,之后不能再答任何题目。最高奖项需要 100 分,…...
php 文件操作
目录 1.file_xxx 2.fopen 1.file_xxx 文件读写的内容都是字符串数据格式 readfile(); //读取文件内容,并返回文件的长度 file_get_contents(文件路径); //读取文件。支持本地文件和远程文件url file_put_contents(文件路径, 内容); //写入数据,保存…...
Next-GPT: Any-to-Any Multimodal LLM
Next-GPT: Any-to-Any Multimodal LLM 最近在调研一些多模态大模型相关的论文,发现Arxiv上出的论文根本看不过来,遂决定开辟一个新坑《一页PPT说清一篇论文》。自己在读论文的过程中会用一页PPT梳理其脉络和重点信息,旨在帮助自己和读者快速了…...
Angular系列教程之MVC模式和MVVM模式
文章目录 MVC模式MVVM模式MVC与MVVM的区别Angular如何实现MVVM模式总结 在讨论Angular的时候,我们经常会听到MVC和MVVM这两种设计模式。这两种模式都是为了将用户界面(UI)和业务逻辑分离,使得代码更易于维护和扩展。在这篇文章中,我们将详细介…...
windows虚拟主机和linux虚拟主机的区别有哪些?
很多个人站长和中小企业在做网站的时候,会选择虚拟主机。虚拟主机用的操作系统多为Windows系统,很多人一提到操作系统立马联想到Windows系统。其实除了Windows系统外,还有很多的操作系统。其中Linux系统是其中的佼佼者。 1、操作系统 window…...
微信小程序(七)navigator点击效果
注释很详细,直接上代码 上一篇 新增内容: 1.默认效果 2.无效果 3.激活效果 源码: index.wxml //如果 <navigator url"/pages/logs/logs">跳转到log页面(默认) </navigator><navigator url&q…...
腾讯云服务器价格查询,2024更新
腾讯云服务器租用优惠价格表:轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年,540元三年、2核4G5M带宽218元一年,2核4G5M带宽756元三年、轻量4核8G12M服务器646元15个月;云服务器CVM S5实例2核2G配置280.8元一年、2核4G…...
更适合3D项目的UI、事件交互!纯国产数字孪生引擎持续升级中!!!
UI和事件交互是3D可视化项目中最常见的模块,主要用于信息添加、展示,用来确保按照用户需求呈现内容并完成交互。 平时工作在进行UI和交互设计时,经常出现以下问题:UI过于复杂导致3D项目内交互效率低下,或者是结合3D项目…...
OpenCV-Python(47):支持向量机
原理 线性数据分割 如下图所示,其中含有两类数据,红的和蓝的。如果是使用kNN算法,对于一个测试数据我们要测量它到每一个样本的距离,从而根据最近的邻居分类。测量所有的距离需要足够的时间,并且需要大量的内存存储训…...
Centos 8 安装 Elasticsearch
简介:CentOS 8是一个基于Red Hat Enterprise Linux(RHEL)源代码构建的开源操作系统。它是一款稳定、可靠、安全的服务器操作系统,适合用于企业级应用和服务的部署。CentOS 8采用了最新的Linux内核和软件包管理系统,提供…...
Qt5.15.2中加入图片资源
系列文章目录 文章目录 系列文章目录前言一、加入图片资源二、代码 前言 以前用的Qt5.15.2之前的版本,QtCreator默认的工程文件是*.pro,现在用5.15.2创建工程默认的工程文件是CMameList.txt,当然在创建项目时,仍然可以使用pro工程文件用QtCr…...
大数据导论(3)---大数据技术
文章目录 1. 大数据技术概述2. 数据采集与预处理2.1 数据采集2.2 预处理 3. 数据存储和管理3.1 分布式基础架构Hadoop3.2 分布式文件系统HDFS3.3 分布式数据库HBase3.4 非关系型数据库NoSQL 4. 数据可视化与保护 1. 大数据技术概述 大数据技术主要包括数据采集与预处理、数据存…...
Vue-Clipboard3:轻松实现复制到粘贴板功能
一、前言 在现代Web开发中,剪贴板操作变得越来越重要。用户经常需要在浏览器中进行复制、粘贴等操作,而这些操作可以通过JavaScript实现。Vue-Clipboard3是一个基于Clipboard.js的粘贴板操作库,使用 Vue-Clipboard3 可以在Vue 3(…...
【Linux系统编程】进程优先级
文章目录 1. 优先级的基本概念2. 为什么存在优先级3. 查看系统进程4. PRI and NI5. top命令修改已存在进程的nice值6. 其他概念 1. 优先级的基本概念 本篇文章讲解进程优先级,首先我们来了解一下进程优先级的概念: cpu资源分配的先后顺序,就…...
华为HCIE课堂笔记第十六章 Qos基本原理
第十六章 Qos基本原理 16.1 Qos背景 Qos:在带宽有限的情况下,为不同的业务需求,提供不同的网络的服务质量。 影响Qos的不同的因素: 带宽,链路在单位时间可以传输数据的bit数量,单位bps 一般上传下载速…...
79、avx2 向量指令集优化卷积运算
上一节 介绍了 avx2 向量指令集中的 load/store 操作,本节介绍如何使用 avx2 的向量指令集来实现乘累加运算。 因为我们实战中用到的 resnet50 神经网络中,卷积运算在整个模型中的比例占据是相当高,而卷积运算的核心计算就是乘累加计算。因此,只要将最核心的乘累加计算效率…...
【AI】人工智能和图像编码(2)
传统图像编解码与智能图像编解码,都是要编码和解码,但还是有一些区别的。 相关相同点和要点描述如下: 一、区别 1.1 技术原理 传统图像编解码:主要依赖于固定的算法和标准,如JPEG、MPEG等,进行图像的压…...
2023 巅峰之作 | AIGC、AGI、GhatGPT、人工智能大语言模型的崛起与挑战
文章目录 01 《ChatGPT 驱动软件开发》内容简介 02 《ChatGPT原理与实战》内容简介 03 《神经网络与深度学习》04 《AIGC重塑教育》内容简介 05 《通用人工智能》目 录 2023年是人工智能大语言模型大爆发的一年,一些概念和英文缩写也在这一年里集中出现ÿ…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...
面向无人机海岸带生态系统监测的语义分割基准数据集
描述:海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而,目前该领域仍面临一个挑战,即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...
Webpack性能优化:构建速度与体积优化策略
一、构建速度优化 1、升级Webpack和Node.js 优化效果:Webpack 4比Webpack 3构建时间降低60%-98%。原因: V8引擎优化(for of替代forEach、Map/Set替代Object)。默认使用更快的md4哈希算法。AST直接从Loa…...
Python 高效图像帧提取与视频编码:实战指南
Python 高效图像帧提取与视频编码:实战指南 在音视频处理领域,图像帧提取与视频编码是基础但极具挑战性的任务。Python 结合强大的第三方库(如 OpenCV、FFmpeg、PyAV),可以高效处理视频流,实现快速帧提取、压缩编码等关键功能。本文将深入介绍如何优化这些流程,提高处理…...
企业大模型服务合规指南:深度解析备案与登记制度
伴随AI技术的爆炸式发展,尤其是大模型(LLM)在各行各业的深度应用和整合,企业利用AI技术提升效率、创新服务的步伐不断加快。无论是像DeepSeek这样的前沿技术提供者,还是积极拥抱AI转型的传统企业,在面向公众…...
