Skip to content

Commit

Permalink
structure
Browse files Browse the repository at this point in the history
  • Loading branch information
YunHsiao committed Feb 3, 2021
1 parent 4fd693a commit 5a02d3f
Show file tree
Hide file tree
Showing 101 changed files with 283 additions and 318 deletions.
6 changes: 3 additions & 3 deletions cocos/2d/framework/renderable-2d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,14 @@
* @module ui
*/
import { EDITOR } from 'internal:constants';
import { ccclass, executeInEditMode, requireComponent, disallowMultiple, tooltip, type, displayOrder, serializable, override, visible, displayName } from 'cc.decorator';
import { ccclass, executeInEditMode, requireComponent, disallowMultiple, tooltip,
type, displayOrder, serializable, override, visible, displayName } from 'cc.decorator';
import { Color } from '../../core/math';
import { SystemEventType } from '../../core/platform/event-manager/event-enum';
import { ccenum } from '../../core/value-types/enum';
import { builtinResMgr } from '../../core/builtin';
import { Material } from '../../core/assets';
import { BlendFactor } from '../../core/gfx/define';
import { BlendFactor, BlendState, BlendTarget } from '../../core/gfx';
import { IMaterialInstanceInfo } from '../../core/renderer/core/material-instance';
import { IAssembler, IAssemblerManager } from '../renderer/base';
import { RenderData } from '../renderer/render-data';
Expand All @@ -45,7 +46,6 @@ import { UITransform } from './ui-transform';
import { RenderableComponent } from '../../core/components/renderable-component';
import { Stage } from '../renderer/stencil-manager';
import { warnID } from '../../core/platform/debug';
import { BlendState, BlendTarget } from '../../core/gfx/pipeline-state';
import { legacyCC } from '../../core/global-exports';

// hack
Expand Down
3 changes: 1 addition & 2 deletions cocos/2d/renderer/batcher-2d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ import { Camera, Model } from 'cocos/core/renderer/scene';
import { UIStaticBatch } from '../components';
import { Material } from '../../core/assets/material';
import { RenderRoot2D, Renderable2D, UIComponent } from '../framework';
import { Texture, Device, Attribute, Sampler, DescriptorSetInfo, DescriptorSet, Buffer, BufferInfo } from '../../core/gfx';
import { Texture, Device, Attribute, Sampler, DescriptorSetInfo, Buffer, BufferInfo, BufferUsageBit, MemoryUsageBit } from '../../core/gfx';
import { Pool, RecyclePool } from '../../core/memop';
import { CachedArray } from '../../core/memop/cached-array';
import { RenderScene } from '../../core/renderer/scene/render-scene';
Expand All @@ -48,7 +48,6 @@ import { RenderTexture } from '../../core/assets';
import { SpriteFrame } from '../assets';
import { TextureBase } from '../../core/assets/texture-base';
import { sys } from '../../core/platform/sys';
import { BufferUsageBit, MemoryUsageBit } from '../../core/gfx/define';
import { Mat4 } from '../../core/math';

const _dsInfo = new DescriptorSetInfo(null!);
Expand Down
3 changes: 1 addition & 2 deletions cocos/2d/renderer/mesh-buffer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,7 @@
* @packageDocumentation
* @module ui
*/
import { BufferUsageBit, MemoryUsageBit } from '../../core/gfx/define';
import { InputAssemblerInfo, Attribute, Buffer, BufferInfo } from '../../core/gfx';
import { BufferUsageBit, MemoryUsageBit, InputAssemblerInfo, Attribute, Buffer, BufferInfo } from '../../core/gfx';
import { Batcher2D } from './batcher-2d';
import { InputAssemblerHandle, NULL_HANDLE, IAPool } from '../../core/renderer/core/memory-pools';
import { getComponentPerVertex } from './vertex-format';
Expand Down
3 changes: 1 addition & 2 deletions cocos/2d/renderer/stencil-manager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,8 @@
* @hidden
*/

import { ComparisonFunc, StencilOp } from '../../core/gfx/define';
import { ComparisonFunc, StencilOp, DepthStencilState } from '../../core/gfx';
import { Mask } from '../components/mask';
import { DepthStencilState } from '../../core/gfx/pipeline-state';
import { Material } from '../../core';

// Stage types
Expand Down
3 changes: 1 addition & 2 deletions cocos/2d/renderer/vertex-format.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,7 @@
* @hidden
*/

import { AttributeName, Format, FormatInfos } from '../../core/gfx/define';
import { Attribute } from '../../core/gfx';
import { AttributeName, Format, FormatInfos, Attribute } from '../../core/gfx';
import { legacyCC } from '../../core/global-exports';

export const vfmt = [
Expand Down
2 changes: 1 addition & 1 deletion cocos/2d/utils/dynamic-atlas/atlas.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import { PixelFormat } from '../../../core/assets/asset-enum';
import { ImageAsset } from '../../../core/assets/image-asset';
import { Texture2D } from '../../../core/assets/texture-2d';
import { BufferTextureCopy } from '../../../core/gfx/define';
import { BufferTextureCopy } from '../../../core/gfx';
import { legacyCC } from '../../../core/global-exports';
import { SpriteFrame } from '../../assets/sprite-frame';

Expand Down
36 changes: 18 additions & 18 deletions cocos/3d/assets/mesh.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,20 +39,9 @@ import { sys } from '../../core/platform/sys';
import { warnID } from '../../core/platform/debug';
import { RenderingSubMesh } from '../../core/assets';
import {
Attribute, Device, InputAssemblerInfo, Buffer, BufferInfo,
Attribute, Device, Buffer, BufferInfo, AttributeName, BufferUsageBit, Feature, Format,
FormatInfos, FormatType, MemoryUsageBit, PrimitiveMode, getTypedArrayConstructor,
} from '../../core/gfx';
import {
AttributeName,
BufferUsageBit,
Feature,
Format,
FormatInfos,
FormatType,
MemoryUsageBit,
PrimitiveMode,
getTypedArrayConstructor,
} from '../../core/gfx/define';

import { Mat4, Quat, Vec3 } from '../../core/math';
import { Morph, MorphRendering, createMorphRendering } from './morph';

Expand Down Expand Up @@ -642,6 +631,7 @@ export class Mesh extends Asset {
case AttributeName.ATTR_NORMAL:
Vec3.transformQuat(vec3_temp, vec3_temp, rotate!);
break;
default:
}
f32_temp[0] = vec3_temp.x;
f32_temp[1] = vec3_temp.y;
Expand Down Expand Up @@ -878,7 +868,7 @@ export class Mesh extends Asset {
this._accessAttribute(primitiveIndex, attributeName, (vertexBundle, iAttribute) => {
const vertexCount = vertexBundle.view.count;
const { format } = vertexBundle.attributes[iAttribute];
const storageConstructor = getTypedArrayConstructor(FormatInfos[format]);
const StorageConstructor = getTypedArrayConstructor(FormatInfos[format]);
if (vertexCount === 0) {
return;
}
Expand All @@ -890,11 +880,11 @@ export class Mesh extends Asset {

const formatInfo = FormatInfos[format];
const reader = getReader(inputView, format);
if (!storageConstructor || !reader) {
if (!StorageConstructor || !reader) {
return;
}
const componentCount = formatInfo.count;
const storage = new storageConstructor(vertexCount * componentCount);
const storage = new StorageConstructor(vertexCount * componentCount);
const inputStride = vertexBundle.view.stride;
for (let iVertex = 0; iVertex < vertexCount; ++iVertex) {
for (let iComponent = 0; iComponent < componentCount; ++iComponent) {
Expand Down Expand Up @@ -975,8 +965,8 @@ export class Mesh extends Asset {
return null;
}
const { stride } = primitive.indexView;
const ctor = stride === 1 ? Uint8Array : (stride === 2 ? Uint16Array : Uint32Array);
return new ctor(this._data.buffer, primitive.indexView.offset, primitive.indexView.count);
const Ctor = stride === 1 ? Uint8Array : (stride === 2 ? Uint16Array : Uint32Array);
return new Ctor(this._data.buffer, primitive.indexView.offset, primitive.indexView.count);
}

/**
Expand Down Expand Up @@ -1072,6 +1062,7 @@ function getReader (dataView: DataView, format: Format) {
case 1: return (offset: number) => dataView.getUint8(offset);
case 2: return (offset: number) => dataView.getUint16(offset, isLittleEndian);
case 4: return (offset: number) => dataView.getUint32(offset, isLittleEndian);
default:
}
break;
}
Expand All @@ -1080,6 +1071,7 @@ function getReader (dataView: DataView, format: Format) {
case 1: return (offset: number) => dataView.getInt8(offset);
case 2: return (offset: number) => dataView.getInt16(offset, isLittleEndian);
case 4: return (offset: number) => dataView.getInt32(offset, isLittleEndian);
default:
}
break;
}
Expand All @@ -1088,6 +1080,7 @@ function getReader (dataView: DataView, format: Format) {
case 1: return (offset: number) => dataView.getInt8(offset);
case 2: return (offset: number) => dataView.getInt16(offset, isLittleEndian);
case 4: return (offset: number) => dataView.getInt32(offset, isLittleEndian);
default:
}
break;
}
Expand All @@ -1096,12 +1089,14 @@ function getReader (dataView: DataView, format: Format) {
case 1: return (offset: number) => dataView.getUint8(offset);
case 2: return (offset: number) => dataView.getUint16(offset, isLittleEndian);
case 4: return (offset: number) => dataView.getUint32(offset, isLittleEndian);
default:
}
break;
}
case FormatType.FLOAT: {
return (offset: number) => dataView.getFloat32(offset, isLittleEndian);
}
default:
}

return null;
Expand All @@ -1117,6 +1112,7 @@ function getWriter (dataView: DataView, format: Format) {
case 1: return (offset: number, value: number) => dataView.setUint8(offset, value);
case 2: return (offset: number, value: number) => dataView.setUint16(offset, value, isLittleEndian);
case 4: return (offset: number, value: number) => dataView.setUint32(offset, value, isLittleEndian);
default:
}
break;
}
Expand All @@ -1125,6 +1121,7 @@ function getWriter (dataView: DataView, format: Format) {
case 1: return (offset: number, value: number) => dataView.setInt8(offset, value);
case 2: return (offset: number, value: number) => dataView.setInt16(offset, value, isLittleEndian);
case 4: return (offset: number, value: number) => dataView.setInt32(offset, value, isLittleEndian);
default:
}
break;
}
Expand All @@ -1133,6 +1130,7 @@ function getWriter (dataView: DataView, format: Format) {
case 1: return (offset: number, value: number) => dataView.setInt8(offset, value);
case 2: return (offset: number, value: number) => dataView.setInt16(offset, value, isLittleEndian);
case 4: return (offset: number, value: number) => dataView.setInt32(offset, value, isLittleEndian);
default:
}
break;
}
Expand All @@ -1141,12 +1139,14 @@ function getWriter (dataView: DataView, format: Format) {
case 1: return (offset: number, value: number) => dataView.setUint8(offset, value);
case 2: return (offset: number, value: number) => dataView.setUint16(offset, value, isLittleEndian);
case 4: return (offset: number, value: number) => dataView.setUint32(offset, value, isLittleEndian);
default:
}
break;
}
case FormatType.FLOAT: {
return (offset: number, value: number) => dataView.setFloat32(offset, value, isLittleEndian);
}
default:
}

return null;
Expand Down
27 changes: 17 additions & 10 deletions cocos/3d/assets/morph-rendering.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,8 @@ import { Mesh } from './mesh';
import { Texture2D } from '../../core/assets/texture-2d';
import { ImageAsset } from '../../core/assets/image-asset';
import { samplerLib } from '../../core/renderer/core/sampler-lib';
import { UBOMorph, UNIFORM_NORMAL_MORPH_TEXTURE_BINDING, UNIFORM_POSITION_MORPH_TEXTURE_BINDING, UNIFORM_TANGENT_MORPH_TEXTURE_BINDING } from '../../core/pipeline/define';
import { UBOMorph, UNIFORM_NORMAL_MORPH_TEXTURE_BINDING,
UNIFORM_POSITION_MORPH_TEXTURE_BINDING, UNIFORM_TANGENT_MORPH_TEXTURE_BINDING } from '../../core/pipeline/define';
import { warn, warnID } from '../../core/platform/debug';
import { Morph, MorphRendering, MorphRenderingInstance, SubMeshMorph } from './morph';
import { assertIsNonNullable, assertIsTrue } from '../../core/data/utils/asserts';
Expand Down Expand Up @@ -100,16 +101,18 @@ export class StdMorphRendering implements MorphRendering {
subMeshInstances[iSubMesh] = this._subMeshRenderings[iSubMesh]?.createInstance() ?? null;
}
return {
setWeights: (subMeshIndex: number, weights: number[]) => {
subMeshInstances[subMeshIndex]?.setWeights(weights);
setWeights (subMeshIndex: number, weights: number[]) {
if (subMeshInstances[subMeshIndex]) {
subMeshInstances[subMeshIndex]!.setWeights(weights);
}
},

requiredPatches: (subMeshIndex: number) => {
assertIsNonNullable(this._mesh.struct.morph);
const subMeshMorph = this._mesh.struct.morph.subMeshMorphs[subMeshIndex];
const subMeshRenderingInstance = subMeshInstances[subMeshIndex];
if (subMeshRenderingInstance === null) {
return;
return null;
}
assertIsNonNullable(subMeshMorph);
const patches: IMacroPatch[] = [
Expand All @@ -130,12 +133,16 @@ export class StdMorphRendering implements MorphRendering {
},

adaptPipelineState: (subMeshIndex: number, descriptorSet: DescriptorSet) => {
subMeshInstances[subMeshIndex]?.adaptPipelineState(descriptorSet);
if (subMeshInstances[subMeshIndex]) {
subMeshInstances[subMeshIndex]!.adaptPipelineState(descriptorSet);
}
},

destroy: () => {
for (const subMeshInstance of subMeshInstances) {
subMeshInstance?.destroy();
if (subMeshInstance) {
subMeshInstance.destroy();
}
}
},
};
Expand Down Expand Up @@ -483,17 +490,17 @@ function createVec4TextureFactory (gfxDevice: Device, vec4Capacity: number) {
let pixelRequired: number;
let pixelFormat: PixelFormat;
let pixelBytes: number;
let updateViewConstructor: typeof Float32Array | typeof Uint8Array;
let UpdateViewConstructor: typeof Float32Array | typeof Uint8Array;
if (hasFeatureFloatTexture) {
pixelRequired = vec4Capacity;
pixelBytes = 16;
pixelFormat = Texture2D.PixelFormat.RGBA32F;
updateViewConstructor = Float32Array;
UpdateViewConstructor = Float32Array;
} else {
pixelRequired = 4 * vec4Capacity;
pixelBytes = 4;
pixelFormat = Texture2D.PixelFormat.RGBA8888;
updateViewConstructor = Uint8Array;
UpdateViewConstructor = Uint8Array;
}

const { width, height } = bestSizeToHavePixels(pixelRequired);
Expand All @@ -505,7 +512,7 @@ function createVec4TextureFactory (gfxDevice: Device, vec4Capacity: number) {
create: () => {
const arrayBuffer = new ArrayBuffer(width * height * pixelBytes);
const valueView = new Float32Array(arrayBuffer);
const updateView = updateViewConstructor === Float32Array ? valueView : new updateViewConstructor(arrayBuffer);
const updateView = UpdateViewConstructor === Float32Array ? valueView : new UpdateViewConstructor(arrayBuffer);
const image = new ImageAsset({
width,
height,
Expand Down
2 changes: 1 addition & 1 deletion cocos/3d/assets/morph.ts
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ export interface MorphRenderingInstance {
*/
adaptPipelineState (subMeshIndex: number, descriptorSet: DescriptorSet): void;

requiredPatches (subMeshIndex: number): IMacroPatch[] | undefined;
requiredPatches (subMeshIndex: number): IMacroPatch[] | null;

/**
* Destroy the rendering instance.
Expand Down
6 changes: 3 additions & 3 deletions cocos/3d/misc/buffer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,10 @@
THE SOFTWARE.
*/

import { Format, FormatInfos, FormatType, FormatInfo } from '../../core/gfx/define';
import { Format, FormatInfos, FormatType, FormatInfo } from '../../core/gfx';
import { sys } from '../../core/platform/sys';

const _typeMap = {
const _typeMap: Record<string, string> = {
[FormatType.UNORM]: 'Uint',
[FormatType.SNORM]: 'Int',
[FormatType.UINT]: 'Uint',
Expand All @@ -38,7 +38,7 @@ const _typeMap = {
function _getDataViewType (info: FormatInfo) {
const type = _typeMap[info.type] || _typeMap.default;
const bytes = info.size / info.count * 8;
return type + bytes;
return `${type}${bytes}`;
}

// default params bahaves just like on an plain, compact Float32Array
Expand Down
3 changes: 1 addition & 2 deletions cocos/3d/misc/create-mesh.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,7 @@
*/

import { Mesh } from '../assets/mesh';
import { AttributeName, Format, FormatInfos, PrimitiveMode } from '../../core/gfx/define';
import { Attribute } from '../../core/gfx';
import { AttributeName, Format, FormatInfos, PrimitiveMode, Attribute } from '../../core/gfx';
import { Vec3 } from '../../core/math';
import { IGeometry } from '../../primitive/define';
import { writeBuffer } from './buffer';
Expand Down
2 changes: 1 addition & 1 deletion cocos/3d/misc/read-mesh.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
*/

import { Mesh } from '../assets/mesh';
import { AttributeName, Format, FormatInfos } from '../../core/gfx/define';
import { AttributeName, Format, FormatInfos } from '../../core/gfx';
import { IGeometry } from '../../primitive/define';
import { readBuffer } from './buffer';

Expand Down
9 changes: 4 additions & 5 deletions cocos/3d/models/baked-skinning-model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,18 +32,17 @@ import { AnimationClip } from '../../core/animation/animation-clip';
import { Mesh } from '../assets/mesh';
import { Skeleton } from '../assets/skeleton';
import { AABB } from '../../core/geometry';
import { BufferUsageBit, MemoryUsageBit } from '../../core/gfx/define';
import { Vec3 } from '../../core/math';
import { BufferUsageBit, MemoryUsageBit, Attribute, DescriptorSet, Buffer, BufferInfo } from '../../core/gfx';
import { INST_JOINT_ANIM_INFO, UBOSkinningAnimation, UBOSkinningTexture, UNIFORM_JOINT_TEXTURE_BINDING } from '../../core/pipeline/define';
import { Node } from '../../core/scene-graph';
import { Pass } from '../../core/renderer/core/pass';
import { IMacroPatch, Pass } from '../../core/renderer/core/pass';
import { samplerLib } from '../../core/renderer/core/sampler-lib';
import { DataPoolManager } from '../skeletal-animation/data-pool-manager';
import { ModelType } from '../../core/renderer/scene/model';
import { IAnimInfo, IJointTextureHandle, jointTextureSamplerHash } from '../skeletal-animation/skeletal-animation-utils';
import { MorphModel } from './morph-model';
import { legacyCC } from '../../core/global-exports';
import { Attribute, DescriptorSet, Buffer, BufferInfo } from '../../core/gfx';

import { AABBPool, AABBView } from '../../core/renderer/core/memory-pools';

interface IJointsInfo {
Expand Down Expand Up @@ -179,7 +178,7 @@ export class BakedSkinningModel extends MorphModel {
}
}

public getMacroPatches (subModelIndex: number) {
public getMacroPatches (subModelIndex: number): IMacroPatch[] | null {
const patches = super.getMacroPatches(subModelIndex);
return patches ? patches.concat(myPatches) : myPatches;
}
Expand Down
Loading

0 comments on commit 5a02d3f

Please sign in to comment.