point sprite текстурные координаты (Unity4)

Шейдеры и все-все-все.

point sprite текстурные координаты (Unity4)

Сообщение waruiyume 30 ноя 2012, 16:30

Создаю меш из точек
Синтаксис:
Используется 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;
            }
        }
 

Кидаю на него материал, с этим шейдером
Синтаксис:
Используется 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
       
                }
            }
        }
 

Точки рисуются, но нет текстурных координат
Изображение
Что я делаю не так?
Заранее спасибо.
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: point sprite текстурные координаты (Unity4)

Сообщение IDoNotExist 30 ноя 2012, 16:47

waruiyume писал(а):Точки рисуются, но нет текстурных координат

Как определили что нет текстурных координат? В инспекторе при просмотре меша, там где количество вершин не показывает UV? Или потому, что шейдер не наложил текстуру? Так это очевидно, потому что вы каждой вершине назначаете одно и ту же текстурную координату texCoods[i] = Vector2.one*0.5f;.
Аватара пользователя
IDoNotExist
Адепт
 
Сообщения: 1432
Зарегистрирован: 23 мар 2011, 09:18
Skype: iamnoexist

Re: point sprite текстурные координаты (Unity4)

Сообщение IDoNotExist 30 ноя 2012, 17:04

ааа, сорри не заметил что у вас MeshTopology.Points, а что вы хотите сделать то? Наложить на каждую точку свою текстуру? Помоему это невозможно, т.к. каждая вершина юзает одну текстурную координату, а точки походу можно раскрасить только установив цвет вершин.
Аватара пользователя
IDoNotExist
Адепт
 
Сообщения: 1432
Зарегистрирован: 23 мар 2011, 09:18
Skype: iamnoexist


Вернуться в Shader Lab

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2