Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Optimization texture structure #715

Merged
merged 18 commits into from
Mar 31, 2022
Merged
Show file tree
Hide file tree
Changes from 17 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion packages/core/src/2d/sprite/SpriteRenderer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@ import { Sprite } from "./Sprite";
* Renders a Sprite for 2D graphics.
*/
export class SpriteRenderer extends Renderer implements ICustomClone {
private static _textureProperty: ShaderProperty = Shader.getPropertyByName("u_spriteTexture");
/** @internal */
static _textureProperty: ShaderProperty = Shader.getPropertyByName("u_spriteTexture");

private static _tempVec3: Vector3 = new Vector3();

/** @internal temp solution. */
Expand Down
10 changes: 4 additions & 6 deletions packages/core/src/2d/text/TextRenderer.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
import { BoundingBox, Color, Vector3 } from "@oasis-engine/math";
import { Sprite, SpriteMaskInteraction, SpriteMaskLayer } from "..";
import { CompareFunction, Renderer, Shader, UpdateFlag } from "../..";
import { Sprite, SpriteMaskInteraction, SpriteMaskLayer, SpriteRenderer } from "..";
import { CompareFunction, Renderer, UpdateFlag } from "../..";
import { Camera } from "../../Camera";
import { assignmentClone, deepClone, ignoreClone } from "../../clone/CloneManager";
import { Entity } from "../../Entity";
import { ShaderProperty } from "../../shader/ShaderProperty";
import { Texture2D } from "../../texture";
import { FontStyle } from "../enums/FontStyle";
import { TextHorizontalAlignment, TextVerticalAlignment } from "../enums/TextAlignment";
Expand All @@ -16,7 +15,6 @@ import { TextUtils } from "./TextUtils";
* Renders a text for 2D graphics.
*/
export class TextRenderer extends Renderer {
private static _textureProperty: ShaderProperty = Shader.getPropertyByName("u_spriteTexture");
private static _tempVec3: Vector3 = new Vector3();

/** @internal temp solution. */
Expand Down Expand Up @@ -295,7 +293,7 @@ export class TextRenderer extends Renderer {
this._setDirtyFlagFalse(DirtyFlag.MaskInteraction);
}

this.shaderData.setTexture(TextRenderer._textureProperty, sprite.texture);
this.shaderData.setTexture(SpriteRenderer._textureProperty, sprite.texture);
const spriteElementPool = this._engine._spriteElementPool;
const spriteElement = spriteElementPool.getFromPool();
spriteElement.setValue(
Expand Down Expand Up @@ -432,7 +430,7 @@ export class TextRenderer extends Renderer {
const { _sprite } = this;
// Remove sprite from dynamic atlas.
this.engine._dynamicTextAtlasManager.removeSprite(_sprite);
this.shaderData.setTexture(TextRenderer._textureProperty, null);
this.shaderData.setTexture(SpriteRenderer._textureProperty, null);
_sprite.atlasRegion = _sprite.region;
}
}
Expand Down
6 changes: 3 additions & 3 deletions packages/core/src/Engine.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ import { ShaderMacroCollection } from "./shader/ShaderMacroCollection";
import { ShaderPool } from "./shader/ShaderPool";
import { ShaderProgramPool } from "./shader/ShaderProgramPool";
import { RenderState } from "./shader/state/RenderState";
import { Texture2D, TextureCubeFace, TextureCubeMap, TextureFormat } from "./texture";
import { Texture2D, TextureCubeFace, TextureCube, TextureFormat } from "./texture";

/** TODO: delete */
const engineFeatureManager = new FeatureManager<EngineFeature>();
Expand Down Expand Up @@ -63,7 +63,7 @@ export class Engine extends EventDispatcher {
/* @internal */
_whiteTexture2D: Texture2D;
/* @internal */
_whiteTextureCube: TextureCubeMap;
_whiteTextureCube: TextureCube;
/* @internal */
_backgroundTextureMaterial: Material;
/* @internal */
Expand Down Expand Up @@ -205,7 +205,7 @@ export class Engine extends EventDispatcher {
whiteTexture2D.setPixelBuffer(whitePixel);
whiteTexture2D.isGCIgnored = true;

const whiteTextureCube = new TextureCubeMap(this, 1, TextureFormat.R8G8B8A8, false);
const whiteTextureCube = new TextureCube(this, 1, TextureFormat.R8G8B8A8, false);
whiteTextureCube.setPixelBuffer(TextureCubeFace.PositiveX, whitePixel);
whiteTextureCube.setPixelBuffer(TextureCubeFace.NegativeX, whitePixel);
whiteTextureCube.setPixelBuffer(TextureCubeFace.PositiveY, whitePixel);
Expand Down
15 changes: 7 additions & 8 deletions packages/core/src/env-probe/Probe.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import { Camera } from "../Camera";
import { Layer } from "../Layer";
import { Script } from "../Script";
import { RenderBufferDepthFormat } from "../texture/enums/RenderBufferDepthFormat";
import { RenderColorTexture } from "../texture/RenderColorTexture";
import { Texture, Texture2D, TextureCube, TextureFormat } from "../texture";
import { RenderTarget } from "../texture/RenderTarget";

/**
Expand Down Expand Up @@ -49,15 +48,15 @@ export abstract class Probe extends Script {
private _camera: Camera;
private _oriCameraCullingMask: Layer;

private get _texture(): RenderColorTexture {
private get _texture(): Texture {
return this._activeRenderTarget?.getColorTexture();
}

/**
* Provide hooks for users to exchange Texture.
* @remarks Prevent issue: Feedback Loops Between Textures and the Framebuffer.
*/
onTextureChange(renderColorTexture: RenderColorTexture) {}
onTextureChange(renderColorTexture: Texture) {}

/**
* @override
Expand All @@ -77,17 +76,17 @@ export abstract class Probe extends Script {
this.engine,
this.width,
this.height,
new RenderColorTexture(this.engine, this.width, this.height, undefined, undefined, this._isCube),
RenderBufferDepthFormat.Depth,
this._isCube ? new TextureCube(this.engine, this.width) : new Texture2D(this.engine, this.width, this.height),
TextureFormat.Depth,
this.antiAliasing
);

this._renderTargetSwap = new RenderTarget(
this.engine,
this.width,
this.height,
new RenderColorTexture(this.engine, this.width, this.height, undefined, undefined, this._isCube),
RenderBufferDepthFormat.Depth,
this._isCube ? new TextureCube(this.engine, this.width) : new Texture2D(this.engine, this.width, this.height),
TextureFormat.Depth,
this.antiAliasing
);

Expand Down
8 changes: 4 additions & 4 deletions packages/core/src/lighting/AmbientLight.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { Scene } from "../Scene";
import { Shader } from "../shader";
import { ShaderMacro } from "../shader/ShaderMacro";
import { ShaderProperty } from "../shader/ShaderProperty";
import { TextureCubeMap } from "../texture";
import { TextureCube } from "../texture";
import { DiffuseMode } from "./enums/DiffuseMode";

/**
Expand All @@ -26,7 +26,7 @@ export class AmbientLight {
private _diffuseSphericalHarmonics: SphericalHarmonics3;
private _diffuseSolidColor: Color = new Color(0.212, 0.227, 0.259);
private _diffuseIntensity: number = 1.0;
private _specularReflection: TextureCubeMap;
private _specularReflection: TextureCube;
private _specularIntensity: number = 1.0;
private _diffuseMode: DiffuseMode = DiffuseMode.SolidColor;
private _shArray: Float32Array = new Float32Array(27);
Expand Down Expand Up @@ -118,11 +118,11 @@ export class AmbientLight {
* Specular reflection texture.
* @remarks This texture must be baked from @oasis-engine/baker
*/
get specularTexture(): TextureCubeMap {
get specularTexture(): TextureCube {
return this._specularReflection;
}

set specularTexture(value: TextureCubeMap) {
set specularTexture(value: TextureCube) {
this._specularReflection = value;
if (!this._scene) return;

Expand Down

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { IPlatformTexture } from "./IPlatformTexture";
/**
* Cube texture interface specification.
*/
export interface IPlatformTextureCubeMap extends IPlatformTexture {
export interface IPlatformTextureCube extends IPlatformTexture {
/**
* Setting pixels data through cube face,color buffer data, designated area and texture mipmapping level,it's also applicable to compressed formats.
* @remarks When compressed texture is in WebGL1, the texture must be filled first before writing the sub-region
Expand Down
4 changes: 1 addition & 3 deletions packages/core/src/renderingHardwareInterface/index.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
export type { IHardwareRenderer } from "./IHardwareRenderer";
export type { IPlatformRenderColorTexture } from "./IPlatformRenderColorTexture";
export type { IPlatformRenderDepthTexture } from "./IPlatformRenderDepthTexture";
export type { IPlatformRenderTarget } from "./IPlatformRenderTarget";
export type { IPlatformTexture } from "./IPlatformTexture";
export type { IPlatformTexture2D } from "./IPlatformTexture2D";
export type { IPlatformTextureCubeMap } from "./IPlatformTextureCubeMap";
export type { IPlatformTextureCube } from "./IPlatformTextureCube";
8 changes: 4 additions & 4 deletions packages/core/src/shadow/LightShadow.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { PointLight } from "../lighting/PointLight";
import { SpotLight } from "../lighting/SpotLight";
import { Shader } from "../shader/Shader";
import { ShaderData } from "../shader/ShaderData";
import { RenderColorTexture } from "../texture/RenderColorTexture";
import { Texture2D } from "../texture";
import { RenderTarget } from "../texture/RenderTarget";

/**
Expand Down Expand Up @@ -87,7 +87,7 @@ export class LightShadow {
const { engine, width, height } = props;

this._mapSize = new Vector2(width, height);
this._renderTarget = new RenderTarget(engine, width, height, new RenderColorTexture(engine, width, height));
this._renderTarget = new RenderTarget(engine, width, height, new Texture2D(engine, width, height));
}

/**
Expand All @@ -100,8 +100,8 @@ export class LightShadow {
/**
* Shadow map's color render texture.
*/
get map(): RenderColorTexture {
return this._renderTarget.getColorTexture();
get map(): Texture2D {
return <Texture2D>this._renderTarget.getColorTexture();
}

/**
Expand Down
8 changes: 4 additions & 4 deletions packages/core/src/sky/SkyBoxMaterial.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { Material } from "../material/Material";
import { CompareFunction } from "../shader/enums/CompareFunction";
import { CullMode } from "../shader/enums/CullMode";
import { Shader } from "../shader/Shader";
import { TextureCubeMap } from "../texture";
import { TextureCube } from "../texture";

/**
* SkyboxMaterial
Expand Down Expand Up @@ -37,11 +37,11 @@ export class SkyBoxMaterial extends Material {
/**
* Texture cube map of the sky box material.
*/
get textureCubeMap(): TextureCubeMap {
return this.shaderData.getTexture("u_cube") as TextureCubeMap;
get textureCubeMap(): TextureCube {
return this.shaderData.getTexture("u_cube") as TextureCube;
}

set textureCubeMap(v: TextureCubeMap) {
set textureCubeMap(v: TextureCube) {
this.shaderData.setTexture("u_cube", v);
}

Expand Down
95 changes: 0 additions & 95 deletions packages/core/src/texture/RenderColorTexture.ts

This file was deleted.

Loading