auto-git:
[change] src/rendering/world-background-renderer.ts
This commit is contained in:
@@ -54,6 +54,14 @@ export interface WorldBackgroundOverlayState {
|
|||||||
environmentIntensity: number;
|
environmentIntensity: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface WorldEnvironmentBlendTextureResolver {
|
||||||
|
resolveBlendTexture(
|
||||||
|
baseTexture: Texture,
|
||||||
|
overlayTexture: Texture,
|
||||||
|
blendAmount: number
|
||||||
|
): Texture | null;
|
||||||
|
}
|
||||||
|
|
||||||
export interface WorldEnvironmentState {
|
export interface WorldEnvironmentState {
|
||||||
texture: Texture | null;
|
texture: Texture | null;
|
||||||
intensity: number;
|
intensity: number;
|
||||||
@@ -62,7 +70,8 @@ export interface WorldEnvironmentState {
|
|||||||
export function resolveWorldEnvironmentState(
|
export function resolveWorldEnvironmentState(
|
||||||
background: WorldBackgroundSettings,
|
background: WorldBackgroundSettings,
|
||||||
backgroundTexture: Texture | null,
|
backgroundTexture: Texture | null,
|
||||||
overlay: WorldBackgroundOverlayState | null
|
overlay: WorldBackgroundOverlayState | null,
|
||||||
|
environmentBlendTextureResolver: WorldEnvironmentBlendTextureResolver | null = null
|
||||||
): WorldEnvironmentState {
|
): WorldEnvironmentState {
|
||||||
const baseTexture = background.mode === "image" ? backgroundTexture : null;
|
const baseTexture = background.mode === "image" ? backgroundTexture : null;
|
||||||
const baseIntensity =
|
const baseIntensity =
|
||||||
@@ -77,8 +86,15 @@ export function resolveWorldEnvironmentState(
|
|||||||
overlayOpacity > NIGHT_BACKGROUND_EPSILON &&
|
overlayOpacity > NIGHT_BACKGROUND_EPSILON &&
|
||||||
overlayOpacity < 1 - NIGHT_BACKGROUND_EPSILON
|
overlayOpacity < 1 - NIGHT_BACKGROUND_EPSILON
|
||||||
) {
|
) {
|
||||||
|
const blendedTexture =
|
||||||
|
environmentBlendTextureResolver?.resolveBlendTexture(
|
||||||
|
baseTexture,
|
||||||
|
overlayTexture,
|
||||||
|
overlayOpacity
|
||||||
|
) ?? baseTexture;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
texture: baseTexture,
|
texture: blendedTexture,
|
||||||
intensity: lerp(baseIntensity, overlayIntensity, overlayOpacity)
|
intensity: lerp(baseIntensity, overlayIntensity, overlayOpacity)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user