Node:Ellipse
绘制圆形
Node:Rectangle
绘制长方形
Node:Rounded Rectangle
绘制圆角长方形
Node:Polygon
绘制五边形
Node:Subtract
绘制中空圆形
绘制多个形状
绘制带阴影的形状
反色
Node:UV
Node:Reciprocal
Node:Modulo
排列绘制


Node:Ellipse

基于输入的UV坐标和指定的Width和Height生成一个椭圆形状;生成的形状可以通过Tiling And Offset Node进行偏移或者平铺;这个节点只可以在片段着色器阶段工作的时候使用。

端口信息

代码生成

void Unity_Ellipse_float(float2 UV, float Width, float Height, out float4 Out)
{float d = length((UV * 2 - 1) / float2(Width, Height));Out = saturate((1 - d) / fwidth(d));
}

绘制圆形,Graph


Ellipse指定宽带和高度绘制一个形状,Out应该是float4,显示的是float类型,显示有问题
为什么连线到Color而不是Position端口?是因为我们只要显示相关形状,而不是裁剪到一个形状


Node:Rectangle

基于输入的UV信息和指定的大小宽度和高度生成一个矩形;生成的形状可以进行偏移和平铺通过连接Tiling And Offset节点;这个节点只可以使用在片段着色器中。

Ports

代码生成

void Unity_Rectangle_float(float2 UV, float Width, float Height, out float Out)
{float2 d = abs(UV * 2 - 1) - float2(Width, Height);d = 1 - d / fwidth(d);Out = saturate(min(d.x, d.y));
}

绘制长方形,Graph


Node:Rounded Rectangle

通过输入的UV信息,指定的宽度和高度生成一个圆角矩形,每个圆角的半径可以自定义;
这个节点只可以使用在片段着色器中。

Ports

代码生成

void Unity_RoundedRectangle_float(float2 UV, float Width, float Height, float Radius, out float Out)
{Radius = max(min(min(abs(Radius * 2), abs(Width)), abs(Height)), 1e-5);float2 uv = abs(UV * 2 - 1) - float2(Width, Height) + Radius;float d = length(max(0, uv)) / Radius;Out = saturate((1 - d) / fwidth(d));
}

绘制圆角长方形,Graph


Node:Polygon

通过输入的uv信息和指定的宽度和高度生成一个正多边形,多边形的边数通过输入来指定;
这个节点只可以在片段着色器中使用。

Prots

代码生成

void Unity_Polygon_float(float2 UV, float Sides, float Width, float Height, out float Out)
{float pi = 3.14159265359;float aWidth = Width * cos(pi / Sides);float aHeight = Height * cos(pi / Sides);float2 uv = (UV * 2 - 1) / float2(aWidth, aHeight);uv.y *= -1;float pCoord = atan2(uv.x, uv.y);float r = 2 * pi / Sides;float distance = cos(floor(0.5 + pCoord / r) * r - pCoord) * length(uv);Out = saturate((1 - distance) / fwidth(distance));
}

绘制五边形,Graph


Node:Subtract

返回A减去B的结果,数学库

Ports

代码生成

void Unity_Subtract_float4(float4 A, float4 B, out float4 Out)
{Out = A - B;
}

绘制中空圆形,Graph


绘制多个形状,Graph


绘制带阴影的形状


反色,Graph


Node:UV

提供访问网格顶点或者片段的UV坐标;坐标通道可以通过下拉来选择,总共有4套UV坐标。

Ports

Controls


Node:Reciprocal

返回1除以输入的结果;可以选择Method为Fast更快的进行计算。

Ports

Controls

代码生成

Defaultvoid Unity_Reciprocal_float4(float4 In, out float4 Out)
{Out = 1.0/In;
}
Fast (Requires Shader Model 5)void Unity_Reciprocal_Fast_float4(float4 In, out float4 Out)
{Out = rcp(In);
}

Node:Modulo

返回输入A除以输入B的余数。

Ports

代码生成

void Unity_Modulo_float4(float4 A, float4 B, out float4 Out)
{Out = fmod(A, B);
}

排列绘制,Graph


第一次通过Reciprocal来将RowCol分成等比份,这里是5份,1/5 = 0.2每份长度
然后通过Modulo来将UV信息划分,具体划分过程是这样的

预览图可以看到有没有划分,并不是实际效果,给我们方便预览而已
通过RowCol再和划分的UV相乘来还原划分的UV
然后操作的是每份划分过的UV信息


13.Unity ShaderGraph API(LWRP绘制各种形状,ProceduralSharp)相关推荐

  1. 【Unity特效】LWRP/URP(Lightweight RP/Universal RP)和ShaderGraph下载及安装配置

    [Unity特效]-LWRP/URP(Lightweight RP/Universal RP)和ShaderGraph下载及安装配置 仅作为学习过程中的记录 使用Unity版本为2020.1.9 Sh ...

  2. 【游戏开发渲染】Unity ShaderGraph使用教程与各种特效案例:Unity2022(持续更新)

    文章目录 一.ShaderGraph前言 二.ShaderGraph科普 1.渲染管线(Render Pipline) 2.可编程渲染管线,SRP(Scriptable Render Pipline) ...

  3. 在图像中绘制基本形状和文字

    目录 一 基本形状的绘制 二 随机数 三 绘制文字 注:原创不易,转载请务必注明原作者和出处,感谢支持! 一 基本形状的绘制 本文的内容和数字图像处理的关系不大,主要是关于OpenCV提供的在图像中绘 ...

  4. unity基础学习九,Unity常用API

    1.Event Function:事件函数 Reset() :被附加脚本时.在游戏物体的组件上按Reset时会触发该事件函数 Start() :在游戏初始化时会执行一次 Update() :每一帧都会 ...

  5. JAVA几何图注水,如何使用java绘制几何形状到图片?

    在Java语言编程中,如何使用Java绘制几何形状到图片? 注意:需要访问网址: , 下载一个OpenCV软件包.这里下载最新版本:opencv-3.2.0-vc14.exe并解压此文件到D:soft ...

  6. Unity常用API详解--初学必备

    初学Unity3D编程,为了更加熟悉Unity常用API,根据搜集资料整理如下: 1.事件函数执行机制 2.Time类 Time.deltaTime:每一帧的时间. Time.fixedDeltaTi ...

  7. 学习笔记:unity通过Mesh网格绘制图形:三角形正方体圆柱

    一,介绍 Mesh类:通过脚本创建或是获取网格的类,网格包含多个顶点和三角形数组.顶点信息包含坐标和所在面的法线. unity中3D的世界的所有图形全部都是由三角形构成的. 比如unity已经装配好的 ...

  8. 【游戏开发创新】使用Unity ShaderGraph实现在模型上涂鸦的效果,那么,纹个手吧

    文章目录 一.前言 二.思考 三.实操 1.Render Texture 2.笔刷图案 3.写脚本:DrawOn3D.cs 4.ShaderGraph 5.模型 6.材质球 7.挂脚本 四.运行测试 ...

  9. CSS 绘制各种形状

    说明 使用 CSS 可以绘制出许多形状,比如三角形.梯形.圆形.椭圆,等 并不只是可以绘制矩形.下面来看看怎么实现这些形状的吧. 为了容易理解,文章分为基本形状 和 组合形状来说,基本形状是比较容易实 ...

最新文章

  1. 微信公众账号开发-发送模板消息
  2. Linux中shell模块的考试,linux下的shell编程要考试了题目这里有可是表示不会 求帮忙...
  3. 300+队伍/8大直播间,这场NXP智能车竞赛谁才是真的神车?
  4. 数据结结构学习 ---赫夫曼树
  5. python 模块学习--Numpy
  6. gitlab 端口_安装Gitlab-注意端口
  7. 【债券】可转换债券基本概念
  8. laravel-admin 在指定的相册下添加照片
  9. 01-python进阶-拾遗
  10. arm-none-linux-gnueabi交叉工具链 no such file or directory
  11. 未解bug001:SSM整合的过程中单元测试用Junit5复合注解整合失败
  12. 215. Kth Largest Element in an Array
  13. .Net framework 3.5缺失解决
  14. 网络安全应急响应实施过程
  15. 如何识别POS机是一清机还是二清机?
  16. python[爬虫]爬取百万条新浪新闻 新浪滚动新闻中心(多进程)
  17. qt中将按钮指向的鼠标变成手型
  18. 电脑显示黑屏但是鼠标能动怎么处理?
  19. ipad协议最新替代
  20. word2010中奇偶页不同页眉页脚设置

热门文章

  1. Codesys的软件PLC解决方案
  2. 智能操控日益重要│万可WAGO SCADA系统助力企业数字化提升
  3. 改造.NET遗留应用
  4. WAV怎么转换格式?试试这几款WAV格式转换软件吧
  5. VisualVM 启动报错Error Starting VisualVM:You are running VisualVM using Java Runtime Environment(JRE).
  6. 计算机图形学画圆公式推导,计算机图形学画圆方法.doc
  7. 基于Zookeeper实现配置中心
  8. webpack打包图片报错
  9. flutter 隐藏返回按钮 自定义返回按钮
  10. 小迪和小捷的太空之旅——飓风营救篇