[LayaAirIDE3]laya3.2.3shader预编译后,模型无法显示

运行demo后
1、点击加载角色,可以正常显示(一个黑圈)
2、重新运行,点击预编译,再点击加载角色,角色无法显示。
 
使用环境:
LayaIDE 3.2.3
macOS Sonoma 14.5
显卡:AMD Radeon Pro 5500M 8 GB
        Intel UHD Graphics 630 1536 MB
处理器 2.4 GHz 八核Intel Core i9
 
在layaide和chrome浏览器中都做了测试
已邀请:

Laya_Fred

赞同来自:

您好,目前来看应该是您加载的预编译的shaderVariantData.json里面defineNames错误导致的,您可以打开Shader3D的debugMode;
Laya.Shader3D.debugMode = true;
可以看到实际上defineNames除了UV还有Sprite3D。
[{
"id": "SceneEffectCommon00UV",
"shaderName": "SceneEffectCommon",
"defineNames": ["UV", "Sprite3D"],
"passIndex": 0,
"subShaderIndex": 0
}]

另外您还需要在编译shader时候调用Laya.Shader3D.compileShaderByDefineNames时候,最后参数nodeMaps传入为defineNames:
Shader3D.compileShaderByDefineNames(
datum.shaderName,
datum.subShaderIndex,
datum.passIndex,
datum.defineNames,
datum.defineNames); // 这里要传入收集的nodeMaps数据
这样预编译之后再加载模型就可以显示了;
关于预编译的使用方式您可以参考下此版本对应IDE创建的API示例模板,里面有shader预编译的使用示例。

该问题目前已经被锁定, 无法添加新回复

商务合作
商务合作