使用shader怎么实现屏幕高斯模糊
发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,今天就跟大家聊聊有关使用shader怎么实现屏幕高斯模糊,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1.新建一个C#脚本,改脚本必须挂在摄像
千家信息网最后更新 2025年02月02日使用shader怎么实现屏幕高斯模糊
今天就跟大家聊聊有关使用shader怎么实现屏幕高斯模糊,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
1.新建一个C#脚本,改脚本必须挂在摄像机上
using UnityEngine;using System.Collections;////// 高期模糊/// public class GaussianBlur : PostEffectsBase { //调整高斯模糊迭代次数 [Range(0, 4)] public int iterations = 3; //模糊范围 [Range(0.2f, 3.0f)] public float blurSpread = 0.6f; //缩放系数 //downSample越大,需要处理的像素越少,同时也能进一步提高模糊程序, //但过大的downSample可能会使图像像素化。 [Range(1, 8)] public int downSample = 2; public Shader gaussianBlurShader; private Material gaussianBlurMaterial = null; public Material material { get { gaussianBlurMaterial = CheckShaderAndCreateMaterial(gaussianBlurShader, gaussianBlurMaterial); return gaussianBlurMaterial; } } void OnRenderImage(RenderTexture src, RenderTexture dest) { if (material != null) { //利用缩放对图像进行降采样,从而减少需要处理的像素个数,提高性能。 int rtW = src.width / downSample; int rtH = src.height / downSample; //分配一块缓冲区,这是因为,高斯模糊需要调用两个Pass,我们需要使用一块中间缓存来 //存储第一个Pass执行完毕后得到的模糊结果。 RenderTexture buffer0 = RenderTexture.GetTemporary(rtW, rtH, 0); //将该临时渲染纹理的滤波模式设置为双线性。这样,在调用第一个Pass时,我们需要处理的 //像素个数就是原来的几分之一。对图像进行降采样不仅可以减少需要处理的像素个数,提高性能, //而且适当的降采往往还可以得到更好的模糊效果。 buffer0.filterMode = FilterMode.Bilinear; Graphics.Blit(src, buffer0); //高斯模糊迭代次数 for(int i=0; i2.新建一个顶点着色器的shader,实现高斯模糊的shader代码如下:
using UnityEngine;using System.Collections;////// 高期模糊/// public class GaussianBlur : PostEffectsBase { //调整高斯模糊迭代次数 [Range(0, 4)] public int iterations = 3; //模糊范围 [Range(0.2f, 3.0f)] public float blurSpread = 0.6f; //缩放系数 //downSample越大,需要处理的像素越少,同时也能进一步提高模糊程序, //但过大的downSample可能会使图像像素化。 [Range(1, 8)] public int downSample = 2; public Shader gaussianBlurShader; private Material gaussianBlurMaterial = null; public Material material { get { gaussianBlurMaterial = CheckShaderAndCreateMaterial(gaussianBlurShader, gaussianBlurMaterial); return gaussianBlurMaterial; } } void OnRenderImage(RenderTexture src, RenderTexture dest) { if (material != null) { //利用缩放对图像进行降采样,从而减少需要处理的像素个数,提高性能。 int rtW = src.width / downSample; int rtH = src.height / downSample; //分配一块缓冲区,这是因为,高斯模糊需要调用两个Pass,我们需要使用一块中间缓存来 //存储第一个Pass执行完毕后得到的模糊结果。 RenderTexture buffer0 = RenderTexture.GetTemporary(rtW, rtH, 0); //将该临时渲染纹理的滤波模式设置为双线性。这样,在调用第一个Pass时,我们需要处理的 //像素个数就是原来的几分之一。对图像进行降采样不仅可以减少需要处理的像素个数,提高性能, //而且适当的降采往往还可以得到更好的模糊效果。 buffer0.filterMode = FilterMode.Bilinear; Graphics.Blit(src, buffer0); //高斯模糊迭代次数 for(int i=0; i看完上述内容,你们对使用shader怎么实现屏幕高斯模糊有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。
像素
高斯
处理
个数
图像
性能
次数
缓存
迭代
内容
屏幕
适当
两个
同时
就是
效果
模式
程序
系数
纹理
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
冯浩恩软件开发
中科大洋安全传输网关服务器
桂林杉帝网络技术有限公司简介
网络安全实践技能
网络技术公司单位简介
网络安全密码最新消息
热血传奇如何换服务器
左云机械网络安全服务保障
设计数据库表的优点
金蝶的加密服务器自动连接
带网络安全模式下无网络
软件开发需要怎么做什么的
淮安进口刀片服务器施工
数据库日志级别
百度物联网软件开发基础
安全测试包括数据库吗
湘潭口碑好的软件开发报价
虚拟服务器Ftp
参考资料 软件开发
服务器bmc怎么连管理网口
删除表里的某一行数据库
斗罗大陆模组服务器怎样创造
按错windows服务器系统
女生软件开发前景
安徽捷日达互联网科技公司
茂名软件开发贵吗
高斯数据库查询结果怎么添加行号
服务器备份数据怎么备份r
阿里巴巴的云端服务器在哪里
微信用的服务器多少钱