//简单的顶点着色器 v2f vert(a2v v) { v2f output = new v2f(); output.pos = Transform.MulMVPMat(v.pos); return(output); }
/// <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); } }
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; }
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); }
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); }
public SilverObject(a2v instance) : base(instance) { _internal = instance; }