fix: make nightdrive signage reliable and legible
This commit is contained in:
@@ -7,7 +7,7 @@ import { createRoad } from '@/scene/world/road';
|
||||
import { createTerrain } from '@/scene/world/terrain';
|
||||
import { createSun } from '@/scene/world/sun';
|
||||
import { createCar, loadGrandTourer } from '@/scene/world/car';
|
||||
import { createSign } from '@/scene/world/sign';
|
||||
import { createSign, prepareSignTypography } from '@/scene/world/sign';
|
||||
import { createAtmosphere } from '@/scene/world/atmosphere';
|
||||
import { createPostProcessor } from '@/scene/post-processing';
|
||||
import { createDriveDynamics } from '@/scene/drive-dynamics';
|
||||
@@ -97,7 +97,10 @@ export async function createProceduralSceneGeneration(
|
||||
const authoredCar = await loadGrandTourer(context.signal);
|
||||
const car = createCar(context.resources, authoredCar);
|
||||
car.setDetail(mobileOrTablet ? 'reduced' : 'full');
|
||||
const sign = createSign(context.resources);
|
||||
await prepareSignTypography(context.signal);
|
||||
const sign = createSign(context.resources, {
|
||||
maximumAnisotropy: renderer.capabilities.getMaxAnisotropy(),
|
||||
});
|
||||
const atmosphere = createAtmosphere(context.resources, quality);
|
||||
scene.add(
|
||||
atmosphere.group,
|
||||
@@ -152,7 +155,7 @@ export async function createProceduralSceneGeneration(
|
||||
}
|
||||
car.setDetail(width < 1_100 || height < 620 ? 'reduced' : 'full');
|
||||
car.group.visible = height >= 340;
|
||||
sign.setViewportAspect(camera.aspect);
|
||||
sign.setViewportSize(width, height);
|
||||
atmosphere.setViewportAspect(camera.aspect);
|
||||
postProcessor?.resize(width, height, quality.pixelRatio * quality.postScale);
|
||||
if (TEST_BUILD && context.quality !== 'medium') {
|
||||
@@ -296,6 +299,21 @@ export async function createProceduralSceneGeneration(
|
||||
camera.fov = cameraState.fov;
|
||||
camera.updateProjectionMatrix();
|
||||
}
|
||||
if (TEST_BUILD && snapshot.sign !== null) {
|
||||
const presentation = sign.inspect(camera, width, height);
|
||||
if (presentation !== null) {
|
||||
window.dispatchEvent(new CustomEvent('portfolio-sign-frame', {
|
||||
detail: {
|
||||
now,
|
||||
...snapshot.sign,
|
||||
activeSectionId: snapshot.activeSectionId,
|
||||
direction: snapshot.direction,
|
||||
...presentation,
|
||||
rendererPixelRatio: renderer.getPixelRatio(),
|
||||
},
|
||||
}));
|
||||
}
|
||||
}
|
||||
if (postProcessor) {
|
||||
postProcessor.setDynamics(response.bloomEnergy);
|
||||
postProcessor.render(scene, camera);
|
||||
|
||||
Reference in New Issue
Block a user