Unity Shader unity文档学习笔记(十八):unity雾效原理

news2024/11/15 17:50:20

看很多文章用近平面远平面组成矩阵后转到裁剪空间下通过Z值来解,实际更简单的方式可以直接通过判断距离来实现

FogMgr控制远近面

public class TestFog : MonoBehaviour
{
    public int startDis = 0;
    public int endDis = 50;

    public Vector4 fogParam;

    public void Awake()
    {
        fogParam = new Vector4(startDis, endDis, 0, 0);
        Shader.SetGlobalVector("DisFog", fogParam);
    }
}

Test_Fog.cginc 库

#ifndef TEST_FOG
#define TEST_FOG

float4 DisFog;

float MyComputerFog(float3 worldPos)
{
    float fogFactory = distance(worldPos.xz, _WorldSpaceCameraPos.xz)/(DisFog.y - DisFog.x);
    return fogFactory;
}

#endif

TestFog shader

Shader "Test/TestFog"
{
    Properties
    {
        _MainTex ("Texture", 2D) = "white" {}
        _FogColor ("FogColor", Color) = (1, 1, 1, 1)
    }
    SubShader
    {
        Tags { "RenderType"="Opaque" }
        LOD 100

        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag

		    #include "UnityCG.cginc"
            #include "Test_Fog.cginc"

            struct appdata
            {
                float4 vertex : POSITION;
                float2 uv : TEXCOORD0;
            };

            struct v2f
            {
                float2 uv : TEXCOORD0;
               	float3 worldPos : TEXCOORD1;
                float4 vertex : SV_POSITION;
            };

            sampler2D _MainTex;
            float4 _MainTex_ST;

            float4 _FogColor;

            v2f vert (appdata v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv = TRANSFORM_TEX(v.uv, _MainTex);
                o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;
                return o;
            }

            fixed4 frag (v2f i) : SV_Target
            {
                // sample the texture
                fixed4 col = tex2D(_MainTex, i.uv);
                fixed4 fogColor = _FogColor * MyComputerFog(i.worldPos);
                return lerp(col, fogColor, 0.5);
            }
            ENDCG
        }
    }
}

效果

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springboot宠物宿舍管理系统-计算机毕业设计源码74795

目录 摘要 1 绪论 1.1 选题背景与意义 1.2国内外研究现状 1.3论文结构与章节安排 2系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1系统开发流程 2.2.2 用户登录流程 2.2.3 系统操作流程 2.2.4 添加信息流程 2.2.5 修改信息流程 2.2.6 删除信息流程 2.3 系统功能…

javascript:判断输入值是数字还是字母

1 代码示例 要判断输入值是数字还是字母&#xff0c;我们可以通过JavaScript获取输入框的值&#xff0c;然后使用isNaN函数来检查输入值是否为数字。 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title><s…

第一阶段面试问题(后半部分)

1. c语言中const *p的用法 &#xff08;1&#xff09;const int *p; 或 int const *p; 指向常量整数的指针&#xff0c;通过这个指针不能修改它所指向的整数值&#xff0c;但可以修改指针本身来指向其他地址 const int a 10; const int *p &a; // *p 20; // 错误&…

商家拒单业务

文章目录 概要整体架构流程技术细节小结 概要 商家拒单是电子商务、外卖平台、在线零售等多个行业中可能出现的情况&#xff0c;指的是商家拒绝接受或完成某个订单。这种情况的发生可能由多种原因引起&#xff0c;同时也涉及到商家、平台和消费者的利益平衡。 需求分析以及接…

CTFHUB-XSS-反射型

开启题目&#xff0c;页面如下 先输入以下语句测试一下&#xff0c;发现页面弹出窗口显示“flag”&#xff0c;说明这里存在 XSS 漏洞 <script>alert("flag")</script> 验证存在 XSS 漏洞后&#xff0c;使用 document.cookie 语句在弹窗和控制台中输出当…

DOM案例

一.什么是DOM DOM(Document Object Model)文档对象模型的树形结构 说白了就是用js操作网页 使用方法: 1.找到对象 2.操作 操作网页 节点属性 改变网页内容.... 文档对象模型就是一个树形结构&#xff0c;类似于家谱树 html标签里面包裹了所有的文档内容。他是一个**父亲节…

用了组合式 (Composition) API 后代码变得更乱了,怎么办?

前言 组合式 (Composition) API 的一大特点是“非常灵活”&#xff0c;但也因为非常灵活&#xff0c;每个开发都有自己的想法。加上项目的持续迭代导致我们的代码变得愈发混乱&#xff0c;最终到达无法维护的地步。本文是我这几年使用组合式API的一些经验总结&#xff0c;希望…

【从相邻元素对还原数组】python刷题记录

R3-图篇 饭前一道题 思路&#xff1a; 单向构造 class Solution:def restoreArray(self, adjacentPairs: List[List[int]]) -> List[int]:mnlen(adjacentPairs)#n表示数组元素总数n1#统计dictdefaultdict(int)#存储关系哈希表hashmapdefaultdict(list)for a,b in adjacent…

DeDeCMS漏洞

一.登陆后台 二.文件管理上传shell 我们写一个一句话木马 然后上传 访问他 然后复制网址用工具连接 连接成功 修改模板文件拿shell 找到index.html修改 保存 然后进行下面的操作 访问返回的地址 然后用工具连接 三、后台任意命令执行拿shell 然后写入一个木马 添加成功 点击代…

开源:LLMCompiler高性能工具调用框架

开源&#xff1a;LLMCompiler高性能工具调用框架 LLMCompilerLLMCompiler 框架图任务提取单元使用方式参考链接 LLMCompiler LLMCompiler 是一种 Agent 架构&#xff0c;旨在通过在DAG中快速执行任务来加快 Agent 任务的执行速度。它还通过减少对 LLM 的调用次数来节省 Tokens …

51 华三路由

PC4 路由 能通的区域 MSR2

Vue和React谁更牛逼?看了你就有答案

你好同学&#xff0c;我是沐爸&#xff0c;欢迎点赞、收藏和关注&#xff01;个人知乎、公众号"沐爸空间" 使用 Chrome 浏览器&#xff0c;安装 Vue.js Devtools 和 React Developer Tools 浏览器插件后&#xff0c;打开网站即可知晓当前网站是使用的 Vue 框架还是 …

JCの技巧

当你们私下有矛盾&#xff0c;&#xff08;或者你被J惨了&#xff09;,可以试试以下方法 1.拔电线 优点&#xff1a;快准狠 缺点&#xff1a;看看你身后 2.定时关机 优点&#xff1a;猝不及防 缺点&#xff1a;设置时容易翻车 3.改代码 优点&#xff1a;长代码看不出来…

【数据结构入门 】队列

目录 前言 一、队列的概念及结构 1.概念 2.结构 二、队列的实现 1.队列的声明 2.初始化队列 3.队列的销毁 4.入队 5.出队 6.获取队列有效元素个数 7. 判断队列是否为空 8.获取队首元素 9.获取队尾元素 结论 前言 队列是一种数据结构&#xff0c;它遵循先进先出&#…

数字与位操作——168、670、233、357、400

168. Excel表列名称&#xff08;简单&#xff09; 给你一个整数 columnNumber &#xff0c;返回它在 Excel 表中相对应的列名称。 例如&#xff1a; A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28 ...示例 1&#xff1a; 输入&#xff1a;columnNumb…

[NISACTF 2022]ezstack-入土为安的第十四天

签到题吧 checksec pwn 没有保护 进入main函数&#xff0c;点进shell &#xff0c;buf 88808048buf system 08048512 /bin/sh 0804A024 直接让代码溢出调用system和/bin/sh from pwn import *# 连接到远程服务 p remote(node5.anna.nssctf.cn, 20789)# 构造 payload payl…

第三期书生大模型实战营之Llamaindex RAG实践

基础任务 任务要求&#xff1a;基于 LlamaIndex 构建自己的 RAG 知识库&#xff0c;寻找一个问题 A 在使用 LlamaIndex 之前InternLM2-Chat-1.8B模型不会回答&#xff0c;借助 LlamaIndex 后 InternLM2-Chat-1.8B 模型具备回答 A 的能力&#xff0c;截图保存。 streamlit界面…

OS_进程

2024.06.25&#xff1a;操作系统进程学习笔记 第6节 进程 6.1 进程的定义6.2 进程的基本特征&#xff08;动态、并发、独立、异步&#xff09;6.3 机器状态&#xff08;进程可以读取/更新的内容&#xff09;6.3.1 虚拟化技术6.3.2 进程的地址空间&#xff08;虚拟存储器技术要学…

基于OpenCV-Python的彩色图像傅里叶变换

如果用OpenCV-Python进行图像的离散傅里叶变换与逆变换其实还蛮简单的&#xff0c;流程就是上图所示&#xff0c;值得注意的是&#xff0c;如果是多通道的图像&#xff0c;譬如多光谱、高光谱图像&#xff0c;需要对每个通道都进行傅里叶变换&#xff0c;最后再聚合&#xff0c…

数字乡村 | 是什么、建什么、怎么建?附200份详尽解决方案下载

数字乡村是什么 如何将数字乡村建设与全面实施乡村振兴战略有效衔接&#xff0c;已成为当前农业农村工作的重要课题。 200份资料下载方式&#xff0c;请看每张图片右下角信息 数字乡村作为一种新的乡村社会发展形态&#xff0c;是当今第四次工业革命工业互联网 生态系统的持…