Skip to content

Commit 4426825

Browse files
committed
feat(管道模式): begin
1 parent 55786f5 commit 4426825

File tree

11 files changed

+285
-351
lines changed

11 files changed

+285
-351
lines changed

packages/管道模式/article.md

Lines changed: 248 additions & 319 deletions
Large diffs are not rendered by default.

管道模式代码/jia_renderInMobile_pipeline/src/Main.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
import { state as renderState } from "render/src/RenderStateType"
22
import { pipeline } from "pipeline_manager/src/type/PipelineType"
33
import { pipelineName, state } from "jia_renderInMobile_pipeline_state_type/src/StateType"
4-
import { exec as execInitWebGL1 } from "./jobs/render/InitWebGL1Job"
4+
// import { exec as execInitWebGL1 } from "./jobs/render/InitWebGL1Job"
5+
import * as InitWebGL1Job from "./jobs/render/InitWebGL1Job"
56

7+
//返回Job的exec函数
68
let _getExec = (_pipelineName: string, jobName: string) => {
79
switch (jobName) {
810
case "init_webgl1_jia_renderInMobile":
9-
//返回Job的exec函数
10-
return execInitWebGL1
11+
return InitWebGL1Job.exec
1112
default:
1213
return null
1314
}
@@ -27,12 +28,12 @@ export let getPipeline = (): pipeline<renderState, state> => {
2728
//getExec关联了allPipelineData中的job名与管道的Job
2829
getExec: _getExec,
2930
//allPipelineData是JSON配置数据,用来指定Job的执行顺序
30-
//它可以包括多个管道的配置数据,但这里只有Render Pipeline管道的配置数据
31+
//它包括所有管道的配置数据,目前只有Render Pipeline管道的配置数据
3132
allPipelineData: [
3233
{
3334
//管道名
3435
name: "render",
35-
//groups包括所有的group,这里只有一个group
36+
//groups包括所有的group,目前只有一个group
3637
groups: [
3738
{
3839
//group名
@@ -44,7 +45,7 @@ export let getPipeline = (): pipeline<renderState, state> => {
4445
link: "concat",
4546
//elements是该group包含的所有element
4647
//element的类型可以为job或者group
47-
//这里只有一个类型为job的element
48+
//目前只有一个类型为job的element
4849
elements: [
4950
{
5051
"name": "init_webgl1_jia_renderInMobile",

管道模式代码/jia_renderInMobile_pipeline/src/jobs/render/InitWebGL1Job.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ export let exec: execType<renderState> = (renderState, { getStatesFunc, setState
88
//从RenderState中获得所有的PipelineState
99
let states = getStatesFunc<renderState, states>(renderState)
1010

11+
//从全局变量中获得canvas
1112
let canvas: HTMLCanvasElement = globalThis.canvas
1213

1314
//调用most.js库,返回了一个流
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
export const pipelineName = "JiaRenderInMobile"
22

3+
//JiaRenderInMobilePipelineState的类型
34
export type state = {
45
gl: WebGLRenderingContext | null
56
}
67

8+
//states定义了在JiaRenderInMobilePipeline的所有的Job中需要调用的所有的PipelineState的类型
9+
//因为目前只需要调用JiaRenderInMobilePipelineState,所以只定义了它的类型
710
export type states = {
811
[pipelineName]: state,
912
}

管道模式代码/pipeline_manager/src/type/RegisterPipelineType.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ export type insertAction = "before" | "after"
77
export type jobOrder = {
88
//管道名
99
pipelineName: pipelineName,
10-
//将该管道的所有Job插入到的element的名称(element可以为job或者group)
10+
//将该管道的所有Job插入到element中(element可以为job或者group),这是element的名称
1111
insertElementName: elementName,
1212
//值可以为before或者after,意思是插入到该element之前或者之后
1313
insertAction: insertAction,

管道模式代码/render/src/Render.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import { state } from "./RenderStateType"
22
import { state as pipelineState } from "pipeline_manager/src/type/StateType"
33
import { createState as createPipelineManagerState, registerPipeline, runPipeline, init } from "pipeline_manager"
4-
import { getPipeline as getRenderInPCPipeline } from "renderInPC_pipeline/src/Main"
5-
import { getPipeline as getJiaRenderInMobilePipeline } from "jia_renderInMobile_pipeline/src/Main"
6-
import { getPipeline as getYiRenderInMobilePipeline } from "yi_renderInMobile_pipeline/src/Main"
4+
import * as RenderInPCPipeline from "renderInPC_pipeline/src/Main"
5+
import * as JiaRenderInMobilePipeline from "jia_renderInMobile_pipeline/src/Main"
6+
import * as YiRenderInMobilePipeline from "yi_renderInMobile_pipeline/src/Main"
77
import { service as mostService } from "most/src/MostService"
88
import { getExnFromStrictNull } from "commonlib-ts/src/NullableUtils"
99
import { unsafeGetState, setState } from "./RenderStateContainer"
@@ -24,7 +24,7 @@ export let registerAllPipelines = (state: state) => {
2424
if (_isPC()) {
2525
let pipelineManagerState = registerPipeline(
2626
state.pipelineManagerState,
27-
getRenderInPCPipeline(),
27+
RenderInPCPipeline.getPipeline(),
2828
[]
2929
)
3030

@@ -36,12 +36,12 @@ export let registerAllPipelines = (state: state) => {
3636
else {
3737
let pipelineManagerState = registerPipeline(
3838
state.pipelineManagerState,
39-
getJiaRenderInMobilePipeline(),
39+
JiaRenderInMobilePipeline.getPipeline(),
4040
[]
4141
)
4242
pipelineManagerState = registerPipeline(
4343
pipelineManagerState,
44-
getYiRenderInMobilePipeline(),
44+
YiRenderInMobilePipeline.getPipeline(),
4545
[
4646
{
4747
pipelineName: "render",

管道模式代码/renderInPC_pipeline/src/Main.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
import { state as renderState } from "render/src/RenderStateType"
22
import { pipeline } from "pipeline_manager/src/type/PipelineType"
33
import { pipelineName, state } from "renderInPC_pipeline_state_type/src/StateType"
4-
import { exec as execInitWebGL2 } from "./jobs/render/InitWebGL2Job"
5-
import { exec as execDeferRender } from "./jobs/render/DeferRenderJob"
6-
import { exec as execTonemap } from "./jobs/render/TonemapJob"
4+
import * as InitWebGL2Job from "./jobs/render/InitWebGL2Job"
5+
import * as DeferRenderJob from "./jobs/render/DeferRenderJob"
6+
import * as TonemapJob from "./jobs/render/TonemapJob"
77

88
let _getExec = (_pipelineName: string, jobName: string) => {
99
switch (jobName) {
1010
case "init_webgl2_renderInPC":
11-
return execInitWebGL2
11+
return InitWebGL2Job.exec
1212
case "defer_render_renderInPC":
13-
return execDeferRender
13+
return DeferRenderJob.exec
1414
case "tonemap_renderInPC":
15-
return execTonemap
15+
return TonemapJob.exec
1616
default:
1717
return null
1818
}
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
import { createState, render } from "./Render"
22

3-
//假canvas
3+
//构造假canvas
44
let canvas = {
55
getContext: (_) => 1 as any
66
}
77

8-
//指定运行环境为PC端
8+
//此处设置运行环境为PC端
9+
//也可以通过设置为false来设置运行环境为移动端
910
globalThis.isPC = true
1011

11-
1212
let renderState = createState()
1313

1414
renderState = render(renderState, canvas)
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
import { createState, render } from "./Render"
22

3-
//假canvas
3+
//构造假canvas
44
let canvas = {
55
getContext: (_) => 1 as any
66
}
77

8-
//指定运行环境为PC端
8+
//此处设置运行环境为PC端
9+
//也可以通过设置为false来设置运行环境为移动端
910
globalThis.isPC = true
1011

11-
1212
let renderState = createState()
1313

1414
renderState = render(renderState, canvas)

管道模式代码/story_improve/src/Client.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
import { createState, registerAllPipelines, render } from "render/src/Render"
22

3-
//假canvas
3+
//构造假canvas
44
let canvas = {
55
getContext: (_) => 1 as any
66
}
77

8-
//指定运行环境为PC端
8+
//此处设置运行环境为PC端
9+
//也可以通过设置为false来设置运行环境为移动端
910
globalThis.isPC = true
1011

11-
1212
let renderState = createState()
1313

1414
renderState = registerAllPipelines(renderState)

0 commit comments

Comments
 (0)