Unity URP高度雾效果Shader
实现原理
见这篇文章Unity Shader-深度相关知识总结与效果实现(LinearDepth,Reverse Z,世界坐标重建,软粒子,高度雾,运动模糊,扫描线效果)_puppet_master的专栏-CSDN博客_shader深度
核心Shader代码
Shader "Universal Render Pipeline/Dejavu/HeightFog"
{Properties{_MainTex("Base (RGB)", 2D) = "white" {}[HDR]_FogColor("_FogColor (default = 1,1,1,1)", color) = (1,1,1,1)}HLSLINCLUDE
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"CBUFFER_START(UnityPerMaterial)float4 _MainTex_ST;half4 _FogColor;float _FogStartHeight;float _FogHeight;float _FogIntensity;CBUFFER_END//TEXTURE2D(_MainTex);//SAMPLER(sampler_MainTex);sampler2D _MainTex;TEXTURE2D(_CameraDepthTexture);SAMPLER(sampler_CameraDepthTexture);struct appdata {float4 positionOS : POSITION;float2 uv : TEXCOORD0;UNITY_VERTEX_INPUT_INSTANCE_ID};struct v2f {float4 positionCS : SV_POSITION;float2 uv : TEXCOORD0;float3 viewRayWorld : TEXCOORD1;UNITY_VERTEX_OUTPUT_STEREO};//vertex shaderv2f vert(appdata v){v2f o;UNITY_SETUP_INSTANCE_ID(v);UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);o.positionCS = TransformObjectToHClip(v.positionOS.xyz);float sceneRawDepth = 1;#if defined(UNITY_REVERSED_Z)sceneRawDepth = 1 - sceneRawDepth;
#endiffloat3 worldPos = ComputeWorldSpacePosition(v.uv, sceneRawDepth, UNITY_MATRIX_I_VP);o.viewRayWorld = worldPos - _WorldSpaceCameraPos.xyz;o.uv = v.uv;return o;}//fragment shaderfloat4 frag(v2f i) : SV_Target{float sceneRawDepth = SAMPLE_DEPTH_TEXTURE(_CameraDepthTexture, sampler_CameraDepthTexture, i.uv);float linear01Depth = Linear01Depth(sceneRawDepth, _ZBufferParams);float3 worldPos = _WorldSpaceCameraPos.xyz + ( linear01Depth) * i.viewRayWorld;float blendParam = saturate((_FogStartHeight - worldPos.y) / _FogHeight);blendParam = max(linear01Depth * _FogHeight, blendParam);half4 screenCol = tex2D(_MainTex, i.uv);return lerp(screenCol, _FogColor, blendParam * _FogIntensity);}ENDHLSL//开始SubShaderSubShader{//Tags {"RenderType" = "Opaque" "RenderPipeline" = "UniversalPipeline"}Tags{ "RenderPipeline" = "UniversalPipeline" "RenderType" = "Overlay" "Queue" = "Transparent-499" "DisableBatching" = "True" }LOD 100ZTest Always Cull Off ZWrite OffBlend one zeroPass{Name "HeightFog"//后处理效果一般都是这几个状态//使用上面定义的vertex和fragment shaderHLSLPROGRAM#pragma vertex vert#pragma fragment fragENDHLSL}}//后处理效果一般不给fallback,如果不支持,不显示后处理即可
}
实现效果
工程链接
GitHub - Dejavu0709/StudyForShader 中的HeightFog文件夹
Unity URP高度雾效果Shader相关推荐
- Unity URP的四种shader model
https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@10.3/manual/shading-model.htm ...
- GIS融合之路(五)给CesiumJS加上体积云(Volumetric Cloud)和高度雾(Height Fog)
同样在这篇文章开始前重申一下,山海鲸并没有使用ThreeJS引擎.但由于ThreeJS引擎使用广泛,下文中直接用ThreeJS同CesiumJS的整合方案代替山海鲸中3D引擎和CesiumJS整合. ...
- Unity URP世界空间后处理扫描圈效果Shader
实现原理 见这篇文章Unity Shader-深度相关知识总结与效果实现(LinearDepth,Reverse Z,世界坐标重建,软粒子,高度雾,运动模糊,扫描线效果)_puppet_master的 ...
- Unity Shader PostProcessing - 11 - Depth Fog/Height Fog - 雾效/深度雾效/高度雾/深度+高度雾
文章目录 观察生活中的雾 Scenario 1 - Pure Depth Fog - 纯深度雾 提取有用信息 Scenario 2 - Height Fog - 带高度的雾 提取有用信息 Scenar ...
- Unity Shader - Post Processing 15 - Height Fog (Plus) - 后效 高度雾 改进版 (Parallax)、模拟闪电在云层中SSS
文章目录 环境 问题 Parallax 原理 GGB 效果 模拟闪电在云层中SSS 测试脚本 效果 GIF Project References 环境 Unity : 2018.2.11f1, 201 ...
- unity urp自定义后处理 雾效 深度雾,高度雾 简版
1,c#代码 using System.Collections; using System.Collections.Generic; using UnityEngine;public static c ...
- Unity URP运动模糊效果Shader
实现原理 见这篇文章Unity Shader-深度相关知识总结与效果实现(LinearDepth,Reverse Z,世界坐标重建,软粒子,高度雾,运动模糊,扫描线效果)_puppet_master的 ...
- Shader之——高效率高度雾 云海
在网上研究了好长一段时间的高度雾 ,大概的方法分两种,一种是屏幕特效,一种是区域的模拟,都是需要开启相机的深度图,对移动端来说效率还是有一定的影响的,最后都放弃了.用我的野路子方法实现了个物体上的高度 ...
- Unity从零开始实现一个全息效果Shader
Unity从零开始实现一个全息效果Shader 前言 开始捣鼓 一.准备阶段 二.先从透明效果开始 三.顶点故障效果 四.扫描线效果 五.菲尼尔反射效果 六.颗粒效果 七.颜色故障效果 CustomE ...
最新文章
- react native基本调试技巧
- asp.net与JAVASCRIPT函数的相互调用
- 监控oracle数据io,Prometheus监控Oracle数据库
- libv4l 库【转】
- AspectJ声明式事务配置
- 设置相机的距离_数码相机的曝光判断标准是什么
- 《精通 ASP.NET MVC 3 框架(第三版)》----第1章 设计思路 1.1 Web开发简史
- 网站后台目录扫描工具Dirbuster和御剑(脚本小子的最爱)
- Java之JDBC安装、使用详解(2021最新!)
- 程序员年薪45万,国企年薪20万,该不该跳槽去国企?
- web前端开发学习经验分享——css,js进阶篇
- python中pd是什么意思_python pd
- Mybatis中如何实现一对一,一对多的关联查询?
- IT类职位常用缩写 SA SD RD PG PM DBA MIS QA Sales
- Java-绘图软件(Windows画板)
- GIT回顾(持续更新)
- java用socket和serversocket实现一对一聊天(java实现简单的TCP聊天程序)
- 字符编码在项目中的应用(一)
- 计算机vb计算函数值,VB计算公式及值.doc
- “技术男”升为“管理者”,角色一定要转变,你有好方法吗?
热门文章
- java 的“mwq”_java的对象模型 - osc_mwqvsfzo的个人空间 - OSCHINA - 中文开源技术交流社区...
- P3368 【模板】树状数组 2(区间修改单点查询)
- mysql 20小时内,mysql中关于date(Y-m-d H:i:s) 入库慢8小时的解决
- Python统计分析--- 5.统计法与随机梯度下降(SGD)
- 容器大小_C++ 顺序容器基础知识总结
- java session使用_java学习之web基础(8):使用session实现带验证码的登录功能
- php是独立服务吗,使用Sprockets作为PHP应用程序的独立服务
- java set的first_Java Pair.setFirst方法代码示例
- multinorm r语言_与心理学数据分析相关的R工具包
- 数据结构-队列之循环队列