Skip to content
H1Gdev edited this page Oct 13, 2017 · 1 revision

https://github.com/playcanvas/engine/pull/979

http://192.168.33.14:8000/

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

Clone this wiki locally