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
5a82e416
Commit
5a82e416
authored
May 16, 2022
by
wangjianfeng.yz
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1
parent
553d9a06
Changes
9
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
292 additions
and
586 deletions
+292
-586
const.ts
srcNew/2d/const.ts
+6
-0
FilterManager.ts
srcNew/2d/renderers/managers/FilterManager.ts
+1
-1
syncUniforms.ts
srcNew/2d/renderers/webgl/shader/syncUniforms.ts
+7
-8
D3Renderer.ts
srcNew/3d/core/D3Renderer.ts
+245
-560
Mesh3D.ts
srcNew/3d/core/Mesh3D.ts
+3
-3
BaseMaterial.ts
srcNew/3d/materials/BaseMaterial.ts
+10
-2
ShaderMaterial.ts
srcNew/3d/materials/ShaderMaterial.ts
+3
-0
index.ts
srcNew/3d/materials/index.ts
+2
-0
getCusShader.ts
srcNew/3d/shaders/getCusShader.ts
+15
-12
No files found.
srcNew/2d/const.ts
View file @
5a82e416
...
...
@@ -351,7 +351,13 @@ export enum BUFFER_USAGE {
}
export
enum
BUFFER_TYPE
{
/**
* 索引数据
*/
ELEMENT_ARRAY_BUFFER
=
"ELEMENT_ARRAY_BUFFER"
,
/**
* 顶点数据
*/
ARRAY_BUFFER
=
"ARRAY_BUFFER"
,
}
//还是存映射,不用gl固定的数值
...
...
srcNew/2d/renderers/managers/FilterManager.ts
View file @
5a82e416
...
...
@@ -261,7 +261,7 @@ export class FilterManager {
filter
.
uniformsData
.
projectionMatrix
.
value
=
framebufferManager
.
projectionMatrix
;
}
//uniform属性同步下,自定义属性在各自的apply里执行
syncUniforms
(
shader
,
filter
.
uniformsData
,
renderer
)
syncUniforms
(
shader
,
filter
.
uniformsData
,
renderer
,
0
)
//顶点和uv计算,其实可以放到着色器里,以后再说 TODO
this
.
quad
.
map
(
state
.
destinationFrame
,
state
.
sourceFrame
);
//传数据
...
...
srcNew/2d/renderers/webgl/shader/syncUniforms.ts
View file @
5a82e416
...
...
@@ -6,21 +6,20 @@ import { IShaderUniformData, UniformType } from "./UniformType";
/**
* 对于自行设置了uniforms的着色器,
* @param shader
* @param uniforms
* @param uniforms
Data
* @param renderer
* @param textureStart
* @param textureStart
不传表示,不绑定特定纹理通道
*/
export
function
syncUniforms
(
shader
:
IWebglShader
,
uniforms
:
Dict
<
IShaderUniformData
>
,
renderer
:
WebglRenderer
,
textureStart
?:
number
)
{
let
textureCount
=
textureStart
||
0
;
for
(
const
i
in
uniforms
)
{
const
{
type
,
value
}
=
uniforms
[
i
];
export
function
syncUniforms
(
shader
:
IWebglShader
,
uniformsData
:
Dict
<
IShaderUniformData
>
,
renderer
:
WebglRenderer
,
textureStart
?:
number
)
{
for
(
const
i
in
uniformsData
)
{
const
{
type
,
value
}
=
uniformsData
[
i
];
//以着色器为准
if
(
!
shader
.
uniforms
[
i
])
continue
;
if
(
type
===
UniformType
.
texture
)
{
//同一个着色器不能覆盖自身的,只能覆盖别人的,但是有没有可能合图集,最后使用的同一个纹理呢?TODO待测试,尽量别这么玩吧
//待测试,同一纹理占用多个通道会不会出问题
shader
.
uniforms
[
i
]
=
renderer
.
textureManager
.
bind
(
value
.
baseTexture
,
texture
Coun
t
);
textureCoun
t
++
;
shader
.
uniforms
[
i
]
=
renderer
.
textureManager
.
bind
(
value
.
baseTexture
,
texture
Star
t
);
if
(
typeof
(
textureStart
)
==
"number"
)
textureStar
t
++
;
}
else
if
(
type
===
UniformType
.
color
)
{
if
(
typeof
value
==
"number"
)
{
...
...
srcNew/3d/core/D3Renderer.ts
View file @
5a82e416
This diff is collapsed.
Click to expand it.
srcNew/3d/core/Mesh3D.ts
View file @
5a82e416
import
{
Object3D
}
from
"./Object3D"
;
import
{
BaseMaterial
,
RenderSideType
}
from
"../materials/BaseMaterial"
;
import
{
Matrix4
}
from
"../math/Matrix4"
;
import
{
Ray
}
from
"../math/Ray"
;
import
{
Sphere
}
from
"../math/Sphere"
;
import
{
Vector3
}
from
"../math/Vector3"
;
import
{
Raycaster
,
IntersectData
}
from
"./Raycaster"
;
import
{
Geometry3D
}
from
"./Geometry3D"
;
import
{
IMaterial
,
RenderSideType
}
from
"../materials/IMaterial"
;
const
templeSphere
:
Sphere
=
new
Sphere
();
const
tempMatrix
:
Matrix4
=
new
Matrix4
();
...
...
@@ -24,14 +24,14 @@ export class Mesh3D extends Object3D {
// morphTargetDictionary
constructor
(
public
geometry
:
Geometry3D
,
public
material
:
Base
Material
public
material
:
I
Material
)
{
super
();
this
.
_instanceType
=
"Mesh3D"
;
this
.
updateMorphTargets
();
}
_render
(
renderer
)
{
if
(
!
this
.
visible
||
!
this
.
material
.
alpha
)
return
;
//到时加transparent时需要修改 TODO
if
(
!
this
.
visible
)
return
;
renderer
.
batchManager
.
setObjectRenderer
(
renderer
.
plugins
[
"d3"
]);
renderer
.
plugins
[
"d3"
].
render
(
this
)
}
...
...
srcNew/3d/materials/BaseMaterial.ts
View file @
5a82e416
...
...
@@ -58,9 +58,17 @@ export class BaseMaterial extends IMaterial {
public
reflectivity
:
number
=
1
;
// public refractionRatio = 0.98;//先只管反射
// public envMapIntensity = 1.0
/**
* 变形顶点
*/
morphTargets
:
boolean
=
false
;
/**
* 变形法线
*/
morphNormals
:
boolean
=
false
;
/**
* 蒙皮
*/
skinning
:
boolean
=
false
;
/**
* 是否使用顶点颜色
...
...
@@ -71,7 +79,7 @@ export class BaseMaterial extends IMaterial {
*/
useFog
:
boolean
=
true
;
/**
* 是否光照影响
* 是否光照影响
,到时得改下,专门一个pbr材质,不放这里
*/
useLight
:
boolean
=
false
;
constructor
(
parameters
?:
IBaseMaterialParams
)
{
...
...
srcNew/3d/materials/ShaderMaterial.ts
View file @
5a82e416
...
...
@@ -41,6 +41,9 @@ export class ShaderMaterial extends IMaterial {
return
true
;
};
protected
_shader
:
Shader
;
public
get
shader
()
{
return
this
.
_shader
}
public
get
uniformsData
()
{
return
this
.
_shader
.
uniformsData
;
}
...
...
srcNew/3d/materials/index.ts
View file @
5a82e416
...
...
@@ -4,3 +4,5 @@ export * from "./BaseMaterial";
export
*
from
"./ShaderMaterial"
export
*
from
"./Sprite3dMaterial"
export
*
from
"./IMaterial"
\ No newline at end of file
srcNew/3d/shaders/getCusShader.ts
View file @
5a82e416
...
...
@@ -272,6 +272,7 @@ const VERT = [
' attribute vec3 morphTarget1;'
,
' attribute vec3 morphTarget2;'
,
' attribute vec3 morphTarget3;'
,
' uniform float morphTargetBaseInfluence;'
,
' #ifdef USE_MORPHNORMALS'
,
' attribute vec3 morphNormal0;'
,
' attribute vec3 morphNormal1;'
,
...
...
@@ -305,15 +306,16 @@ const VERT = [
" vec3 transformed = vec3( aPosition );"
,
//考虑变形,顶点位置
" #ifdef USE_MORPHTARGETS"
,
" transformed += ( morphTarget0 - aPosition ) * morphTargetInfluences[ 0 ];"
,
" transformed += ( morphTarget1 - aPosition ) * morphTargetInfluences[ 1 ];"
,
" transformed += ( morphTarget2 - aPosition ) * morphTargetInfluences[ 2 ];"
,
" transformed += ( morphTarget3 - aPosition ) * morphTargetInfluences[ 3 ];"
,
" transformed *= morphTargetBaseInfluence;"
,
" transformed += morphTarget0 * morphTargetInfluences[ 0 ];"
,
" transformed += morphTarget1 * morphTargetInfluences[ 1 ];"
,
" transformed += morphTarget2 * morphTargetInfluences[ 2 ];"
,
" transformed += morphTarget3 * morphTargetInfluences[ 3 ];"
,
" #ifndef USE_MORPHNORMALS"
,
" transformed +=
( morphTarget4 - aPosition )
* morphTargetInfluences[ 4 ];"
,
" transformed +=
( morphTarget5 - aPosition )
* morphTargetInfluences[ 5 ];"
,
" transformed +=
( morphTarget6 - aPosition )
* morphTargetInfluences[ 6 ];"
,
" transformed +=
( morphTarget7 - aPosition )
* morphTargetInfluences[ 7 ];"
,
" transformed +=
morphTarget4
* morphTargetInfluences[ 4 ];"
,
" transformed +=
morphTarget5
* morphTargetInfluences[ 5 ];"
,
" transformed +=
morphTarget6
* morphTargetInfluences[ 6 ];"
,
" transformed +=
morphTarget7
* morphTargetInfluences[ 7 ];"
,
" #endif"
,
" #endif"
,
//使用蒙皮骨骼
...
...
@@ -347,10 +349,11 @@ const VERT = [
" vec3 objectNormal = vec3( aNormal );"
,
//考虑变形,法线
" #ifdef USE_MORPHNORMALS"
,
" objectNormal += ( morphNormal0 - aNormal ) * morphTargetInfluences[ 0 ];"
,
" objectNormal += ( morphNormal1 - aNormal ) * morphTargetInfluences[ 1 ];"
,
" objectNormal += ( morphNormal2 - aNormal ) * morphTargetInfluences[ 2 ];"
,
" objectNormal += ( morphNormal3 - aNormal ) * morphTargetInfluences[ 3 ];"
,
" objectNormal *= morphTargetBaseInfluence;"
,
" objectNormal += morphNormal0 * morphTargetInfluences[ 0 ];"
,
" objectNormal += morphNormal1 * morphTargetInfluences[ 1 ];"
,
" objectNormal += morphNormal2 * morphTargetInfluences[ 2 ];"
,
" objectNormal += morphNormal3 * morphTargetInfluences[ 3 ];"
,
" #endif"
,
//骨骼蒙皮
" #ifdef USE_SKINNING"
,
...
...
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