一日一Shader·点阵图【SS_6】

2023-11-06 22:51
文章标签 shader ss 一日 点阵图

本文主要是介绍一日一Shader·点阵图【SS_6】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今天准备做一个星座图,不过时间有点紧,只做了一半:

做了一堆星,但是星与星之间的连线还得花些功夫,不过这种效果还挺有趣的,就先放上来了。

制作这种图的思路就是先绘制点:

 if(pow((i.uv.x- _point.x ),2) + pow((i.uv.y- _point.y ),2) <_Size )col+=_Color;

这是来自于圆的方程,高中就学过的。

再绘制点阵:

                     fixed2 GetNormalPoses(fixed2 pos){fixed _xUnit=1/_Row;                     fixed _yUnit=1/_Column;    return fixed2((pos.x+0.5)*_xUnit,(pos.y+0.5)*_yUnit);}

这是根据x,y编号转换为UV坐标,其中加0.5是为了让点阵居中。

最后让点扭动起来,而扭动的方式有很多,还有各种参数可调,这个可以随意发挥:

                     fixed2 GetTwirlPos(fixed2 pos){fixed t = _Time.y;if (t > 360) {t -= 360;}             fixed xy=t*pos.x*pos.y;fixed s = sin(xy)*_Twirl;fixed c = cos(xy)*_Twirl;                           return pos+fixed2(s,c);}

关键代码段就这些了。

全部代码放最后:

Shader "MyShader/SS_6"
{Properties{_Row("Row",float)=10_Column("Column",float)=10        _Twirl("Twirl",float)=0.01_Size("Size",float)=0.00001[HDR]_Color("Color",Color)=(0,0,0,0)     [HDR]_BGColor("BGColor",Color)=(0,0,0,0)}SubShader{Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag                    #include "UnityCG.cginc"fixed _Column;fixed _Row;   fixed _Size;fixed _Twirl;fixed4 _Color;fixed4 _BGColor;struct appdata{float4 vertex : POSITION;float2 uv : TEXCOORD0;};struct v2f{float4 vertex : SV_POSITION;float2 uv : TEXCOORD0;float4 worldPos   : TEXCOORD1;};     v2f vert (appdata v){v2f o;o.vertex = UnityObjectToClipPos( v.vertex);o.uv = v.uv;o.worldPos = mul(unity_ObjectToWorld, v.vertex);return o;}//获取整齐的点阵fixed2 GetNormalPoses(fixed2 pos){fixed _xUnit=1/_Row;                     fixed _yUnit=1/_Column;    return fixed2((pos.x+0.5)*_xUnit,(pos.y+0.5)*_yUnit);}//扭动:注意这个函数要写在GetTwirlPoses前面,否则会报错fixed2 GetTwirlPos(fixed2 pos){fixed t = _Time.y;if (t > 360) {t -= 360;}             fixed xy=t*pos.x*pos.y;fixed s = sin(xy)*_Twirl;fixed c = cos(xy)*_Twirl;                           return pos+fixed2(s,c);}//获取扭动的点阵fixed2 GetTwirlPoses(fixed2 pos){fixed _xUnit=1/_Row;                     fixed _yUnit=1/_Column;    fixed2  temp=fixed2((pos.x+0.5)*_xUnit,(pos.y+0.5)*_yUnit);return GetTwirlPos(temp);}                    fixed4 frag(v2f i) : SV_Target{                        fixed4 col=   fixed4(0,0,0,1);//生成若干点,随机分布for(fixed x=0;x<_Column;x++){for(fixed y=0;y<_Row;y++){fixed2 _point=GetTwirlPoses(fixed2(x,y));if(pow((i.uv.x- _point.x ),2) + pow((i.uv.y- _point.y ),2) <_Size ){col+=_Color;}}}if(col.x+col.y+col.z<=0){col= _BGColor;                           }return col;}                    ENDCG}}
}

最后的最后,放上我的参数:

这篇关于一日一Shader·点阵图【SS_6】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/359536

相关文章

Unity3D Shader详解:只画顶点或只画线框

在Unity3D开发中,Shader是控制渲染过程的关键组件,它允许开发者自定义物体的渲染方式。有时,为了特定的视觉效果,我们可能需要只渲染模型的顶点或者只显示其线框。下面,我们将详细探讨这两种效果的技术实现,并给出相应的代码示例。 对惹,这里有一个游戏开发交流小组,大家可以点击进来一起交流一下开发经验呀! 只画顶点 在Unity中直接“只画顶点”的概念可能不是非常直观,因为顶点本身只是模型

unity shader实现一个移动的箭头

Shader "Unlit/LT_Arrow" {     Properties     {         _MainTex ("Texture", 2D) = "white" {}         _MSpeed("MoveSpeed", Range(1, 3)) = 2 //移动速度     }     SubShader     {         //贴图带透明通道 ,半透明效果设置如下

Shader学习笔记

1. 渲染管线概述 定义:渲染管线(流水线)就是将数据分阶段的变为屏幕图像的过程 数据就是我们在游戏场景中放置的模型、光源、摄像机等等内容的数据 阶段就是渲染管线中的三个阶段:应用阶段一>几何阶段一>光栅化阶段 通过这三个阶段对数据的处理,最终我们就能够在屏幕上看见最终的图像 2. 应用阶段 应用阶段的大部分内容都和渲染无关(游戏逻辑处理、动画更新、物理模拟)几何阶段和光栅化阶段将开始处理

多目标应用:基于自组织分群的多目标粒子群优化算法(SS-MOPSO)的移动机器人路径规划研究(提供MATLAB代码)

一、机器人路径规划介绍 移动机器人(Mobile robot,MR)的路径规划是 移动机器人研究的重要分支之,是对其进行控制的基础。根据环境信息的已知程度不同,路径规划分为基于环境信息已知的全局路径规划和基于环境信息未知或局部已知的局部路径规划。随着科技的快速发展以及机器人的大量应用,人们对机器人的要求也越来越高,尤其表现在对机器人的智能化方面的要求,而机器人自主路径规划是实现机器人智能化的

element-ui 日期选择器用value-format 带上“HH:mm:ss”的时候报错

1. 想用 element-ui 日期选择器取出 “yyyy-MM-dd HH:mm:ss” 格式的日期时间数据。 2. 用 value-format 带上“HH:mm:ss”的时候报错。 <el-form-item prop="time" label="结算时间:"><el-date-picker v-model="settleDO.time" type="datetime" value-f

Shader,想说爱你不容易。

这两天开始接触shader,给我的第一感觉是容易,第二感觉是难,第三赶脚是数学不好就先学数学吧! 首先我们通过unity自己创建一个shader脚本的时候,其实shader已经给我们搭建好了编写shader基本的框架,我们要做的就是往里面写自己的shader,但是写之前总的先认识这里面有啥子东西吧。先创建一个shader瞅瞅,我使用的unity的版本为5.x,代码如下: Shader

UE【材质编辑】Shader模板

【UE 4.27.2】         在UE中双击材质球会进入材质编辑界面。PBR的材质参数呈现为材质蓝图的各个节点,提供数据源,传递进材质。最后材质对其进行组织,呈现为VS,PS等着色器代码,基本流程: 本文会刨析在UE4.27.2中材质模板是如何应用的。 1.认识编辑器中的材质         打开任意材质球,双击进入材质编辑面板: 此界面形象展示了材质参数传递到材质(实例

SS-31;Elamipretide;伊拉米肽;线粒体靶向抗氧化剂SS-31肽;CAS:736992-21-5

【SS-31 简介】         SS-31肽是一种心磷脂过氧化物酶抑制剂和线粒体靶向肽。 它可以改善左心室和线粒体功能。SS-31肽可减轻 人小梁网状细胞中的线粒体功能障碍和氧化损伤。它可以防止iHTM和GTM(3)细胞受到H2O2诱导的持续氧化应激。慢性心力衰竭和线粒体肌病的I期临床试验正在进行中。         H-Dmt-D-Arg-Phe-Lys-NH2 (Dmt:2,6-di

【Unity Shader】Unity提供的CG/HLSL语义

主要参考《Unity Shader入门精要》一书,外加自己的一些总结 什么是语义 语义实际就是一个赋给Shader输入和输出的字符串,这个字符串表达了这个参数的含义。这些语义可以让Shader知道从哪里读取数据,并把数据输到哪里。 在DirectX10以后,有了一种新的语义类型,即系统数值语义(system-value semantics)。这类语义是以SV

Shader笔记:光照与阴影1

引:旋转动画(三角函数) float3 rotationY(float3 vertex){float c = cos(_Time.y*_Speed);float s = sin(_Time.y*_Speed);float3x3 m = {c,0,s,0,1,0,-s,0,c};return mul(m,vertex);}v2f vert (a2v v){v2f o;o.pos = Unit