不支1.x,1.10支是API与2.x兼容,底层渲染不同
mark
可以实现递归渲染吗?所有子节点用父节点的着色器,共用一套渲染方法
理论现实,应该都是可以
想要子节点共用父节点shader?
是个好注意,我也没实践过,下来研究一下呢
赞 谢谢分享
大佬,怎么传入多个纹理数据啊
像这样
uniform sampler2D texture1;
uniform sampler2D texture2;
老铁,我也是多重纹理的问题。
mark,,
老铁们,这个组件很好,首先点个赞。业界良心。
接着问题来了。
好多人都想实现多重纹理。我也要啊,翻遍了论坛都没有Cocos 2.0的实现,只有一个1.5的实现。现在用不了了。哎。悲伤。
在ShaderHelp基础上修改了下代码,发现还是不行,不知道问题出在哪里。确实cocos刚开始搞,也没琢磨过引擎代码。
大佬们帮忙分析下怎么回事,万分感激!
首先在CustomMaterial.js里面 加了一个maskTexture
var techParams = [ { name: 'texture', type: renderer.PARAM_TEXTURE_2D }, { name: 'maskTexture', type: renderer.PARAM_TEXTURE_2D }, { name: 'color', type: renderer.PARAM_COLOR4 } ];
然后在ShaderHelp.js的applyShader函数里面里面加了这个:
material.setParamValue(“maskTexture”, this.mask.getImpl());
this.mask是另外一个Texture2D的对象,直接在编辑器里面通过脚本public赋值的。
applyShader() { if (CC_EDITOR) { return; } this._shaderObject = CustomMaterial.getShaderByIndex(this.program); let sprite = this.sprite; let params = this._shaderObject.params; let defines = this._shaderObject.defines; let material = sprite.getMaterial(this._shaderObject.name); if (!material) { material = new CustomMaterial(this._shaderObject.name, params, defines || []); sprite.setMaterial(this._shaderObject.name, material); } this.material = material; sprite.activateMaterial(this._shaderObject.name); //设置Shader参数初值 if (params) { params.forEach((item) => { if (item.defaultValue !== undefined) { material.setParamValue(item.name, item.defaultValue); } }); } //这一行!!!!! material.setParamValue("maskTexture", this.mask.getImpl()); if (this._shaderObject.start) { this._shaderObject.start(sprite, material); } },
接着我在fragment shader里面直接使用masktexture,发现第二个纹理始终采样不上去:我估计是bind纹理哪里
有问题,但是我又不熟悉这部分引擎代码
>
uniform sampler2D texture; uniform sampler2D masktexture; varying vec2 uv0; uniform float u_edge; uniform float maskLoaded; void main() { float edge = u_edge; float dis = 0.0; vec2 texCoord = uv0; gl_FragColor = texture2D( masktexture, texCoord); }
大神们,求支个招啊。到底是哪里不对啊。
好,我发现我的bug的了。都是vscode的坑。masktexture写成小写了,但是搜索大小不分的,我没发现,我好2。改为大写。就可以喜提多纹理了。
秀啊,老哥,原来直接传一个PARAM_TEXTURE_2D 进去就行了!
~~~~膜拜~~~
不错不错,正想把shader研究一下,感谢大神了
mark
mark
只要将shaderhook加入项目中,不管使不使用都会影响2.0.9的drawcall合并。
那很正常,不是同一材质,是合并不了
不使用依然会影响