UNPKG

@luma.gl/shadertools

Version:

Shader module system for luma.gl

67 lines (64 loc) 1.9 kB
// luma.gl // SPDX-License-Identifier: MIT // Copyright (c) vis.gl contributors const IDENTITY_MATRIX = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]; const uniformBlock = /* glsl */ `\ layout(std140) uniform pbrSceneUniforms { float exposure; int toneMapMode; float environmentIntensity; float environmentRotation; vec2 framebufferSize; mat4 viewMatrix; mat4 projectionMatrix; } pbrScene; #ifdef USE_TRANSMISSION_FRAMEBUFFER uniform sampler2D pbr_transmissionFramebufferSampler; #endif `; const wgslUniformBlock = /* wgsl */ `\ struct pbrSceneUniforms { exposure: f32, toneMapMode: i32, environmentIntensity: f32, environmentRotation: f32, framebufferSize: vec2<f32>, viewMatrix: mat4x4<f32>, projectionMatrix: mat4x4<f32> }; @group(1) @binding(auto) var<uniform> pbrScene: pbrSceneUniforms; #ifdef USE_TRANSMISSION_FRAMEBUFFER @group(1) @binding(auto) var pbr_transmissionFramebufferSampler: texture_2d<f32>; @group(1) @binding(auto) var pbr_transmissionFramebufferSamplerSampler: sampler; #endif `; export const pbrScene = { name: 'pbrScene', bindingLayout: [ { name: 'pbrScene', group: 1 }, { name: 'pbr_transmissionFramebufferSampler', group: 1 } ], source: wgslUniformBlock, vs: uniformBlock, fs: uniformBlock, getUniforms: (props) => props, uniformTypes: { exposure: 'f32', toneMapMode: 'i32', environmentIntensity: 'f32', environmentRotation: 'f32', framebufferSize: 'vec2<f32>', viewMatrix: 'mat4x4<f32>', projectionMatrix: 'mat4x4<f32>' }, defaultUniforms: { exposure: 1, toneMapMode: 2, environmentIntensity: 1, environmentRotation: Math.PI * 0.5, framebufferSize: [1, 1], viewMatrix: IDENTITY_MATRIX, projectionMatrix: IDENTITY_MATRIX } }; //# sourceMappingURL=pbr-scene.js.map