Exemplo n.º 1
0
    //简单的顶点着色器
    v2f vert(a2v v)
    {
        v2f output = new v2f();

        output.pos = Transform.MulMVPMat(v.pos);
        return(output);
    }
Exemplo n.º 2
0
 /// <summary>
 /// 顶点处理
 /// </summary>
 private void RunVertShader()
 {
     for (int i = 0; i < VAO.VBO.Length; i++)
     {
         a2v    a    = VAO.VBO[i];
         Vertex vert = srShader.VertShader(a);
         SrVertices.Add(vert);
     }
 }
Exemplo n.º 3
0
 public void RunVertexShader()
 {
     for (int i = 0; i < vao.vbo.Length; i++)
     {
         a2v    a = vao.vbo[i];
         Vertex v = VertShader(a);
         vertexList.Add(v);
     }
 }
    public void FillVAO(Mesh mesh)
    {
        int cnt = mesh.vertexCount;

        VBO = new a2v[cnt];
        for (int i = 0; i < cnt; i++)
        {
            VBO[i] = new a2v(mesh.vertices[i],
                             mesh.normals[i],
                             mesh.uv[i]);
        }

        EBO = mesh.triangles;
    }
Exemplo n.º 5
0
        public VAO(MeshFilter mf)
        {
            Mesh m = mf.sharedMesh;

            vbo = new a2v[m.vertexCount];
            for (int i = 0; i < m.vertexCount; i++)
            {
                a2v a = new a2v();
                a.postion = m.vertices[i];
                a.normal  = m.normals[i];
                a.uv      = m.uv[i];
                vbo[i]    = a;
            }
            ebo = m.triangles;
        }
    public virtual Vertex VertShader(a2v i)
    {
        v2f v = new v2f();

        v.postion = L2WMat.MultiplyPoint3x4(i.position);
        v.normal  = L2WMat.MultiplyVector(i.normal);
        v.uv      = i.uv;
        Vertex  vert = new Vertex();
        Vector4 svp  = i.position;

        svp.w     = 1f;
        svp       = MVPMat * svp;
        vert.data = v;
        vert.x    = (svp.x / svp.w / 2 + 0.5f) * SoftRender.width;
        vert.y    = (svp.y / svp.w / 2 + 0.5f) * SoftRender.height;
        vert.z    = svp.z / svp.w / 2 + 0.5f;
        return(vert);
    }
Exemplo n.º 7
0
    Vertex VertShader(a2v a)
    {
        v2f v = new v2f();

        v.postion = L2WMat.MultiplyPoint3x4(a.postion);
        v.normal  = L2WMat.MultiplyVector(a.normal);
        v.uv      = a.uv;
        Vertex  vert = new Vertex();
        Vector4 svp  = a.postion;

        svp.w     = 1f;
        svp       = MVPMat * svp;
        vert.data = v;
        vert.x    = (svp.x / svp.w / 2 + 0.5f) * width;
        vert.y    = (svp.y / svp.w / 2 + 0.5f) * height;
        vert.z    = svp.z / svp.w / 2 + 0.5f;
        return(vert);
    }
Exemplo n.º 8
0
 public SilverObject(a2v instance) : base(instance)
 {
     _internal = instance;
 }