【Unity Shader学习笔记】(三)绘制点、直线、网格等基本图形

您所在的位置:网站首页 如何在屏幕上画圈 【Unity Shader学习笔记】(三)绘制点、直线、网格等基本图形

【Unity Shader学习笔记】(三)绘制点、直线、网格等基本图形

2023-06-01 03:51| 来源: 网络整理| 查看: 265

前言

今天我们学习一种简单的使用Unity Shader在屏幕上绘制几何图形的方法。其中包含了基本的点(或者说是圆形)、直线(任意方向)和网格(横纵交错)的绘制方法。本文例程使用的是Unity5.4.1。

 

1 准备工作

建立一个Unity工程,在摄像机前方放置一个Plane,需要填充满摄像机视野,放得正不正都没有关系,填满就行。利用Plane映射到屏幕上的像素坐标作为绘制图形的输入参数。(当然,如果我们使用camera的OnRenderImage()函数,进行RenderTexture的材质修改,也可以实现本文的效果,原理都是一致的,这里我们主要看思路哈)

然后创建一个新的Material,名称随意,默认也可。再创建一个新的任意种类的Shader,取名为Draw。将Draw.shader文件中默认生成的shader代码全部删掉。将下面代码复制到你的Draw.shader文件中。

Shader "Custom/Draw" { Properties { } SubShader { Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct appdata { float4 vertex : POSITION; }; struct v2f { float4 vertex : SV_POSITION; }; v2f vert (appdata v) { v2f o; o.vertex = UnityObjectToClipPos(v.vertex); return o; } fixed4 frag (v2f i) : SV_Target { return fixed4(1,1,1,1); } ENDCG } } }

这就完成了基本的准备工作了。

 

2 Shader代码编写

2.1 绘制点或圆形

点可以认为是只有一个像素的圆形,所以我们统一认为是绘制圆形。为了在屏幕上绘制圆形,我们需要知道圆形的位置和半径。

在Properties中添加要绘制的点位置信息,半径暂时不设置为可调的,后文在使用时用了固定值

_Point1("Point1",vector) = (100,100,0,0) _Point2("Point2",vector) = (200,200,0,0)

在SubShader的Pass中添加

float4 _Point1; float4 _Point2;

绘制圆形的代码:

//绘制圆形,此处半径使用了固定值1000和500,当然大家也可以把他们写成可调的参数 if( pow((i.vertex.x- _Point1.x ),2) + pow((i.vertex.y- _Point1.y ),2)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3