Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
n5
URasterizer
提交
cfa12a8c
URasterizer
项目概览
n5
/
URasterizer
通知
21
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
URasterizer
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
cfa12a8c
编写于
1月 19, 2022
作者:
H
happyfire
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Refractor, make RenderingObject a component.
上级
24b17e28
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
129 addition
and
42 deletion
+129
-42
URasterizer/Assembly-CSharp.csproj
URasterizer/Assembly-CSharp.csproj
+5
-2
URasterizer/Assets/URasterizer/Codes/CameraRenderer.cs
URasterizer/Assets/URasterizer/Codes/CameraRenderer.cs
+23
-13
URasterizer/Assets/URasterizer/Codes/Rasterizer.cs
URasterizer/Assets/URasterizer/Codes/Rasterizer.cs
+14
-11
URasterizer/Assets/URasterizer/Codes/RenderingObject.cs
URasterizer/Assets/URasterizer/Codes/RenderingObject.cs
+13
-13
URasterizer/Assets/URasterizer/URasterizerScene.unity
URasterizer/Assets/URasterizer/URasterizerScene.unity
+74
-3
未找到文件。
URasterizer/Assembly-CSharp.csproj
浏览文件 @
cfa12a8c
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project
ToolsVersion=
"4.0"
DefaultTargets=
"Build"
xmlns=
"http://schemas.microsoft.com/developer/msbuild/2003"
>
<Project
ToolsVersion=
"4.0"
DefaultTargets=
"Build"
xmlns=
"http://schemas.microsoft.com/developer/msbuild/2003"
>
<PropertyGroup>
<PropertyGroup>
<LangVersion>
latest
</LangVersion>
<LangVersion>
8.0
</LangVersion>
</PropertyGroup>
</PropertyGroup>
<PropertyGroup>
<PropertyGroup>
<Configuration
Condition=
" '$(Configuration)' == '' "
>
Debug
</Configuration>
<Configuration
Condition=
" '$(Configuration)' == '' "
>
Debug
</Configuration>
...
@@ -52,13 +52,16 @@
...
@@ -52,13 +52,16 @@
<UnityBuildTarget>
StandaloneWindows64:19
</UnityBuildTarget>
<UnityBuildTarget>
StandaloneWindows64:19
</UnityBuildTarget>
<UnityVersion>
2020.3.25f1c1
</UnityVersion>
<UnityVersion>
2020.3.25f1c1
</UnityVersion>
</PropertyGroup>
</PropertyGroup>
<ItemGroup>
<Analyzer
Include=
"C:\Program Files (x86)\Microsoft Visual Studio Tools for Unity\16.0\Analyzers\Microsoft.Unity.Analyzers.dll"
/>
</ItemGroup>
<ItemGroup>
<ItemGroup>
<Compile
Include=
"Assets\URasterizer\Codes\RenderingObject.cs"
/>
<Compile
Include=
"Assets\URasterizer\Codes\RenderingObject.cs"
/>
<Compile
Include=
"Assets\URasterizer\Codes\StatsPanel.cs"
/>
<Compile
Include=
"Assets\URasterizer\Codes\CameraRenderer.cs"
/>
<Compile
Include=
"Assets\URasterizer\Codes\CameraRenderer.cs"
/>
<Compile
Include=
"Assets\URasterizer\Codes\Triangle.cs"
/>
<Compile
Include=
"Assets\URasterizer\Codes\Triangle.cs"
/>
<Compile
Include=
"Assets\URasterizer\Codes\Rasterizer.cs"
/>
<Compile
Include=
"Assets\URasterizer\Codes\Rasterizer.cs"
/>
<Compile
Include=
"Assets\URasterizer\Codes\TransformTool.cs"
/>
<Compile
Include=
"Assets\URasterizer\Codes\TransformTool.cs"
/>
<Compile
Include=
"Assets\URasterizer\Codes\StatsPanel.cs"
/>
</ItemGroup>
</ItemGroup>
<ItemGroup>
<ItemGroup>
<Reference
Include=
"UnityEngine"
>
<Reference
Include=
"UnityEngine"
>
...
...
URasterizer/Assets/URasterizer/Codes/CameraRenderer.cs
浏览文件 @
cfa12a8c
...
@@ -12,9 +12,8 @@ namespace URasterizer
...
@@ -12,9 +12,8 @@ namespace URasterizer
public
RawImage
rawImg
;
public
RawImage
rawImg
;
public
Color
ClearColor
=
Color
.
black
;
public
Color
ClearColor
=
Color
.
black
;
public
Transform
[]
objNodes
;
private
List
<
RenderingObject
>
renderingObjects
=
new
List
<
RenderingObject
>();
private
RenderingObject
[]
renderingObjects
;
private
Camera
_camera
;
private
Camera
_camera
;
public
bool
WireframeMode
;
public
bool
WireframeMode
;
...
@@ -33,23 +32,31 @@ namespace URasterizer
...
@@ -33,23 +32,31 @@ namespace URasterizer
{
{
_camera
=
GetComponent
<
Camera
>();
_camera
=
GetComponent
<
Camera
>();
//collect render objects
var
rootObjs
=
this
.
gameObject
.
scene
.
GetRootGameObjects
();
renderingObjects
=
new
RenderingObject
[
objNodes
.
Length
]
;
renderingObjects
.
Clear
()
;
for
(
int
i
=
0
;
i
<
objNodes
.
Length
;
++
i
)
for
each
(
var
o
in
rootObjs
)
{
{
renderingObjects
[
i
]
=
new
RenderingObject
(
objNodes
[
i
]
);
renderingObjects
.
AddRange
(
o
.
GetComponentsInChildren
<
RenderingObject
>()
);
}
}
Debug
.
Log
(
$"Find rendering objs count:
{
renderingObjects
.
Count
}
"
);
if
(
objNodes
.
Length
==
0
)
//ֶõmesh
{
{
renderingObjects
=
new
RenderingObject
[
1
];
var
_mesh
=
new
Mesh
var
_mesh
=
new
Mesh
{
{
vertices
=
new
Vector3
[]
{
new
Vector3
(
1f
,
0f
,
-
2f
),
new
Vector3
(
0f
,
2f
,
-
2f
),
new
Vector3
(-
1f
,
0f
,
-
2f
),
vertices
=
new
Vector3
[]
{
new
Vector3
(
1f
,
0f
,
-
2f
),
new
Vector3
(
0f
,
2f
,
-
2f
),
new
Vector3
(-
1f
,
0f
,
-
2f
),
new
Vector3
(
1.5f
,
0.5f
,
-
1.5f
),
new
Vector3
(
0.5f
,
2.5f
,
-
1.5f
),
new
Vector3
(-
0.5f
,
0.5f
,
-
1.5f
)},
new
Vector3
(
1.5f
,
0.5f
,
-
1.5f
),
new
Vector3
(
0.5f
,
2.5f
,
-
1.5f
),
new
Vector3
(-
0.5f
,
0.5f
,
-
1.5f
)},
triangles
=
new
int
[]
{
0
,
1
,
2
,
3
,
4
,
5
}
triangles
=
new
int
[]
{
0
,
1
,
2
,
3
,
4
,
5
}
};
};
renderingObjects
[
0
]
=
new
RenderingObject
(
_mesh
);
var
go
=
new
GameObject
(
"_handmake_mesh_"
);
var
ro
=
go
.
AddComponent
<
RenderingObject
>();
ro
.
mesh
=
_mesh
;
go
.
AddComponent
<
MeshFilter
>().
mesh
=
_mesh
;
go
.
AddComponent
<
MeshRenderer
>();
renderingObjects
.
Add
(
ro
);
}
}
RectTransform
rect
=
rawImg
.
GetComponent
<
RectTransform
>();
RectTransform
rect
=
rawImg
.
GetComponent
<
RectTransform
>();
...
@@ -69,9 +76,12 @@ namespace URasterizer
...
@@ -69,9 +76,12 @@ namespace URasterizer
var
r
=
_rasterizer
;
var
r
=
_rasterizer
;
r
.
Clear
(
BufferMask
.
Color
|
BufferMask
.
Depth
);
r
.
Clear
(
BufferMask
.
Color
|
BufferMask
.
Depth
);
for
(
int
i
=
0
;
i
<
renderingObjects
.
Length
;
++
i
)
for
(
int
i
=
0
;
i
<
renderingObjects
.
Count
;
++
i
)
{
{
r
.
Draw
(
renderingObjects
[
i
],
_camera
,
WireframeMode
);
if
(
renderingObjects
[
i
].
gameObject
.
activeInHierarchy
)
{
r
.
Draw
(
renderingObjects
[
i
],
_camera
,
WireframeMode
);
}
}
}
r
.
UpdateFrame
();
r
.
UpdateFrame
();
...
...
URasterizer/Assets/URasterizer/Codes/Rasterizer.cs
浏览文件 @
cfa12a8c
...
@@ -168,15 +168,18 @@ namespace URasterizer
...
@@ -168,15 +168,18 @@ namespace URasterizer
}
}
//backface culling
//backface culling
Vector3
v0
=
new
Vector3
(
v
[
0
].
x
,
v
[
0
].
y
,
v
[
0
].
z
);
if
(!
ro
.
DoubleSideRendering
)
Vector3
v1
=
new
Vector3
(
v
[
1
].
x
,
v
[
1
].
y
,
v
[
1
].
z
);
Vector3
v2
=
new
Vector3
(
v
[
2
].
x
,
v
[
2
].
y
,
v
[
2
].
z
);
Vector3
e01
=
v1
-
v0
;
Vector3
e02
=
v2
-
v0
;
Vector3
cross
=
Vector3
.
Cross
(
e01
,
e02
);
if
(
cross
.
z
<=
0
)
{
{
continue
;
Vector3
v0
=
new
Vector3
(
v
[
0
].
x
,
v
[
0
].
y
,
v
[
0
].
z
);
Vector3
v1
=
new
Vector3
(
v
[
1
].
x
,
v
[
1
].
y
,
v
[
1
].
z
);
Vector3
v2
=
new
Vector3
(
v
[
2
].
x
,
v
[
2
].
y
,
v
[
2
].
z
);
Vector3
e01
=
v1
-
v0
;
Vector3
e02
=
v2
-
v0
;
Vector3
cross
=
Vector3
.
Cross
(
e01
,
e02
);
if
(
cross
.
z
<=
0
)
{
continue
;
}
}
}
...
@@ -200,9 +203,9 @@ namespace URasterizer
...
@@ -200,9 +203,9 @@ namespace URasterizer
{
{
t
.
SetPosition
(
k
,
v
[
k
]);
t
.
SetPosition
(
k
,
v
[
k
]);
}
}
t
.
SetColor
(
0
,
Color
.
red
);
t
.
SetColor
(
0
,
ro
.
Color0
);
t
.
SetColor
(
1
,
Color
.
green
);
t
.
SetColor
(
1
,
ro
.
Color1
);
t
.
SetColor
(
2
,
Color
.
blue
);
t
.
SetColor
(
2
,
ro
.
Color2
);
//Rasterization
//Rasterization
if
(
wireframeMode
)
if
(
wireframeMode
)
...
...
URasterizer/Assets/URasterizer/Codes/RenderingObject.cs
浏览文件 @
cfa12a8c
...
@@ -3,22 +3,22 @@ using UnityEngine;
...
@@ -3,22 +3,22 @@ using UnityEngine;
namespace
URasterizer
namespace
URasterizer
{
{
public
class
RenderingObject
public
class
RenderingObject
:
MonoBehaviour
{
{
public
Transform
transform
;
public
Mesh
mesh
;
public
Mesh
mesh
;
public
bool
DoubleSideRendering
;
public
Color
Color0
=
Color
.
red
;
public
Color
Color1
=
Color
.
green
;
public
Color
Color2
=
Color
.
blue
;
private
void
Awake
()
public
RenderingObject
(
Transform
node
)
{
transform
=
node
;
mesh
=
node
.
GetComponent
<
MeshFilter
>().
mesh
;
}
public
RenderingObject
(
Mesh
mesh
)
{
{
this
.
mesh
=
mesh
;
var
meshFilter
=
GetComponent
<
MeshFilter
>();
}
if
(
meshFilter
!=
null
)
{
mesh
=
meshFilter
.
mesh
;
}
}
// TRS
// TRS
public
Matrix4x4
GetModelMatrix
()
public
Matrix4x4
GetModelMatrix
()
...
...
URasterizer/Assets/URasterizer/URasterizerScene.unity
浏览文件 @
cfa12a8c
...
@@ -207,13 +207,14 @@ GameObject:
...
@@ -207,13 +207,14 @@ GameObject:
-
component
:
{
fileID
:
256726194
}
-
component
:
{
fileID
:
256726194
}
-
component
:
{
fileID
:
256726193
}
-
component
:
{
fileID
:
256726193
}
-
component
:
{
fileID
:
256726192
}
-
component
:
{
fileID
:
256726192
}
-
component
:
{
fileID
:
256726196
}
m_Layer
:
0
m_Layer
:
0
m_Name
:
Cube
m_Name
:
Cube
m_TagString
:
Untagged
m_TagString
:
Untagged
m_Icon
:
{
fileID
:
0
}
m_Icon
:
{
fileID
:
0
}
m_NavMeshLayer
:
0
m_NavMeshLayer
:
0
m_StaticEditorFlags
:
0
m_StaticEditorFlags
:
0
m_IsActive
:
1
m_IsActive
:
0
---
!u!65
&256726192
---
!u!65
&256726192
BoxCollider
:
BoxCollider
:
m_ObjectHideFlags
:
0
m_ObjectHideFlags
:
0
...
@@ -290,6 +291,23 @@ Transform:
...
@@ -290,6 +291,23 @@ Transform:
m_Father
:
{
fileID
:
0
}
m_Father
:
{
fileID
:
0
}
m_RootOrder
:
4
m_RootOrder
:
4
m_LocalEulerAnglesHint
:
{
x
:
0
,
y
:
0
,
z
:
0
}
m_LocalEulerAnglesHint
:
{
x
:
0
,
y
:
0
,
z
:
0
}
---
!u!114
&256726196
MonoBehaviour
:
m_ObjectHideFlags
:
0
m_CorrespondingSourceObject
:
{
fileID
:
0
}
m_PrefabInstance
:
{
fileID
:
0
}
m_PrefabAsset
:
{
fileID
:
0
}
m_GameObject
:
{
fileID
:
256726191
}
m_Enabled
:
1
m_EditorHideFlags
:
0
m_Script
:
{
fileID
:
11500000
,
guid
:
275ec1cd091f7d54cb532cf4c552b27a
,
type
:
3
}
m_Name
:
m_EditorClassIdentifier
:
mesh
:
{
fileID
:
0
}
DoubleSideRendering
:
0
Color0
:
{
r
:
1
,
g
:
0
,
b
:
0
,
a
:
1
}
Color1
:
{
r
:
0
,
g
:
1
,
b
:
0
,
a
:
1
}
Color2
:
{
r
:
0
,
g
:
0
,
b
:
1
,
a
:
1
}
---
!u!1
&264331597
---
!u!1
&264331597
GameObject
:
GameObject
:
m_ObjectHideFlags
:
0
m_ObjectHideFlags
:
0
...
@@ -379,7 +397,6 @@ MonoBehaviour:
...
@@ -379,7 +397,6 @@ MonoBehaviour:
m_EditorClassIdentifier
:
m_EditorClassIdentifier
:
rawImg
:
{
fileID
:
129304943
}
rawImg
:
{
fileID
:
129304943
}
ClearColor
:
{
r
:
0
,
g
:
0
,
b
:
0
,
a
:
0.5019608
}
ClearColor
:
{
r
:
0
,
g
:
0
,
b
:
0
,
a
:
0.5019608
}
objNodes
:
[]
WireframeMode
:
0
WireframeMode
:
0
---
!u!1
&870169031
---
!u!1
&870169031
GameObject
:
GameObject
:
...
@@ -560,6 +577,7 @@ GameObject:
...
@@ -560,6 +577,7 @@ GameObject:
-
component
:
{
fileID
:
963210797
}
-
component
:
{
fileID
:
963210797
}
-
component
:
{
fileID
:
963210796
}
-
component
:
{
fileID
:
963210796
}
-
component
:
{
fileID
:
963210795
}
-
component
:
{
fileID
:
963210795
}
-
component
:
{
fileID
:
963210799
}
m_Layer
:
0
m_Layer
:
0
m_Name
:
Sphere
m_Name
:
Sphere
m_TagString
:
Untagged
m_TagString
:
Untagged
...
@@ -644,6 +662,23 @@ Transform:
...
@@ -644,6 +662,23 @@ Transform:
m_Father
:
{
fileID
:
0
}
m_Father
:
{
fileID
:
0
}
m_RootOrder
:
6
m_RootOrder
:
6
m_LocalEulerAnglesHint
:
{
x
:
0
,
y
:
0
,
z
:
0
}
m_LocalEulerAnglesHint
:
{
x
:
0
,
y
:
0
,
z
:
0
}
---
!u!114
&963210799
MonoBehaviour
:
m_ObjectHideFlags
:
0
m_CorrespondingSourceObject
:
{
fileID
:
0
}
m_PrefabInstance
:
{
fileID
:
0
}
m_PrefabAsset
:
{
fileID
:
0
}
m_GameObject
:
{
fileID
:
963210794
}
m_Enabled
:
1
m_EditorHideFlags
:
0
m_Script
:
{
fileID
:
11500000
,
guid
:
275ec1cd091f7d54cb532cf4c552b27a
,
type
:
3
}
m_Name
:
m_EditorClassIdentifier
:
mesh
:
{
fileID
:
0
}
DoubleSideRendering
:
0
Color0
:
{
r
:
1
,
g
:
0
,
b
:
0
,
a
:
1
}
Color1
:
{
r
:
0
,
g
:
1
,
b
:
0
,
a
:
1
}
Color2
:
{
r
:
0
,
g
:
0
,
b
:
1
,
a
:
1
}
---
!u!1
&1292409238
---
!u!1
&1292409238
GameObject
:
GameObject
:
m_ObjectHideFlags
:
0
m_ObjectHideFlags
:
0
...
@@ -735,6 +770,7 @@ GameObject:
...
@@ -735,6 +770,7 @@ GameObject:
-
component
:
{
fileID
:
1297680262
}
-
component
:
{
fileID
:
1297680262
}
-
component
:
{
fileID
:
1297680261
}
-
component
:
{
fileID
:
1297680261
}
-
component
:
{
fileID
:
1297680260
}
-
component
:
{
fileID
:
1297680260
}
-
component
:
{
fileID
:
1297680264
}
m_Layer
:
0
m_Layer
:
0
m_Name
:
Quad
m_Name
:
Quad
m_TagString
:
Untagged
m_TagString
:
Untagged
...
@@ -819,6 +855,23 @@ Transform:
...
@@ -819,6 +855,23 @@ Transform:
m_Father
:
{
fileID
:
0
}
m_Father
:
{
fileID
:
0
}
m_RootOrder
:
5
m_RootOrder
:
5
m_LocalEulerAnglesHint
:
{
x
:
0
,
y
:
0
,
z
:
0
}
m_LocalEulerAnglesHint
:
{
x
:
0
,
y
:
0
,
z
:
0
}
---
!u!114
&1297680264
MonoBehaviour
:
m_ObjectHideFlags
:
0
m_CorrespondingSourceObject
:
{
fileID
:
0
}
m_PrefabInstance
:
{
fileID
:
0
}
m_PrefabAsset
:
{
fileID
:
0
}
m_GameObject
:
{
fileID
:
1297680259
}
m_Enabled
:
1
m_EditorHideFlags
:
0
m_Script
:
{
fileID
:
11500000
,
guid
:
275ec1cd091f7d54cb532cf4c552b27a
,
type
:
3
}
m_Name
:
m_EditorClassIdentifier
:
mesh
:
{
fileID
:
0
}
DoubleSideRendering
:
1
Color0
:
{
r
:
1
,
g
:
0
,
b
:
0
,
a
:
1
}
Color1
:
{
r
:
0
,
g
:
1
,
b
:
0
,
a
:
1
}
Color2
:
{
r
:
0
,
g
:
0
,
b
:
1
,
a
:
1
}
---
!u!1
&1825649040
---
!u!1
&1825649040
GameObject
:
GameObject
:
m_ObjectHideFlags
:
0
m_ObjectHideFlags
:
0
...
@@ -831,13 +884,14 @@ GameObject:
...
@@ -831,13 +884,14 @@ GameObject:
-
component
:
{
fileID
:
1825649043
}
-
component
:
{
fileID
:
1825649043
}
-
component
:
{
fileID
:
1825649042
}
-
component
:
{
fileID
:
1825649042
}
-
component
:
{
fileID
:
1825649041
}
-
component
:
{
fileID
:
1825649041
}
-
component
:
{
fileID
:
1825649045
}
m_Layer
:
0
m_Layer
:
0
m_Name
:
Capsule
m_Name
:
Capsule
m_TagString
:
Untagged
m_TagString
:
Untagged
m_Icon
:
{
fileID
:
0
}
m_Icon
:
{
fileID
:
0
}
m_NavMeshLayer
:
0
m_NavMeshLayer
:
0
m_StaticEditorFlags
:
0
m_StaticEditorFlags
:
0
m_IsActive
:
1
m_IsActive
:
0
---
!u!136
&1825649041
---
!u!136
&1825649041
CapsuleCollider
:
CapsuleCollider
:
m_ObjectHideFlags
:
0
m_ObjectHideFlags
:
0
...
@@ -915,6 +969,23 @@ Transform:
...
@@ -915,6 +969,23 @@ Transform:
m_Father
:
{
fileID
:
963210798
}
m_Father
:
{
fileID
:
963210798
}
m_RootOrder
:
0
m_RootOrder
:
0
m_LocalEulerAnglesHint
:
{
x
:
0
,
y
:
0
,
z
:
0
}
m_LocalEulerAnglesHint
:
{
x
:
0
,
y
:
0
,
z
:
0
}
---
!u!114
&1825649045
MonoBehaviour
:
m_ObjectHideFlags
:
0
m_CorrespondingSourceObject
:
{
fileID
:
0
}
m_PrefabInstance
:
{
fileID
:
0
}
m_PrefabAsset
:
{
fileID
:
0
}
m_GameObject
:
{
fileID
:
1825649040
}
m_Enabled
:
1
m_EditorHideFlags
:
0
m_Script
:
{
fileID
:
11500000
,
guid
:
275ec1cd091f7d54cb532cf4c552b27a
,
type
:
3
}
m_Name
:
m_EditorClassIdentifier
:
mesh
:
{
fileID
:
0
}
DoubleSideRendering
:
0
Color0
:
{
r
:
1
,
g
:
0
,
b
:
0
,
a
:
1
}
Color1
:
{
r
:
0
,
g
:
1
,
b
:
0
,
a
:
1
}
Color2
:
{
r
:
0
,
g
:
0
,
b
:
1
,
a
:
1
}
---
!u!1
&1899433433
---
!u!1
&1899433433
GameObject
:
GameObject
:
m_ObjectHideFlags
:
0
m_ObjectHideFlags
:
0
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录