首页 > 其他分享 >shader 一步一步 日记累月 ----极坐标

shader 一步一步 日记累月 ----极坐标

时间:2024-01-11 16:57:11浏览次数:33  
标签:UV MainTex 一步 uv 0.5 shader 累月 极坐标 float2

学习shader 就是在考察 数学知识
极坐标

复习一下极坐标的点的位置是靠theta(角度)和r(距离)两个信息(二维空间)

shader:

            // 直角坐标转极坐标方法
            float2 RectToPolar(float2 uv, float2 centerUV) {
                uv = uv - centerUV;                 //改变中心 将中心从UV左下角移到UV中心
                float theta = atan2(uv.y, uv.x);    // atan()值域[-π/2, π/2]一般不用; atan2()值域[-π, π]确定一个完整的圆
                float r = length(uv);               //UV上的某一点到我们确定的中心得距离
                return float2(theta, r);
            }


            // 输出结构>>>像素
            half4 frag(VertexOutput i) : COLOR {
                // 直角坐标转极坐标
                float2 thetaR = RectToPolar(i.uv, float2(0.5, 0.5));
                // 极坐标转纹理采样UV
                float2 polarUV = float2(
                    thetaR.x / 3.141593 * 0.5 + 0.5,    // θ映射到[0, 1]
                    thetaR.y + frac(_Time.x * 3.0)      // r随时间流动
                );
                // 采样MainTex
                half4 var_MainTex = tex2D(_MainTex, polarUV);
                // 处理最终输出
                half3 finalRGB = (1 - var_MainTex.rgb) * _Color;
                half opacity = (1 - var_MainTex.r) * _Opacity * i.color.r;
                // 返回值
                return half4(finalRGB * opacity, opacity);
            }      

  

 

标签:UV,MainTex,一步,uv,0.5,shader,累月,极坐标,float2
From: https://www.cnblogs.com/porter/p/17958878

相关文章

  • Cocos Creator 3.8 开发2D水面波纹Shader
     使用cocosCreator3.8做了一个游戏开中常用的2D的波浪水面,把技术点给记录一下,并提供完整的Shader代码。先上效果:   2D波浪的基本技术原理 2D水面波纹的主要原理就是给定一个正选波的边界,在范围内的片元uv就显示,在范围外的片元uv就不显示。同时利用正弦波表达式:......
  • Shader随笔02
    GlobalBake这里是简化Lighting.cginc的UnityGI_Base函数以及AutoLight.cginc的LightingLambert来实现bake贴图采样(没开灯光)其中,Mixed是重点DirectionalMode是重点Light组件的Mode需要调成Mixed完成以上内容可以在使用unity标准Shader的情况下看的bake情况自定义cginc......
  • 检测电源模块质量,轻松掌握 一步测出电源模块好坏 boshida dcdc acdc单双路输出
    检测电源模块质量,轻松掌握一步测出电源模块好坏boshidadcdcacdc单双路输出要检测电源模块的好坏,可以采取以下步骤:使用多用途测试仪或万用表测量电源模块的输出电压。将测试仪的红色测试笔连接到电源模块的输出正极,黑色测试笔连接到输出负极。根据电源模块的规格,测量输出电压是......
  • 基于代码一步一步教你深度学习中循环神经网络(RNN)的原理
    当谈到基于RNN(循环神经网络)的机器学习例子时,一个常见的任务是文本生成。RNN是一种能够处理序列数据的神经网络,它具有记忆能力。以下是一个基于RNN的文本生成例子,并给每一行添加了详细注释:1.importtorch2.importtorch.nnasnn3.importtorch.optimasoptim4.5.#定义......
  • 想快人一步!不得不看的《鸿蒙(HarmonyOS)学习指南》
    鸿蒙就是鸿蒙,安卓就是安卓据鸿蒙产业链人士透露,华为下一代鸿蒙5.0版本或将不再兼容安卓系统,此举意味着鸿蒙系统将退出Android生态圈,华为手机也将只支持鸿蒙系统应用。今后国内手机操作系统,将形成由安卓与iOS两大阵营演变成Android、iOS、Harmony三分天下的局面。随着鸿蒙发展速度越......
  • 新规施行推动数据资产化迈出关键一步
    《经济参考报》1月2日刊发文章《新规施行推动数据资产化迈出关键一步》。文章称,2024年1月1日起,《企业数据资源相关会计处理暂行规定》(下称《暂行规定》)正式施行。《暂行规定》明确数据资源的确认范围和会计处理适用准则等。业内人士表示,这是推动数据资产化和数据要素发展的关键一步......
  • ProjectorMultiply.Shader 非固定管线版本
    //UpgradeNOTE:replaced'_Projector'with'unity_Projector'//UpgradeNOTE:replaced'_ProjectorClip'with'unity_ProjectorClip'Shader"Projector/Multiply"{Properties{_ShadowTex("......
  • Unity3d Vertex/Fragment Shader添加Shadow
    Shader"ZX/BaseVertFragmentShadow"{Properties{_DiffuseTexture("DiffuseTexture",2D)="white"{}_DiffuseTint("DiffuseTint",Color)=(1,1,1,1)}SubShader{......
  • 一步一步教你写kubernetes sidecar
    本文分享自华为云社区《一步一步教你写kubernetessidecar》,作者:张俭。什么是sidecar?sidecar,直译为边车。如上图所示,边车就是加装在摩托车旁来达到拓展功能的目的,比如行驶更加稳定,可以拉更多的人和货物,坐在边车上的人可以给驾驶员指路等。边车模式通过给应用服务加装一个“边车”......
  • 一步一步教你写kubernetes sidecar
    本文分享自华为云社区《一步一步教你写kubernetessidecar》,作者:张俭。什么是sidecar?sidecar,直译为边车。如上图所示,边车就是加装在摩托车旁来达到拓展功能的目的,比如行驶更加稳定,可以拉更多的人和货物,坐在边车上的人可以给驾驶员指路等。边车模式通过给应用服务加装一个“边车”......