Skip to content

Commit

Permalink
chore: remove moduleSettings
Browse files Browse the repository at this point in the history
  • Loading branch information
ibgreen committed Mar 7, 2024
1 parent c948447 commit 30ad228
Show file tree
Hide file tree
Showing 6 changed files with 26 additions and 68 deletions.
4 changes: 2 additions & 2 deletions examples/tutorials/hello-gltf/app.ts
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ export default class AppAnimationLoopTemplate extends AnimationLoopTemplate {
u_NormalMatrix: new Matrix4(worldMatrix).invert().transpose()
});

model.updateModuleSettings({lightSources});
// model.updateModuleSettings({lightSources});
model.draw(renderPass);
});
renderPass.end();
Expand Down Expand Up @@ -102,7 +102,7 @@ export default class AppAnimationLoopTemplate extends AnimationLoopTemplate {
}
}

const lightSources: LightingProps = {
export const lightSources: LightingProps = {
ambientLight: {
color: [255, 133, 133],
intensity: 1,
Expand Down
32 changes: 16 additions & 16 deletions examples/tutorials/lighting/app-old.ts
Original file line number Diff line number Diff line change
Expand Up @@ -131,22 +131,22 @@ export default class AppAnimationLoopTemplate extends AnimationLoopTemplate {
fs,
geometry: new CubeGeometry(),
modules: [phongMaterial],
moduleSettings: {
// material: {
// specularColor: [255, 255, 255]
// },
// lights: [
// {
// type: 'ambient',
// color: [255, 255, 255]
// },
// {
// type: 'point',
// color: [255, 255, 255],
// position: [1, 2, 1]
// }
// ]
},
// moduleSettings: {
// material: {
// specularColor: [255, 255, 255]
// },
// lights: [
// {
// type: 'ambient',
// color: [255, 255, 255]
// },
// {
// type: 'point',
// color: [255, 255, 255],
// position: [1, 2, 1]
// }
// ]
// },
bindings: {
uTexture: texture,
app: this.uniformStore.getManagedUniformBuffer(device, 'app'),
Expand Down
2 changes: 1 addition & 1 deletion modules/core/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ export {isObjectEmpty} from './utils/is-object-empty';

// ADAPTER UTILS - for implementing Device adapters (@luma.gl/webgl and @luma.gl/webgpu)

export {isUniformValue, splitUniformsAndBindings} from './adapter-utils/is-uniform-value';
export {isUniformValue} from './adapter-utils/is-uniform-value';
export type {AttributeInfo} from './adapter-utils/get-attribute-from-layouts';
export {
getAttributeInfosFromLayouts,
Expand Down
21 changes: 1 addition & 20 deletions modules/core/test/adapter-utils/is-uniform-value.spec.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import {isUniformValue, splitUniformsAndBindings} from '@luma.gl/core';
import {isUniformValue} from '@luma.gl/core';
import {WEBGLSampler, WEBGLTexture} from '@luma.gl/webgl';
import {webglDevice as device} from '@luma.gl/test-utils';
import test from 'tape-promise/tape';
Expand All @@ -16,22 +16,3 @@ test('isUniformValue', t => {
t.notOk(isUniformValue(new WEBGLSampler(device, {})), 'WEBGLSampler is not a uniform value');
t.end();
});

test('splitUniformsAndBindings', t => {
const mixed: Parameters<typeof splitUniformsAndBindings>[0] = {
array: [1, 2, 3, 4],
boolean: true,
float32array: new Float32Array([1, 2, 3, 4]),
number: 123,
sampler: new WEBGLSampler(device, {}),
texture: new WEBGLTexture(device, {})
};
const {bindings, uniforms} = splitUniformsAndBindings(mixed);
t.deepEquals(Object.keys(bindings), ['sampler', 'texture'], 'bindings correctly extracted');
t.deepEquals(
Object.keys(uniforms),
['array', 'boolean', 'float32array', 'number'],
'bindings correctly extracted'
);
t.end();
});
28 changes: 3 additions & 25 deletions modules/engine/src/model/model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import type {BufferLayout, Shader, VertexArray, TransformFeedback} from '@luma.g
import type {AttributeInfo, Binding, UniformValue, PrimitiveTopology} from '@luma.gl/core';
import {Device, DeviceFeature, Buffer, Texture, TextureView, Sampler} from '@luma.gl/core';
import {RenderPipeline, RenderPass, UniformStore} from '@luma.gl/core';
import {log, uid, isObjectEmpty, splitUniformsAndBindings} from '@luma.gl/core';
import {log, uid, isObjectEmpty} from '@luma.gl/core';
import {getTypedArrayFromDataType, getAttributeInfosFromLayouts} from '@luma.gl/core';

import type {ShaderModule, PlatformInfo} from '@luma.gl/shadertools';
Expand Down Expand Up @@ -65,9 +65,6 @@ export type ModelProps = Omit<RenderPipelineProps, 'vs' | 'fs'> & {

transformFeedback?: TransformFeedback;

/** Mapped uniforms for shadertool modules */
moduleSettings?: Record<string, Record<string, any>>;

/** Show shader source in browser? */
debugShaders?: 'never' | 'errors' | 'warnings' | 'always';

Expand Down Expand Up @@ -98,7 +95,6 @@ export class Model {
userData: {},
defines: {},
modules: [],
moduleSettings: undefined!,
geometry: null,
indexBuffer: null,
attributes: {},
Expand Down Expand Up @@ -172,7 +168,6 @@ export class Model {

_attributeInfos: Record<string, AttributeInfo> = {};
_gpuGeometry: GPUGeometry | null = null;
private _getModuleUniforms: (props?: Record<string, Record<string, any>>) => Record<string, any>;
private props: Required<ModelProps>;

_pipelineNeedsUpdate: string | false = 'newly created';
Expand Down Expand Up @@ -211,24 +206,22 @@ export class Model {
if (isWebGPU && this.props.source) {
// WGSL
this.props.shaderLayout ||= getShaderLayoutFromWGSL(this.props.source);
const {source, getUniforms} = this.props.shaderAssembler.assembleShader({
const {source} = this.props.shaderAssembler.assembleShader({
platformInfo,
...this.props,
modules
});
this.source = source;
this._getModuleUniforms = getUniforms;
} else {
// GLSL
const {vs, fs, getUniforms} = this.props.shaderAssembler.assembleShaderPair({
const {vs, fs} = this.props.shaderAssembler.assembleShaderPair({
platformInfo,
...this.props,
modules
});

this.vs = vs;
this.fs = fs;
this._getModuleUniforms = getUniforms;
}

this.vertexCount = this.props.vertexCount;
Expand Down Expand Up @@ -288,10 +281,6 @@ export class Model {
if (props.uniforms) {
this.setUniforms(props.uniforms);
}
if (props.moduleSettings) {
log.warn('Model.props.moduleSettings is deprecated. Use Model.shaderInputs.setProps()')();
this.updateModuleSettings(props.moduleSettings);
}
if (props.transformFeedback) {
this.transformFeedback = props.transformFeedback;
}
Expand Down Expand Up @@ -593,17 +582,6 @@ export class Model {
this.setNeedsRedraw('uniforms');
}

/**
* @deprecated Updates shader module settings (which results in uniforms being set)
*/
updateModuleSettings(props: Record<string, any>): void {
log.warn('Model.updateModuleSettings is deprecated. Use Model.shaderInputs.setProps()')();
const {bindings, uniforms} = splitUniformsAndBindings(this._getModuleUniforms(props));
Object.assign(this.bindings, bindings);
Object.assign(this.uniforms, uniforms);
this.setNeedsRedraw('moduleSettings');
}

// Internal methods

/** Get the timestamp of the latest updated bound GPU memory resource (buffer/texture). */
Expand Down
7 changes: 3 additions & 4 deletions modules/webgl/src/adapter/resources/webgl-render-pipeline.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import type {UniformValue, RenderPipelineProps, Binding} from '@luma.gl/core';
import type {ShaderLayout} from '@luma.gl/core';
import type {RenderPass, VertexArray} from '@luma.gl/core';
import {RenderPipeline, splitUniformsAndBindings, log} from '@luma.gl/core';
import {RenderPipeline, log} from '@luma.gl/core';
import {mergeShaderLayout} from '@luma.gl/core';
// import {mergeShaderLayout, getAttributeInfosFromLayouts} from '@luma.gl/core';
import {GL} from '@luma.gl/constants';
Expand Down Expand Up @@ -271,11 +271,10 @@ export class WEBGLRenderPipeline extends RenderPipeline {
// DEPRECATED METHODS

override setUniformsWebGL(uniforms: Record<string, UniformValue>) {
const {bindings} = splitUniformsAndBindings(uniforms);
Object.keys(bindings).forEach(name => {
Object.keys(uniforms).forEach(name => {
log.warn(
`Unsupported value "${JSON.stringify(
bindings[name]
uniforms[name]
)}" used in setUniforms() for key ${name}. Use setBindings() instead?`
)();
});
Expand Down

0 comments on commit 30ad228

Please sign in to comment.