Синтаксис:
Используется csharp
using UnityEngine;
public class NewBehaviourScript : MonoBehaviour
{
public int number = 100;
[ContextMenu("crate mesh")]
void CrateMesh()
{
if (number<=0)
{
return;
}
MeshFilter filter = GetComponent<MeshFilter>();
Vector3[] vertexes = new Vector3[number];
//Vector2[] texCoods = new Vector2[number];
int[] indexes;
Mesh mesh = new Mesh();
//for (int i = 0; i < texCoods.Length; i++)//it's do nothing
// texCoods[i] = Vector2.one*0.5f;
int vInd = 0;
for (int x = 0; x < (int)Mathf.Sqrt(vertexes.Length); x++)
{
for (int y = 0; y < (int)Mathf.Sqrt(vertexes.Length); y++)
{
vertexes[vInd] = new Vector3(x,0,y);
++vInd;
}
}
indexes = new int[vertexes.Length];
for (int i = 0; i < vertexes.Length; i++)
indexes[i] = i;
filter.mesh.Clear();
mesh.vertices = vertexes;
//mesh.uv = texCoods;
mesh.SetIndices(indexes, MeshTopology.Points, 0);
filter.mesh = mesh;
}
}
public class NewBehaviourScript : MonoBehaviour
{
public int number = 100;
[ContextMenu("crate mesh")]
void CrateMesh()
{
if (number<=0)
{
return;
}
MeshFilter filter = GetComponent<MeshFilter>();
Vector3[] vertexes = new Vector3[number];
//Vector2[] texCoods = new Vector2[number];
int[] indexes;
Mesh mesh = new Mesh();
//for (int i = 0; i < texCoods.Length; i++)//it's do nothing
// texCoods[i] = Vector2.one*0.5f;
int vInd = 0;
for (int x = 0; x < (int)Mathf.Sqrt(vertexes.Length); x++)
{
for (int y = 0; y < (int)Mathf.Sqrt(vertexes.Length); y++)
{
vertexes[vInd] = new Vector3(x,0,y);
++vInd;
}
}
indexes = new int[vertexes.Length];
for (int i = 0; i < vertexes.Length; i++)
indexes[i] = i;
filter.mesh.Clear();
mesh.vertices = vertexes;
//mesh.uv = texCoods;
mesh.SetIndices(indexes, MeshTopology.Points, 0);
filter.mesh = mesh;
}
}
Кидаю на него материал, с этим шейдером
Синтаксис:
Используется glsl
Shader "Point sprite"
{
Properties
{
_MainTex ("Texture Image", 2D) = "white" {}
_PointSize("PointSize", Float) = 10
}
SubShader
{
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
struct v2f
{
float4 pos : SV_POSITION;
half size:PSIZE;
half2 texcoord : TEXCOORD0;
};
half _PointSize;
sampler2D _MainTex;
v2f vert (appdata_base v)
{
v2f o;
o.pos = mul (UNITY_MATRIX_MVP, v.vertex);
o.size = _PointSize;
o.texcoord = v.texcoord;
return o;
}
half4 frag (v2f i) : COLOR
{
half4 c = tex2D(_MainTex,i.texcoord);
return c;
}
ENDCG
}
}
}
{
Properties
{
_MainTex ("Texture Image", 2D) = "white" {}
_PointSize("PointSize", Float) = 10
}
SubShader
{
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
struct v2f
{
float4 pos : SV_POSITION;
half size:PSIZE;
half2 texcoord : TEXCOORD0;
};
half _PointSize;
sampler2D _MainTex;
v2f vert (appdata_base v)
{
v2f o;
o.pos = mul (UNITY_MATRIX_MVP, v.vertex);
o.size = _PointSize;
o.texcoord = v.texcoord;
return o;
}
half4 frag (v2f i) : COLOR
{
half4 c = tex2D(_MainTex,i.texcoord);
return c;
}
ENDCG
}
}
}
Точки рисуются, но нет текстурных координат
Что я делаю не так?
Заранее спасибо.