提交 63113236 编写于 作者: H happyfire

comments

上级 22c69985
...@@ -159,7 +159,7 @@ namespace URasterizer ...@@ -159,7 +159,7 @@ namespace URasterizer
//2. 三角形顶点环绕方向从顺时针改成逆时针 //2. 三角形顶点环绕方向从顺时针改成逆时针
//vertex shader /// ------------- Vertex Shader -------------------
Vector4[] csVertices = new Vector4[mesh.vertexCount]; //clip space vertices Vector4[] csVertices = new Vector4[mesh.vertexCount]; //clip space vertices
for(int i=0; i<mesh.vertexCount; ++i) for(int i=0; i<mesh.vertexCount; ++i)
{ {
...@@ -170,7 +170,9 @@ namespace URasterizer ...@@ -170,7 +170,9 @@ namespace URasterizer
var indices = mesh.triangles; var indices = mesh.triangles;
for(int i=0; i< indices.Length; i+=3) for(int i=0; i< indices.Length; i+=3)
{ {
/// -------------- Primitive Assembly -----------------
//注意这儿对调了v0和v1的索引,因为原来的 0,1,2是顺时针的,对调后是 1,0,2是逆时针的 //注意这儿对调了v0和v1的索引,因为原来的 0,1,2是顺时针的,对调后是 1,0,2是逆时针的
//Unity Quard模型的两个三角形索引分别是 0,3,1,3,0,2 转换后为 3,0,1,0,3,2 //Unity Quard模型的两个三角形索引分别是 0,3,1,3,0,2 转换后为 3,0,1,0,3,2
int idx0 = indices[i+1]; int idx0 = indices[i+1];
...@@ -185,14 +187,15 @@ namespace URasterizer ...@@ -185,14 +187,15 @@ namespace URasterizer
}; };
//do clipping // ------ Clipping -------
if (Clipped(v)) if (Clipped(v))
{ {
continue; continue;
} }
//clip space to NDC (Perspective division) // ------- Perspective division --------
for(int k=0; k<3; k++) //clip space to NDC
for (int k=0; k<3; k++)
{ {
v[k].x /= v[k].w; v[k].x /= v[k].w;
v[k].y /= v[k].w; v[k].y /= v[k].w;
...@@ -216,8 +219,8 @@ namespace URasterizer ...@@ -216,8 +219,8 @@ namespace URasterizer
++_trianglesRendered; ++_trianglesRendered;
// ------- Viewport Transform ----------
//NDC to screen space, viewport transform //NDC to screen space
for (int k = 0; k < 3; k++) for (int k = 0; k < 3; k++)
{ {
var vec = v[k]; var vec = v[k];
...@@ -260,7 +263,7 @@ namespace URasterizer ...@@ -260,7 +263,7 @@ namespace URasterizer
t.SetColor(2, Color.white); t.SetColor(2, Color.white);
} }
//Rasterization /// ---------- Rasterization -----------
if (_config.WireframeMode) if (_config.WireframeMode)
{ {
RasterizeWireframe(t); RasterizeWireframe(t);
...@@ -299,6 +302,7 @@ namespace URasterizer ...@@ -299,6 +302,7 @@ namespace URasterizer
} }
#region Wireframe mode #region Wireframe mode
//Breshham算法画线,颜色使用线性插值(非透视校正)
private void DrawLine(Vector3 begin, Vector3 end, Color colorBegin, Color colorEnd) private void DrawLine(Vector3 begin, Vector3 end, Color colorBegin, Color colorEnd)
{ {
int x1 = Mathf.FloorToInt(begin.x); int x1 = Mathf.FloorToInt(begin.x);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册