WebGPUUtils.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. import { GPUPrimitiveTopology, GPUTextureFormat } from './constants.js';
  2. class WebGPUUtils {
  3. constructor( renderer ) {
  4. this.renderer = renderer;
  5. }
  6. getCurrentEncoding() {
  7. const renderer = this.renderer;
  8. const renderTarget = renderer.getRenderTarget();
  9. return ( renderTarget !== null ) ? renderTarget.texture.encoding : renderer.outputEncoding;
  10. }
  11. getCurrentColorFormat() {
  12. let format;
  13. const renderer = this.renderer;
  14. const renderTarget = renderer.getRenderTarget();
  15. if ( renderTarget !== null ) {
  16. const renderTargetProperties = renderer._properties.get( renderTarget );
  17. format = renderTargetProperties.colorTextureFormat;
  18. } else {
  19. format = GPUTextureFormat.BGRA8Unorm; // default context format
  20. }
  21. return format;
  22. }
  23. getCurrentDepthStencilFormat() {
  24. let format;
  25. const renderer = this.renderer;
  26. const renderTarget = renderer.getRenderTarget();
  27. if ( renderTarget !== null ) {
  28. const renderTargetProperties = renderer._properties.get( renderTarget );
  29. format = renderTargetProperties.depthTextureFormat;
  30. } else {
  31. format = GPUTextureFormat.Depth24PlusStencil8;
  32. }
  33. return format;
  34. }
  35. getPrimitiveTopology( object ) {
  36. if ( object.isMesh ) return GPUPrimitiveTopology.TriangleList;
  37. else if ( object.isPoints ) return GPUPrimitiveTopology.PointList;
  38. else if ( object.isLineSegments ) return GPUPrimitiveTopology.LineList;
  39. else if ( object.isLine ) return GPUPrimitiveTopology.LineStrip;
  40. }
  41. getSampleCount() {
  42. return this.renderer._parameters.sampleCount;
  43. }
  44. }
  45. export default WebGPUUtils;