[]Unity导出的光照贴图带有Alpha但Shader中没有使用,Laya是否在加载PNG的时候有预乘Alpha?
Unity默认导出的贴图格式会自动转换成PNG,但是我检查了shader中根本没有使用Alpha通道:
例如Mesh-BlinnPhong.ps这个文件中:
按照这里的代码,Alpha通道应该是留给高光信息使用,但是这里并没有使用。因此我希望将PNG中的Alpha去掉,于是我用Photoshop将Alpha通道移除,但是发现渲染效果变了,Lightmap的影响变得非常淡。
想知道加载PNG的时候,是不是默认将Alpha通道预乘到RGB中了,只有这样才能解释通这个现象。但还是希望如果Alpha不考虑使用的话(只有一个通道实际上也没有办法表示高光信息),能否导出插件中就把这个Alpha去掉,这样贴图尺寸会小很多。
例如Mesh-BlinnPhong.ps这个文件中:
#ifdef LIGHTMAP
finalDiffuse=texture2D(u_LightMap, v_LightMapUV).rgb*2.0;
//float exponent = texture2D(u_LightMap, v_LightMapUV).a;
//finalDiffuse = texture2D(u_LightMap, v_LightMapUV).rgb;
//float ratio = pow(2.0, exponent * 255.0 - (128.0 + 8.0));
//finalDiffuse = finalDiffuse * 255.0 * ratio;
//finalDiffuse = sqrt(finalDiffuse);
#else
finalDiffuse=vec3(0.0);
#endif
按照这里的代码,Alpha通道应该是留给高光信息使用,但是这里并没有使用。因此我希望将PNG中的Alpha去掉,于是我用Photoshop将Alpha通道移除,但是发现渲染效果变了,Lightmap的影响变得非常淡。
想知道加载PNG的时候,是不是默认将Alpha通道预乘到RGB中了,只有这样才能解释通这个现象。但还是希望如果Alpha不考虑使用的话(只有一个通道实际上也没有办法表示高光信息),能否导出插件中就把这个Alpha去掉,这样贴图尺寸会小很多。
没有找到相关结果
已邀请:
要回复问题请先登录
1 个回复
183*****755
赞同来自: