shader学习记录——彩色光圈

news2024/11/29 6:28:39

参考连接 https://blog.csdn.net/stalendp/article/details/21993227

Shader "Custom/ColorRingShader"
{
    Properties
    {
        _MainTex ("Texture", 2D) = "white" {}
    }
    SubShader
    {
        Tags { "RenderType"="Opaque" }
        LOD 100

        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            // make fog work
            #pragma multi_compile_fog

            #include "UnityCG.cginc"

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

            struct v2f
            {
                float2 uv : TEXCOORD0;
                UNITY_FOG_COORDS(1)
                float4 vertex : SV_POSITION;
            };

            sampler2D _MainTex;
            float4 _MainTex_ST;

            v2f vert (appdata v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv = TRANSFORM_TEX(v.uv, _MainTex);
                UNITY_TRANSFER_FOG(o,o.vertex);
                return o;
            }

            fixed4 frag(v2f i) : SV_Target
            {
     float2 p =(2.0 * i.uv.xy - 1);//修改uv区间在(-1,1)
   //p = float2(p.x *_ScreenParams.x , p.y* _ScreenParams.y);
    float tau = 3.1415926535 * 2;//2Π
    float a = atan2(p.x,p.y);//a表示p点绕原点的角度,范围为[-π,π];所以uv.x = a/tau的范围为[-1/2, 1/2];
    float r = length(p) * 0.75;//半径
    float2 uv = float2(a / tau,r);
    float iTime = _Time.z;
    //get the color
    float xCol =(uv.x - (iTime / 3.0)) * 3.0;
    xCol = sign(xCol) * fmod(xCol,3.0);//设置xCol范围[0,3]
    float3 horColour = float3(0.25,0.25,0.25);//基础色

    if (xCol < 1.0) //[0,3]分三份,分别做颜色的混合
    {

        horColour.r += 1.0 - xCol;
        horColour.g += xCol;
    }
    else if (xCol < 2.0) {

        xCol -= 1.0;
        horColour.g += 1.0 - xCol;
        horColour.b += xCol;
    }
    else {

        xCol -= 2.0;
        horColour.b += 1.0 - xCol;
        horColour.r += xCol;
    }

    // draw color beam
    uv = (2.0 * uv) - 1.0;
    //光圈动画
    float tt = 5.0 + 10 * cos(iTime);
    float param = clamp(floor(tt),0,10);//设置在[0,10]之间的整数
    float rimLight = 3;//0.7;//轮廓光晕
    float beamWidth = (rimLight +0.5*cos(uv.x * 10.0 * tau * 0.15 * param));
    beamWidth= beamWidth*abs(1.0 / (30.0 * uv.y));
    float3 horBeam = float3(beamWidth, beamWidth, beamWidth);
   return float4(((horBeam)*horColour), 1.0);
            }
            ENDCG
        }
    }
}

在这里插入图片描述

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

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

相关文章

fastapi docs打开为空白解决办法

空白的原因 使用的cdn为国外cdn 解决办法 使用国内cdn 解决步骤 1.打开此文件D:\Program Files\Python\Lib\site-packages\fastapi\openapi\docs.py 2.修改cdn地址 国内cdn不好找呀 &#xff08;1&#xff09;.七牛云存储 开放静态文件CDN&#xff0c;地址&#xff1a;h…

ubuntu20离线安装nodejs、GO、go.rice及yarn

虽然是离线安装&#xff0c;但该有的安装包还是需要的… 目录 1、安装nodejs1.1查看本地是否存在nodejs1.2创建nodejs文件夹1.3下载nodejs二进制文件1.4解压并改名1.5添加软连接 2安装GO2.1创建go文件夹2.2下载go二进制文件2.3解压文件2.4添加环境变量2.5设置sudo可执行go命令…

C++11 function包装器

前言 在C中&#xff0c;有三种可调用对象&#xff1a;函数指针&#xff0c;仿函数&#xff0c;lambda表达式。 三者有相似的作用和效果&#xff0c;但使用形式有很大的差异。 为了进行统一&#xff0c;C11引进了function包装器 文章目录 前言一. function的使用二. function对…

DataGrip连接clickhouse数据库后,左侧不显示库中的表

一、问题描述 使用datagrip链接clickhouse&#xff0c;本来左侧时可以显示数据库中对应的表的列表的。但是&#xff0c;这个链接clickhouse不显示。 二、问题解决 参考一些文档后&#xff0c;而且因为当前采用的时2023.1.2的版本&#xff0c;所以&#xff0c;选项有些改变。…

记录AndroidStrudio打包报错与解决方案(一)

问题一&#xff1a;打包报错 Unity.IL2CPP.Building.BuilderFailedException: C:\Users\user\AppData\Local\Android\Sdk\ndk\21.0.6113669\toolchains\llvm\prebuilt\windows-x86_64\bin\clang "C:\Users\user\AppData\Local\Temp\tmp7277.tmp" -o "D:\Buil…

Linux计划任务crontab

顺序是可以任意的, 任意指的是,选项可以都放前面 变量放后面 或者一个选项 一个选项对应的命令 df 查看文件占有情况 d1 只显示1级深度 -h格式好看点 显示所有用户进程和内存进程. uid是所属用户 PPID是父进程 kill终止进程 杀死进程&#xff0c;是正常退出。 如果普通杀不…

数据智能交融,AI引领未来 | 数说故事成为华为云盘古大模型3.0首批联创单位之一

7月7日-9日&#xff0c;华为开发者大会2023&#xff08;Cloud&#xff09;在东莞举行&#xff0c;并在7日下午正式对外发布“华为云盘古大模型3.0”。盘古大模型3.0围绕行业重塑、技术扎根、开放同飞三大方向&#xff0c;持续打造核心竞争力&#xff0c;为行业客户、伙伴及开发…

疯狂收割offer,软件测试面试题,项目经验板块常问(附答案)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 面试题&#xff1…

CCLINK转MODBUS-TCP网关cclink利modbus区别

大家好&#xff0c;今天我们要聊的是生产管理系统中的CCLINK和MODBUS-TCP协议&#xff0c;它们的不同使得数据互通比较困难&#xff0c;但远创智控YC-CCLK-TCP网关的出现改变了这一切。 1&#xff0c; 远创智控YC-CCLK-TCP是一款自主研发的CCLINK从站功能的通讯网关&#xff…

快讯丨北京市委书记尹力到极智嘉调研指导

据北京日报7月4日报道&#xff0c;2023全球数字经济大会开幕前夕&#xff0c;市委书记尹力围绕“深入学习贯彻新时代中国特色社会主义思想&#xff0c;推进全球数字经济标杆城市建设”&#xff0c;到海淀区、朝阳区调查研究。 7月3日下午&#xff0c;北京市委书记尹力到极智嘉全…

一分钟让你学会文件的打开与关闭函数

文章目录 前言文件打开函数-fopen函数介绍文件的打开形式相对路径与绝对路径 文件关闭函数-fclose文件操作正确流程 前言 我们已经了解了文件基本概念&#xff0c;那么我们如何通过代码对某一个文件进行一些文件操作呢&#xff1f;比如如何打开文件、关闭文件以及如何向文件中…

promQL详细语法介绍

目录 promQL 在表达式中支持的数据类型 简单语法介绍 rate的用法 指标过滤搜索 时间单位 聚合表达式 11个聚合函数 二元运算符&#xff08;Binary Operators&#xff09; 二元运算符优先级 向量匹配 向量一对一匹配 向量一对多/多对一匹配 promQL 在表达式中支持的数据…

抽象类与纯虚函数的具体应用

运行代码&#xff1a; //定义一个带有一个纯虚函数pvf()的B2类 //定义D21类&#xff0c;包含一个string数据成员和一个覆盖pvf()的成员函数&#xff0c;D21::pfv()输出string数据成员的值 //定义D22类&#xff0c;它与D21类一样&#xff0c;只是数据成员为int类型 //定义函数f…

数据库应用:MySQL数据库SQL高级语句与操作

目录 一、理论 1.克隆表与清空表 2.SQL高级语句 3.SQL函数 4.SQL高级操作 二、实验 1.克隆表与清空表 2.SQL高级语句 3.SQL函数 4.SQL高级操作 三、总结 一、理论 1.克隆表与清空表 克隆表&#xff1a;将数据表的数据记录生成到新的表中。 &#xff08;1&#xff0…

【算法集训之线性表篇】Day 04

文章目录 题目一分析思路一思路二 代码实现效果题目二分析代码实现效果 题目一 从有序顺序表中删除所有其值重复的元素&#xff0c;使所有元素的值都不相同。 分析 思路一 首先&#xff0c;在有序顺序表中&#xff0c;所有值重复的元素相邻。为此&#xff0c;我们只需顺序访…

如何批量复制淘宝商品上传上架到虾皮 shopee (轻松学会宝贝复制技巧)

今天&#xff0c;入驻虾皮的商家越来越多&#xff0c;且很多的 shopee 店主在国内都开了淘宝店&#xff0c;当 shopee 店铺入驻成功后&#xff0c;想把淘宝店铺的商品搬到 shopee&#xff0c;怎么搬呐&#xff1f; 方法 / 步骤 方法1&#xff1a;整理你想要采集的店铺首页链接…

MySQl数据库第六课-------SQl命令的延续------快来看看

作者前言 欢迎小可爱们前来借鉴我的gtiee秦老大大 (qin-laoda) - Gitee.com ———————————————————————————————— 目录 SQl语句 数据库操作 数据表操作 SQL增删 ———————————————————————————— 插播小知识 1…

stm32(独立看门狗和窗口看门狗)

独立看门狗介绍 什么是看门狗&#xff1f; 在由单片机构成的微型计算机系统中&#xff0c;由于单片机的工作常常会受到来自外界电磁场的干扰&#xff0c;造 成程序的跑飞&#xff0c;而陷入死循环&#xff0c;程序的正常运行被打断&#xff0c;由单片机控制的系统无法继续工作…

setTimeout

Promise延时的几种表述方法 第一种 var pdocument.getElementById("demo"); async function myFunction(){await new Promise(function(resolve){setTimeout(function(){p.innerHTML"延时成功";resolve();},1000);}); } myFunction();第二种 var pdocum…

完了完了完了!线上发生 OOM 了!

现象 线上某个服务有接口非常慢&#xff0c;通过监控链路查看发现&#xff0c;中间的 GAP 时间非常大&#xff0c;实际接口并没有消耗很多时间&#xff0c;并且在那段时间里有很多这样的请求。 原因分析 先从监控链路分析了一波&#xff0c;发现请求是已经打到服务上了&#…