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
80b6cd02
Commit
80b6cd02
authored
Apr 19, 2022
by
邱旭
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
更新,3D模型骨骼使用纹理贴图的形式传数据,提升骨骼数量上限
parent
7650b0a2
Changes
5
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
45 additions
and
41 deletions
+45
-41
fyge.min.js
build/fyge.min.js
+16
-11
fyge.min.js.map
build/fyge.min.js.map
+1
-1
package.json
package.json
+1
-1
TextureManager.ts
src/2d/renderers/managers/TextureManager.ts
+2
-1
D3Renderer.ts
src/3d/D3Renderer.ts
+25
-27
No files found.
build/fyge.min.js
View file @
80b6cd02
...
...
@@ -16308,7 +16308,8 @@ var TextureManager = /** @class */ (function () {
glTexture = new glCore_1.GLTexture(this.gl, null, null, null, null);
//之前已经active过了,upload里也有bind,这里也许不用执行
// glTexture.bind(location);
glTexture.premultiplyAlpha = true;
// glTexture.premultiplyAlpha = true;
glTexture.premultiplyAlpha = texture.premultipliedAlpha;
if (texture.source.data) { //是data形式
glTexture.uploadData(texture.source.data, texture.width, texture.height);
}
...
...
@@ -26409,21 +26410,22 @@ var __extends = (this && this.__extends) || (function () {
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.D3Renderer = void 0;
var const_1 = __webpack_require__(/*! ../2d/const */ "./src/2d/const.ts");
var BatchBuffer_1 = __webpack_require__(/*! ../2d/renderers/webgl/BatchBuffer */ "./src/2d/renderers/webgl/BatchBuffer.ts");
var ObjectRenderer_1 = __webpack_require__(/*! ../2d/renderers/webgl/ObjectRenderer */ "./src/2d/renderers/webgl/ObjectRenderer.ts");
var WebglRenderer_1 = __webpack_require__(/*! ../2d/renderers/WebglRenderer */ "./src/2d/renderers/WebglRenderer.ts");
var glCore_1 = __webpack_require__(/*! ../glCore */ "./src/glCore/index.ts");
var utils_1 = __webpack_require__(/*! ../2d/utils */ "./src/2d/utils/index.ts");
var Matrix4_1 = __webpack_require__(/*! ./math/Matrix4 */ "./src/3d/math/Matrix4.ts");
var BatchBuffer_1 = __webpack_require__(/*! ../2d/renderers/webgl/BatchBuffer */ "./src/2d/renderers/webgl/BatchBuffer.ts");
var BaseMaterial_1 = __webpack_require__(/*! ./materials/BaseMaterial */ "./src/3d/materials/BaseMaterial.ts");
var getCusShader_1 = __webpack_require__(/*! ./shaders/getCusShader */ "./src/3d/shaders/getCusShader.ts");
var texture_1 = __webpack_require__(/*! ../2d/texture */ "./src/2d/texture/index.ts");
var Vector3_1 = __webpack_require__(/*! ./math/Vector3 */ "./src/3d/math/Vector3.ts");
var ShaderMaterial_1 = __webpack_require__(/*! ./materials/ShaderMaterial */ "./src/3d/materials/ShaderMaterial.ts");
var ShadowShader_1 = __webpack_require__(/*! ./shaders/ShadowShader */ "./src/3d/shaders/ShadowShader.ts");
var BaseRenderTexture_1 = __webpack_require__(/*! ../2d/texture/BaseRenderTexture */ "./src/2d/texture/BaseRenderTexture.ts");
var RenderTexture_1 = __webpack_require__(/*! ../2d/texture/RenderTexture */ "./src/2d/texture/RenderTexture.ts");
var TextureMatrix_1 = __webpack_require__(/*! ../2d/texture/TextureMatrix */ "./src/2d/texture/TextureMatrix.ts");
var utils_1 = __webpack_require__(/*! ../2d/utils */ "./src/2d/utils/index.ts");
var glCore_1 = __webpack_require__(/*! ../glCore */ "./src/glCore/index.ts");
var BaseMaterial_1 = __webpack_require__(/*! ./materials/BaseMaterial */ "./src/3d/materials/BaseMaterial.ts");
var ShaderMaterial_1 = __webpack_require__(/*! ./materials/ShaderMaterial */ "./src/3d/materials/ShaderMaterial.ts");
var Matrix4_1 = __webpack_require__(/*! ./math/Matrix4 */ "./src/3d/math/Matrix4.ts");
var Vector3_1 = __webpack_require__(/*! ./math/Vector3 */ "./src/3d/math/Vector3.ts");
var getCusShader_1 = __webpack_require__(/*! ./shaders/getCusShader */ "./src/3d/shaders/getCusShader.ts");
var ShadowShader_1 = __webpack_require__(/*! ./shaders/ShadowShader */ "./src/3d/shaders/ShadowShader.ts");
var tempVec3 = new Vector3_1.Vector3();
var tempMatrix4 = new Matrix4_1.Matrix4();
//需要管理渲染的状态 resetToDefault resetTo3D
...
...
@@ -26441,7 +26443,8 @@ var D3Renderer = /** @class */ (function (_super) {
var vertexTextures = maxVertexTextures > 0;
var floatFragmentTextures = !!gl.getExtension("OES_texture_float");
//传入的数据纹理暂时有问题,是UNPACK_ALIGNMENT还是UNPACK_FLIP_Y_WEBGL的问题未知,所以不管先
this.floatVertexTextures = false; //vertexTextures && floatFragmentTextures;
// this.floatVertexTextures = false//vertexTextures && floatFragmentTextures;
this.floatVertexTextures = vertexTextures && floatFragmentTextures;
};
D3Renderer.prototype.start = function () {
//设置3d状态机属性
...
...
@@ -26657,6 +26660,8 @@ var D3Renderer = /** @class */ (function (_super) {
boneMatrices.set(skeleton.boneMatrices); // copy current values
var boneTexture = new texture_1.BaseTexture({ data: boneMatrices, width: size, height: size });
boneTexture.mipmap = false;
boneTexture.scaleMode = const_1.SCALE_MODES.NEAREST;
boneTexture.premultipliedAlpha = false;
skeleton.boneMatrices = boneMatrices;
skeleton.boneTexture = boneTexture;
skeleton.boneTextureSize = size;
build/fyge.min.js.map
View file @
80b6cd02
This diff is collapsed.
Click to expand it.
package.json
View file @
80b6cd02
{
"name"
:
"fyge"
,
"version"
:
"2.0.4
3
"
,
"version"
:
"2.0.4
4
"
,
"description"
:
"canvas渲染引擎"
,
"main"
:
"./build/fyge.min.js"
,
"types"
:
"./build/types.d.ts"
,
...
...
src/2d/renderers/managers/TextureManager.ts
View file @
80b6cd02
...
...
@@ -196,7 +196,8 @@ export default class TextureManager {
glTexture
=
new
GLTexture
(
this
.
gl
,
null
,
null
,
null
,
null
);
//之前已经active过了,upload里也有bind,这里也许不用执行
// glTexture.bind(location);
glTexture
.
premultiplyAlpha
=
true
;
// glTexture.premultiplyAlpha = true;
glTexture
.
premultiplyAlpha
=
(
texture
as
BaseTexture
).
premultipliedAlpha
;
if
(
texture
.
source
.
data
)
{
//是data形式
glTexture
.
uploadData
(
texture
.
source
.
data
,
texture
.
width
,
texture
.
height
)
}
else
{
...
...
src/3d/D3Renderer.ts
View file @
80b6cd02
import
{
Geometry
,
VaoBufferInt
}
from
"."
;
import
{
SCALE_MODES
}
from
"../2d/const"
;
import
{
BatchBuffer
}
from
"../2d/renderers/webgl/BatchBuffer"
;
import
ObjectRenderer
from
"../2d/renderers/webgl/ObjectRenderer"
;
import
{
WebglRenderer
}
from
"../2d/renderers/WebglRenderer"
;
import
{
Camera
}
from
"./cameras/Camera"
;
import
{
LightsConfig
,
ShadowType
}
from
"./Scene3D"
;
import
{
GLShader
,
GLBuffer
,
VertexArrayObject
}
from
"../glCore"
;
import
{
Mesh3D
}
from
"./Mesh3D"
;
import
{
BaseShader
}
from
"./shaders/BaseShader"
;
import
{
LightShader
}
from
"./shaders/LightShader"
;
import
{
hex2rgb
,
rgb2hex
}
from
"../2d/utils"
;
import
{
Matrix4
}
from
"./math/Matrix4"
;
import
{
BLEND_MODES
}
from
"../2d/const"
;
import
{
BatchBuffer
}
from
"../2d/renderers/webgl/BatchBuffer"
;
import
{
BaseMaterial
,
RenderSideType
}
from
"./materials/BaseMaterial"
;
import
{
getCusShader
}
from
"./shaders/getCusShader"
;
import
{
Geometry
,
VaoBufferInt
}
from
"."
;
import
{
SkinnedMesh3D
}
from
"./bones/SkinnedMesh3D"
;
import
{
nextPow2
}
from
"../2d/utils"
import
{
BaseTexture
,
Texture
}
from
"../2d/texture"
;
import
{
Vector3
}
from
"./math/Vector3"
;
import
{
UniformType
}
from
"./materials/ShaderMaterial"
;
import
RenderTarget
from
"../2d/renderers/renderTarget/RenderTarget"
;
import
{
ShadowShader
}
from
"./shaders/ShadowShader"
;
import
BaseRenderTexture
from
"../2d/texture/BaseRenderTexture"
;
import
RenderTexture
from
"../2d/texture/RenderTexture"
;
import
{
OrthographicCamera
}
from
"./cameras/OrthographicCamera"
;
import
TextureMatrix
from
"../2d/texture/TextureMatrix"
;
import
{
hex2rgb
}
from
"../2d/utils"
;
import
{
GLBuffer
,
GLShader
,
VertexArrayObject
}
from
"../glCore"
;
import
{
SkinnedMesh3D
}
from
"./bones/SkinnedMesh3D"
;
import
{
Camera
}
from
"./cameras/Camera"
;
import
{
BaseMaterial
,
RenderSideType
}
from
"./materials/BaseMaterial"
;
import
{
UniformType
}
from
"./materials/ShaderMaterial"
;
import
{
Matrix4
}
from
"./math/Matrix4"
;
import
{
Vector3
}
from
"./math/Vector3"
;
import
{
Mesh3D
}
from
"./Mesh3D"
;
import
{
LightsConfig
,
ShadowType
}
from
"./Scene3D"
;
import
{
getCusShader
}
from
"./shaders/getCusShader"
;
import
{
ShadowShader
}
from
"./shaders/ShadowShader"
;
let
tempVec3
=
new
Vector3
()
let
tempMatrix4
=
new
Matrix4
();
...
...
@@ -65,7 +60,8 @@ export class D3Renderer extends ObjectRenderer {
var
vertexTextures
=
maxVertexTextures
>
0
;
var
floatFragmentTextures
=
!!
gl
.
getExtension
(
"OES_texture_float"
);
//传入的数据纹理暂时有问题,是UNPACK_ALIGNMENT还是UNPACK_FLIP_Y_WEBGL的问题未知,所以不管先
this
.
floatVertexTextures
=
false
//vertexTextures && floatFragmentTextures;
// this.floatVertexTextures = false//vertexTextures && floatFragmentTextures;
this
.
floatVertexTextures
=
vertexTextures
&&
floatFragmentTextures
;
}
start
()
{
//设置3d状态机属性
...
...
@@ -283,6 +279,8 @@ export class D3Renderer extends ObjectRenderer {
boneMatrices
.
set
(
skeleton
.
boneMatrices
);
// copy current values
var
boneTexture
=
new
BaseTexture
({
data
:
boneMatrices
,
width
:
size
,
height
:
size
});
boneTexture
.
mipmap
=
false
;
boneTexture
.
scaleMode
=
SCALE_MODES
.
NEAREST
;
boneTexture
.
premultipliedAlpha
=
false
;
skeleton
.
boneMatrices
=
boneMatrices
;
skeleton
.
boneTexture
=
boneTexture
;
skeleton
.
boneTextureSize
=
size
;
...
...
@@ -413,7 +411,7 @@ export class D3Renderer extends ObjectRenderer {
/**
* 组转集合的所有属性到一个_attrBuffer
* @param geo
* @param geo
* @returns {boolean} 返回是否需要upload数据,一般是vao已有的情况下需要判断,新建vao时是必要upload的
*/
function
packGeometry
(
geo
:
Geometry
):
boolean
{
...
...
@@ -482,7 +480,7 @@ var morphInfluences = new Float32Array(8);
* 返回要upload的数据
* @param objectInfluences mesh上的权重数组
* @param geo 几何
* @param vao
* @param vao
*/
function
addMorphtargetsAttr
(
objectInfluences
:
number
[],
...
...
@@ -634,9 +632,9 @@ let shadowShaders: { [key: string]: ShadowShader } = {};
// let shadowMatrix: Matrix4;
/**
* 生成影子深度图
* @param lights
* @param meshes
* @param renderer
* @param lights
* @param meshes
* @param renderer
*/
function
getShadowMap
(
lights
:
LightsConfig
,
...
...
@@ -840,4 +838,4 @@ function isArrayEqual(arr1: any[] | Float32Array, arr2: any[] | Float32Array) {
// }
}
return
true
;
}
\ No newline at end of file
}
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