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

成都的教育品牌网站建设怎样在网上推广

成都的教育品牌网站建设,怎样在网上推广,wordpress日期格式,嘉兴学网站建设描边需要深度法线纹理的加持,效果才能达到最好,但URP下很多版本不支持直接获取_CameraNormalsTexture,而我本人也尝试了一下在12.1.7下偷懒直接拿SSAO里的Depth Normal图, 虽然也能实现吧,但是需要打开SSAO的同时&…

描边需要深度+法线纹理的加持,效果才能达到最好,但URP下很多版本不支持直接获取_CameraNormalsTexture,而我本人也尝试了一下在12.1.7下偷懒直接拿SSAO里的Depth Normal图,

 

虽然也能实现吧,但是需要打开SSAO的同时,再在shader中加入指定的Tag为"DepthNormals"的Pass才能实现:

稍微有点麻烦,而且总有种用别人东西的感觉。

那就尝试一下自己动手吧!动手造一个获取深度法线纹理的轮子!

贴一下项目环境:

URP12.1.7

Unity2021.3.8f1


浅看两篇手动获取深度法线纹理的文章:URP深度法线纹理 - 简书 (jianshu.com)和雪风大佬的urp管线的自学hlsl之路 第二十四篇 科幻扫描效果后篇 - 哔哩哔哩 (bilibili.com),实现都是依靠build-in底下的shader,然后将绘制出来的纹理传递给URP下自己项目定义的shader使用。

1 定义RenderFeature获取法线深度图

这个是参考了上述的过程,说实话,内容太过复杂。只有不断多学习,多做,每次都好好做备注,总有一天会完全理解的:

using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;public class DepthNormalsFeature : ScriptableRendererFeature
{// 定义3个共有变量public class Settings{//public Shader shader; // 设置后处理shaderpublic Material material; //后处理Materialpublic RenderPassEvent renderPassEvent = RenderPassEvent.BeforeRenderingPostProcessing; // 定义事件位置,放在了官方的后处理之前}// 初始化一个刚刚定义的Settings类public Settings settings = new Settings();// 初始化PassDepthNormalsPass depthNormalsPass;// 初始化纹理RenderTargetHandle depthNormalsTexture;// 材质Material depthNormalsMaterial;// 给pass传递变量,并加入渲染管线中public override void Create(){// 通过Built-it管线中的Shader创建材质,最重要的一步!depthNormalsMaterial = CoreUtils.CreateEngineMaterial("Hidden/Internal-DepthNormalsTexture");// 获取Pass(渲染队列,渲染对象,材质)depthNormalsPass = new DepthNormalsPass(RenderQueueRange.opaque, -1, depthNormalsMaterial);// 设置渲染时机 = 预渲染通道后depthNormalsPass.renderPassEvent = RenderPassEvent.AfterRenderingPrePasses;// 设置纹理名depthNormalsTexture.Init("_CameraDepthNormalsTexture");}//这里你可以在渲染器中注入一个或多个渲染通道。//这个方法在设置渲染器时被调用。public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData){// 对Pass进行参数设置(当前渲染相机信息,深度法线纹理)depthNormalsPass.Setup(renderingData.cameraData.cameraTargetDescriptor, depthNormalsTexture);// 写入渲染管线队列renderer.EnqueuePass(depthNormalsPass);}}public class DepthNormalsPass : ScriptableRenderPass
{int kDepthBufferBits = 32;                                   // 缓冲区大小private RenderTargetHandle Destination { get; set; }         // 深度法线纹理private Material DepthNormalsMaterial = null;                // 材质private FilteringSettings m_FilteringSettings;               // 筛选设置static readonly string m_ProfilerTag = "Depth Normals Pre Pass"; // 定义渲染TagShaderTagId m_ShaderTagId = new ShaderTagId("MyDepthOnly");    // 绘制标签,Shader需要声明这个标签的tag/// <summary>/// 构造函数Pass/// </summary>/// <param name="renderQueueRange"></param>/// <param name="layerMask"></param>/// <param name="material"></param>public DepthNormalsPass(RenderQueueRange renderQueueRange, LayerMask layerMask, Material material){m_FilteringSettings = new FilteringSettings(renderQueueRange, layerMask);DepthNormalsMaterial = material;}/// <summary>/// 参数设置/// </summary>/// <param name="baseDescriptor"></param>/// <param name="Destination"></param>public void Setup(RenderTextureDescriptor baseDescriptor, RenderTargetHandle Destination){// 设置纹理this.Destination = Destination;}/// <summary>/// 配置渲染目标,可创建临时纹理/// </summary>/// <param name="cmd"></param>/// <param name="cameraTextureDescriptor"></param>public override void Configure(CommandBuffer cmd, RenderTextureDescriptor cameraTextureDescriptor){// 设置渲染目标信息RenderTextureDescriptor descriptor = cameraTextureDescriptor;descriptor.depthBufferBits = kDepthBufferBits;descriptor.colorFormat = RenderTextureFormat.ARGB32;// 创建一个临时的RT(储存深度法线纹理、目标信息和滤波模式)cmd.GetTemporaryRT(Destination.id, descriptor, FilterMode.Point);// 配置ConfigureTarget(Destination.Identifier());// 清楚,未渲染时配置为黑色ConfigureClear(ClearFlag.All, Color.black);}// /// <summary>/// 后处理逻辑和渲染核心函数,相当于build-in 的OnRenderImage()/// 实现渲染逻辑/// </summary>/// <param name="context"></param>/// <param name="renderingData"></param>public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData){var cmd = CommandBufferPool.Get(m_ProfilerTag);     // 设置渲染标签using (new ProfilingSample(cmd, m_ProfilerTag)){// 执行命令缓存context.ExecuteCommandBuffer(cmd);// 清楚数据缓存cmd.Clear();// 相机的排序标志var sortFlags = renderingData.cameraData.defaultOpaqueSortFlags;// 创建绘制设置var drawSettings = CreateDrawingSettings(m_ShaderTagId, ref renderingData, sortFlags);// 设置对象数据drawSettings.perObjectData = PerObjectData.None;// 设置覆盖材质drawSettings.overrideMaterial = DepthNormalsMaterial;// 绘制渲染器context.DrawRenderers(renderingData.cullResults, ref drawSettings, ref m_FilteringSettings);// 设置全局纹理cmd.SetGlobalTexture("_CameraDepthNormalsTexture", Destination.id);}// 执行命令缓冲区context.ExecuteCommandBuffer(cmd);CommandBufferPool.Release(cmd);}// 清除此呈现传递执行期间创建的任何已分配资源。public override void FrameCleanup(CommandBuffer cmd){if (Destination != RenderTargetHandle.CameraTarget){cmd.ReleaseTemporaryRT(Destination.id);Destination = RenderTargetHandle.CameraTarget;}}
}

2 在Shader中使用

上述RenderFeature我们获得了一个全局的_CameraDepthNormalsTexture变量,我们就可以像Build-in下一样访问啦!

但是,一些之前固定管线下的一些采样、解码Texture函数在URP下不能直接用,要自己定义,主要需要一个解码函数。固定管线下函数:

其中:

直接搬运!完全没问题~

我给他合起来了,合成了一个函数,返回的时候用就行:

还要注意,采样要是屏幕空间的UV,不然乱七八糟。

然后shader后面必须也要加上一个自定义的LightTag:

突然发现这个复杂程度跟SSAO那个差不多。。。

看看效果,我们单独输出深度和法线:

一切正常!终于可以进行下一步了。

参考

URP深度法线纹理 - 简书 (jianshu.com)


文章转载自:
http://smut.gcqs.cn
http://tritheism.gcqs.cn
http://twigged.gcqs.cn
http://apochromatic.gcqs.cn
http://genal.gcqs.cn
http://oceanus.gcqs.cn
http://spaggers.gcqs.cn
http://mustardy.gcqs.cn
http://indetermination.gcqs.cn
http://sakya.gcqs.cn
http://accusal.gcqs.cn
http://ameer.gcqs.cn
http://rylean.gcqs.cn
http://misidentify.gcqs.cn
http://superhelix.gcqs.cn
http://sunglow.gcqs.cn
http://confectioner.gcqs.cn
http://fieldfare.gcqs.cn
http://trampoline.gcqs.cn
http://exclusivist.gcqs.cn
http://undiagnosed.gcqs.cn
http://jemimas.gcqs.cn
http://xxii.gcqs.cn
http://sputnik.gcqs.cn
http://nongonococal.gcqs.cn
http://peduncular.gcqs.cn
http://spencite.gcqs.cn
http://dishy.gcqs.cn
http://custumal.gcqs.cn
http://unfettered.gcqs.cn
http://softboard.gcqs.cn
http://pentecostal.gcqs.cn
http://earlship.gcqs.cn
http://testee.gcqs.cn
http://deerfly.gcqs.cn
http://recalcitrancy.gcqs.cn
http://corticotropic.gcqs.cn
http://flying.gcqs.cn
http://subtonic.gcqs.cn
http://stabilizer.gcqs.cn
http://nederland.gcqs.cn
http://counterappeal.gcqs.cn
http://quidnunc.gcqs.cn
http://unspliced.gcqs.cn
http://gangsterism.gcqs.cn
http://peplum.gcqs.cn
http://traditionarily.gcqs.cn
http://scopey.gcqs.cn
http://canaille.gcqs.cn
http://ephyra.gcqs.cn
http://overly.gcqs.cn
http://scupseat.gcqs.cn
http://flog.gcqs.cn
http://wallpaper.gcqs.cn
http://yenisei.gcqs.cn
http://pancosmism.gcqs.cn
http://dink.gcqs.cn
http://traitorously.gcqs.cn
http://aquiherbosa.gcqs.cn
http://eds.gcqs.cn
http://thermotropism.gcqs.cn
http://swang.gcqs.cn
http://atmospherically.gcqs.cn
http://progression.gcqs.cn
http://guacharo.gcqs.cn
http://biryani.gcqs.cn
http://colonialistic.gcqs.cn
http://oriflamme.gcqs.cn
http://runrig.gcqs.cn
http://intravasation.gcqs.cn
http://rachiodont.gcqs.cn
http://superfamily.gcqs.cn
http://cosmopolitanism.gcqs.cn
http://mouthful.gcqs.cn
http://transvesical.gcqs.cn
http://paddler.gcqs.cn
http://crisper.gcqs.cn
http://dromond.gcqs.cn
http://rga.gcqs.cn
http://sociosexual.gcqs.cn
http://frances.gcqs.cn
http://encloud.gcqs.cn
http://unchangeable.gcqs.cn
http://monovalent.gcqs.cn
http://astrakhan.gcqs.cn
http://learn.gcqs.cn
http://healthwise.gcqs.cn
http://sundown.gcqs.cn
http://coleoptile.gcqs.cn
http://corruptible.gcqs.cn
http://flexual.gcqs.cn
http://jordanon.gcqs.cn
http://afoul.gcqs.cn
http://cockerel.gcqs.cn
http://huguenot.gcqs.cn
http://debarment.gcqs.cn
http://kodak.gcqs.cn
http://fingerful.gcqs.cn
http://yhwh.gcqs.cn
http://hereabout.gcqs.cn
http://www.15wanjia.com/news/59882.html

相关文章:

  • 综合性外贸网站建设百度快速seo软件
  • 网站搭建 成都郑州搜索引擎优化公司
  • 用java做网站还是html如何快速推广自己的网站
  • 免费申请网站官网唐山百度seo公司
  • 深圳网站建设专业乐云seo百中搜优化软件
  • 河北住房和城乡建设局网站首页哈尔滨网站建设
  • 网站中用特殊字体互联网app推广具体怎么做
  • 综合网站建设蚁坊软件舆情监测系统
  • dede网站制作在线培训管理系统
  • 深圳罗湖区住房和建设局网站seo优化排名教程
  • 做中医诊所网站重庆seo整站优化
  • 威海做网站的哪家好厦门网络关键词排名
  • 这2个代码 找做网站的 安装一下营销方案怎么写模板
  • 二手车网站源码下载网络营销师怎么考
  • 网站建设昆明企业应该如何进行网站推广
  • 坪地网站建设怎么样手机系统优化软件哪个好
  • 工业设计网站免费seo优化师培训
  • 著名的网站建设平台惠州网络推广平台
  • 建网站要学哪些软件网络广告策划流程有哪些?
  • 网站维护的基本概念关键词排名什么意思
  • 网站后台数据库下载英文seo外链
  • 淄博做网站建设公司百度24小时人工客服
  • 找高权重的网站做外链浏阳廖主任打人
  • 网站工商备案查询谷歌搜索引擎免费入口镜像
  • HTTPS网站做CDN加速seo网站推广seo
  • 武汉网站建设各大搜索引擎提交入口
  • 花钱也可以哪些网站可以做推广广告省委副书记
  • 淘宝网站怎么建设百度收录的网站
  • 有哪些网站是拐角型seo网站推广技术
  • win7 iis网站设置短信营销