Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
F
fyge_for_tb
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
王剑峰
fyge_for_tb
Commits
d0677f3d
Commit
d0677f3d
authored
Jul 20, 2022
by
邱旭
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
加点东西
parent
a5e06412
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
36 additions
and
30 deletions
+36
-30
D3Renderer.ts
src/3d/D3Renderer.ts
+27
-20
BaseMaterial.ts
src/3d/materials/BaseMaterial.ts
+2
-3
getCusShader.ts
src/3d/shaders/getCusShader.ts
+7
-7
No files found.
src/3d/D3Renderer.ts
View file @
d0677f3d
...
@@ -55,6 +55,8 @@ export class D3Renderer extends ObjectRenderer {
...
@@ -55,6 +55,8 @@ export class D3Renderer extends ObjectRenderer {
maxVertexUniforms
:
number
maxVertexUniforms
:
number
floatVertexTextures
:
boolean
;
floatVertexTextures
:
boolean
;
private
curLightkey
:
string
;
private
curLightkey
:
string
;
constructor
(
renderer
:
WebglRenderer
)
{
constructor
(
renderer
:
WebglRenderer
)
{
super
(
renderer
);
super
(
renderer
);
}
}
...
@@ -80,6 +82,7 @@ export class D3Renderer extends ObjectRenderer {
...
@@ -80,6 +82,7 @@ export class D3Renderer extends ObjectRenderer {
//设置剔除,下面根据材质自行设置
//设置剔除,下面根据材质自行设置
//this.setCullFace(1);
//this.setCullFace(1);
}
}
stop
()
{
stop
()
{
this
.
flush
();
this
.
flush
();
//原先的视窗需要重新//讲道理应该渲染器自己搞,算了
//原先的视窗需要重新//讲道理应该渲染器自己搞,算了
...
@@ -90,27 +93,31 @@ export class D3Renderer extends ObjectRenderer {
...
@@ -90,27 +93,31 @@ export class D3Renderer extends ObjectRenderer {
}
}
private
meshes
:
Mesh3D
[]
=
[];
private
meshes
:
Mesh3D
[]
=
[];
//继续需要的数据
//继续需要的数据
render
(
obj
:
Mesh3D
)
{
render
(
obj
:
Mesh3D
)
{
if
(
!
obj
.
geometry
||
!
obj
.
material
)
return
;
if
(
!
obj
.
geometry
||
!
obj
.
material
)
return
;
// var mat = obj.material;
const
mat
=
obj
.
material
;
// //提取渲染对象及材质,分组渲染,怎么考虑同一个geometry只需要处理一次attr,
const
meshes
=
this
.
meshes
;
// //分组按
//提取渲染对象及材质,分组渲染,怎么考虑同一个geometry只需要处理一次attr,
// // if (!this.meshes.length) {
//分组按
// // this.meshes.push(obj);
// if (!this.meshes.length) {
// // } else {
// this.meshes.push(obj);
// for (var i = 0; i < this.meshes.length; i++) {
// } else {
// if (this.meshes[i].material == mat) {//没啥软用
const
len
=
meshes
.
length
;
// this.meshes.splice(i, 0, obj)
for
(
let
i
=
0
;
i
<
len
;
i
++
)
{
// return
if
(
meshes
[
i
].
material
==
mat
)
{
//没啥软用
// }
meshes
.
splice
(
i
,
0
,
obj
)
return
;
}
}
// }
// }
// // }
this
.
meshes
.
push
(
obj
);
meshes
.
push
(
obj
);
}
}
flush
()
{
flush
()
{
//生成一张阴影的深度贴图
//生成一张阴影的深度贴图
var
shadow
=
getShadowMap
(
this
.
lightsConfig
,
this
.
meshes
,
this
.
renderer
);
const
shadow
=
getShadowMap
(
this
.
lightsConfig
,
this
.
meshes
,
this
.
renderer
);
if
(
shadow
)
{
if
(
shadow
)
{
//绑定过帧缓存,viewport肯定被改了,该回去
//绑定过帧缓存,viewport肯定被改了,该回去
this
.
renderer
.
gl
.
viewport
(
this
.
renderer
.
gl
.
viewport
(
...
@@ -124,12 +131,12 @@ export class D3Renderer extends ObjectRenderer {
...
@@ -124,12 +131,12 @@ export class D3Renderer extends ObjectRenderer {
}
}
//同一材质的模型一起处理,同一个着色器,webglRenderer里会判断,不会重复绑定
//同一材质的模型一起处理,同一个着色器,webglRenderer里会判断,不会重复绑定
var
curShader
:
GLShader
=
null
;
let
curShader
:
GLShader
=
null
;
var
pointLightNum
=
this
.
lightsConfig
.
pointLights
.
length
;
const
pointLightNum
=
this
.
lightsConfig
.
pointLights
.
length
;
var
dirLightNum
=
this
.
lightsConfig
.
directionalLights
.
length
;
const
dirLightNum
=
this
.
lightsConfig
.
directionalLights
.
length
;
var
gl
:
WebGLRenderingContext
=
this
.
renderer
.
gl
;
const
gl
:
WebGLRenderingContext
=
this
.
renderer
.
gl
;
var
textureManager
=
this
.
renderer
.
textureManager
;
const
textureManager
=
this
.
renderer
.
textureManager
;
for
(
var
i
=
0
;
i
<
this
.
meshes
.
length
;
i
++
)
{
for
(
let
i
=
0
;
i
<
this
.
meshes
.
length
;
i
++
)
{
let
mesh
=
this
.
meshes
[
i
];
//怎么判断是否要重新绑定
let
mesh
=
this
.
meshes
[
i
];
//怎么判断是否要重新绑定
let
mat
:
BaseMaterial
=
mesh
.
material
;
let
mat
:
BaseMaterial
=
mesh
.
material
;
let
geo
=
mesh
.
geometry
;
let
geo
=
mesh
.
geometry
;
...
...
src/3d/materials/BaseMaterial.ts
View file @
d0677f3d
import
{
HashObject
}
from
"../../2d/HashObject"
;
import
{
HashObject
}
from
"../../2d/HashObject"
;
import
{
Texture
}
from
"../../2d/texture"
;
import
{
Texture
}
from
"../../2d/texture"
;
import
{
Vector3
}
from
"../math/Vector3"
;
import
{
hex2rgb
}
from
"../../2d/utils"
;
import
{
hex2rgb
}
from
"../../2d/utils"
;
...
@@ -100,7 +99,7 @@ export class BaseMaterial extends HashObject {
...
@@ -100,7 +99,7 @@ export class BaseMaterial extends HashObject {
//所有属性
//所有属性
if
(
parameters
)
{
if
(
parameters
)
{
for
(
var
key
in
parameters
)
{
for
(
const
key
in
parameters
)
{
this
[
key
]
=
parameters
[
key
];
this
[
key
]
=
parameters
[
key
];
}
}
}
}
...
@@ -138,4 +137,4 @@ export interface BaseMaterialParamsInt {
...
@@ -138,4 +137,4 @@ export interface BaseMaterialParamsInt {
morphTargets
?:
boolean
,
morphTargets
?:
boolean
,
morphNormals
?:
boolean
,
morphNormals
?:
boolean
,
skinning
?:
boolean
,
skinning
?:
boolean
,
}
}
\ No newline at end of file
src/3d/shaders/getCusShader.ts
View file @
d0677f3d
...
@@ -24,7 +24,7 @@ export function getCusShader(
...
@@ -24,7 +24,7 @@ export function getCusShader(
shadow
?:
any
shadow
?:
any
)
{
)
{
//所有参数
//所有参数
var
parameters
:
IShaderParameters
=
{
const
parameters
:
IShaderParameters
=
{
glUid
:
render
.
CONTEXT_UID
,
glUid
:
render
.
CONTEXT_UID
,
precision
:
getMaxPrecision
(
render
),
//也可能是材质上传的,再说了TODO
precision
:
getMaxPrecision
(
render
),
//也可能是材质上传的,再说了TODO
pointLightsNum
:
lights
.
pointLights
.
length
,
pointLightsNum
:
lights
.
pointLights
.
length
,
...
@@ -39,8 +39,8 @@ export function getCusShader(
...
@@ -39,8 +39,8 @@ export function getCusShader(
lightAffect
:
material
.
_lightAffect
,
lightAffect
:
material
.
_lightAffect
,
useMap
:
!!
material
.
map
&&
material
.
map
.
valid
,
useMap
:
!!
material
.
map
&&
material
.
map
.
valid
,
// @ts-ignore
// @ts-ignore
useNormalMap
:
!!
material
.
normalMap
&&
material
.
normalMap
.
valid
,
useNormalMap
:
!!
material
.
normalMap
&&
material
.
normalMap
.
valid
,
useEnvMap
:
!!
material
.
envMap
&&
material
.
envMap
.
valid
,
useEnvMap
:
!!
material
.
envMap
&&
material
.
envMap
.
valid
,
combine
:
material
.
combine
,
combine
:
material
.
combine
,
...
@@ -50,12 +50,12 @@ export function getCusShader(
...
@@ -50,12 +50,12 @@ export function getCusShader(
useShadow
:
shadow
&&
mesh
.
receiveShadow
&&
material
.
_lightAffect
,
useShadow
:
shadow
&&
mesh
.
receiveShadow
&&
material
.
_lightAffect
,
shadowType
:
shadow
&&
shadow
.
shadowType
,
shadowType
:
shadow
&&
shadow
.
shadowType
,
}
}
;
//计算code,
//计算code,
var
shaderKey
=
getShaderKey
(
parameters
);
const
shaderKey
=
getShaderKey
(
parameters
);
var
cusShader
:
CusShader
;
let
cusShader
:
CusShader
;
for
(
var
i
=
0
;
i
<
cacheShaders
.
length
;
i
++
)
{
for
(
let
i
=
0
;
i
<
cacheShaders
.
length
;
i
++
)
{
if
(
cacheShaders
[
i
].
_glShaderKey
===
shaderKey
)
{
if
(
cacheShaders
[
i
].
_glShaderKey
===
shaderKey
)
{
cusShader
=
cacheShaders
[
i
];
cusShader
=
cacheShaders
[
i
];
++
cusShader
.
usedTimes
;
++
cusShader
.
usedTimes
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment