GameTech/URP 渲染实战
源码 / features/Cookbook.Ch25.LifecycleProbeFeature.js
features/Cookbook.Ch25.LifecycleProbeFeature.js
// 案例 25.2:生命周期探针的网页版(对应 Ch25/LifecycleProbeFeature.cs)。
// 它什么也不画,只把回调顺序打到浏览器控制台(console.debug),用来观察 Feature / Pass 在一帧里被调用的顺序。
import { RenderPassEvent } from '../engine/features.js';

let s_Frame = 0;
const log = (s) => console.debug(`[帧${s_Frame}] ${s}`);

export default class LifecycleProbeFeature {
  constructor(engine, data) {
    this.passEvent = (data && data.passEvent) ?? RenderPassEvent.AfterRenderingOpaques;
    log('Feature.Create');
  }

  addPasses(frame, enqueue) {
    s_Frame++;
    log(`Feature.OnCameraPreCull  camera=${frame.camera.json.name || 'Camera'}`);
    log('Feature.AddRenderPasses');
    frame.requireDepth = true;   // ConfigureInput(ScriptableRenderPassInput.Depth)
    log('Feature.SetupRenderPasses  color=_CameraColorAttachment');
    enqueue(this.passEvent, (fr) => {
      log('  Pass.OnCameraSetup');
      log(`  Pass.Configure  ${fr.width}x${fr.height} msaa=${fr.msaa}`);
      log(`  Pass.Execute  event=${this.passEvent}`);
      log('  Pass.OnCameraCleanup');
    }, 'Ch25 Lifecycle Probe');
  }
}