babylon.tonemapPostProcess.ts 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. module BABYLON
  2. {
  3. export enum TonemappingOperator
  4. {
  5. Hable = 0,
  6. Reinhard = 1,
  7. HejiDawson = 2,
  8. Photographic = 3,
  9. };
  10. export class TonemapPostProcess extends PostProcess
  11. {
  12. private _operator : TonemappingOperator;
  13. private _exposureAdjustment : number;
  14. constructor(name: string, operator: TonemappingOperator, exposureAdjustment: number, camera: Camera, samplingMode: number = Texture.BILINEAR_SAMPLINGMODE, engine?: Engine, textureFormat = Engine.TEXTURETYPE_UNSIGNED_INT)
  15. {
  16. this._operator = operator;
  17. this._exposureAdjustment = exposureAdjustment;
  18. var params = ["_ExposureAdjustment"];
  19. var defines = "#define ";
  20. if (operator === TonemappingOperator.Hable)
  21. defines += "HABLE_TONEMAPPING";
  22. else if (operator === TonemappingOperator.Reinhard)
  23. defines += "REINHARD_TONEMAPPING";
  24. else if (operator === TonemappingOperator.HejiDawson)
  25. defines += "OPTIMIZED_HEJIDAWSON_TONEMAPPING";
  26. else if (operator === TonemappingOperator.Photographic)
  27. defines += "PHOTOGRAPHIC_TONEMAPPING";
  28. super(name, "tonemap", params, null, 1.0, camera, samplingMode, engine, true, defines, textureFormat);
  29. this.onApply = (effect: Effect) =>
  30. {
  31. effect.setFloat("_ExposureAdjustment", this._exposureAdjustment);
  32. };
  33. }
  34. }
  35. }