-
Notifications
You must be signed in to change notification settings - Fork 0
PR979
https://github.com/playcanvas/engine/pull/979
StandardMaterial
material_diffuse material_emissive
update() _setParameter() setParameter() .parameters[name]
var record = this.system.store[this.entity._guid];
a1547765-6d49-4487-b70e-905b57474b40 43f8736c-bf7f-429d-aff3-52d929cd7268
Entity.addComponent() ComponentSystem.addComponent() ModelComponentSystem.initializeComponentData() ComponentSystem.initializeComponentData() // "materialAsset" ModelComponent.setMaterialAsset() pc.ModelHandler.DEFAULT_MATERIALを設定
このグローバル変数をがしがしいじっている pc.Scene.defaultMaterial = new pc.StandardMaterial; pc.ModelHandler.DEFAULT_MATERIAL = pc.Scene.defaultMaterial;
f37095ffa973192412b26c3dd6f7e99f69c9b134 → 上のグローバル変数がくっついた
pc.Scene.defaultMaterial parameters material_diffuse scopeId ← このインスタンスが古いまま name: 'material_diffuse' value: versionObject:
ShaderInput scopeId ← このインスタンも以下の方法で取得するので最新
device.scope.resolve('material_diffuse')
application Application graphicsDevice GraphicsDevice scope ScopeSpace variables ScopeId
(1)clone案 → @vkalpias がパフォーマンスに関わるからNGだと
(2)Default Material初期化案 → これってApplicationが複数できた時に問題になりそうだな。。。(それだとそもそも今のグローバル変数がダメだけれど。。。)
43a51c9490910ec3d05dd41e44b49a0a6f214e66
(3)renderForward()でscopeIdを毎回取得する案 → これもパフォーマンスとか言われそうだけど、device.scope.resolve()先にはインスタンスがあるからそこまでじゃないでしょ → 今の作りだとこれが一番な気がしてきたかも。。。 → やっぱりあの彼が言ってきたよ。。。
df7016e3d5575c0dab12195a406a7b4494acbbc2
src/framework/components/model/component.js src/framework/components/model/system.js src/resources/model.js src/resources/parser/json-model.js
src/scene/forward-renderer.js src/scene/material.js
src/scene/default-material.js