mirror of
https://github.com/smallmain/cocos-enhance-kit.git
synced 2024-12-25 11:18:30 +00:00
[engine] 修复 Effect 被修改后其变体的 hash 错误问题
This commit is contained in:
parent
e4e59b0305
commit
f31cb598e3
@ -75,7 +75,7 @@ export default class EffectVariant extends EffectBase {
|
||||
|
||||
let effect = this._effect;
|
||||
if (effect) {
|
||||
hash += utils.serializePasses(effect.passes);
|
||||
hash += effect._id;
|
||||
}
|
||||
|
||||
this._hash = murmurhash2(hash, 666);
|
||||
|
@ -7,6 +7,8 @@ export default class Effect extends EffectBase {
|
||||
|
||||
_techniques: Technique[] = [];
|
||||
_asset = null;
|
||||
static id = 0;
|
||||
_id = '';
|
||||
|
||||
get technique () {
|
||||
return this._technique;
|
||||
@ -22,6 +24,7 @@ export default class Effect extends EffectBase {
|
||||
constructor (name, techniques, techniqueIndex, asset) {
|
||||
super();
|
||||
this.init(name, techniques, techniqueIndex, asset, true);
|
||||
this._id = '|' + Effect.id++;
|
||||
}
|
||||
|
||||
init (name, techniques, techniqueIndex, asset, createNative) {
|
||||
|
@ -18,12 +18,14 @@ import enums from '../../../renderer/enums';
|
||||
const hashArray = [];
|
||||
|
||||
function serializeDefines (defines, names) {
|
||||
const len = names.length;
|
||||
for (let i = 0; i < len; i++) {
|
||||
const name = names[i];
|
||||
hashArray[i] = name + defines[name];
|
||||
let i = 0;
|
||||
for (const name in defines) {
|
||||
if (Object.hasOwnProperty.call(defines, name)) {
|
||||
hashArray[i] = name + defines[name];
|
||||
i++;
|
||||
}
|
||||
}
|
||||
hashArray.length = len;
|
||||
hashArray.length = i;
|
||||
return hashArray.join('');
|
||||
}
|
||||
|
||||
@ -63,21 +65,23 @@ function serializePasses (passes) {
|
||||
|
||||
function serializeUniforms (uniforms, names) {
|
||||
let index = 0;
|
||||
for (let i = 0, len = names.length; i < len; i++) {
|
||||
let param = uniforms[names[i]];
|
||||
let prop = param.value;
|
||||
for (const name in uniforms) {
|
||||
if (Object.hasOwnProperty.call(uniforms, name)) {
|
||||
const param = uniforms[name];
|
||||
let prop = param.value;
|
||||
|
||||
if (!prop) {
|
||||
continue;
|
||||
}
|
||||
if (!prop) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (param.type === enums.PARAM_TEXTURE_2D || param.type === enums.PARAM_TEXTURE_CUBE) {
|
||||
hashArray[index] = prop._id;
|
||||
if (param.type === enums.PARAM_TEXTURE_2D || param.type === enums.PARAM_TEXTURE_CUBE) {
|
||||
hashArray[index] = prop._id;
|
||||
}
|
||||
else {
|
||||
hashArray[index] = prop.toString();
|
||||
}
|
||||
index++;
|
||||
}
|
||||
else {
|
||||
hashArray[index] = prop.toString();
|
||||
}
|
||||
index++
|
||||
}
|
||||
hashArray.length = index;
|
||||
return hashArray.join(';');
|
||||
|
Loading…
Reference in New Issue
Block a user