你的浏览器禁用了JavaScript, 请开启后刷新浏览器获得更好的体验!
输入关键字进行搜索
搜索:
发现
话题
全文搜索
登录
[LayaAir 2.0]同时使用雾和粒子系统,粒子的颜色变成雾的颜色
没有找到相关结果
已邀请:
与内容相关的链接
提交
2 个回复
……
赞同来自:
http://ask.layabox.com/question/41966
最后参考这位的,不过做了一些修改,原来的代码
uniform vec4 u_Tintcolor;
#ifdef RENDERMODE_MESH
varying vec4 v_MeshColor;
#endif
#ifdef FOG
varying vec3 v_PositionWorld;
uniform vec3 u_CameraPosition;
uniform float u_FogStart;
uniform float u_FogRange;
#ifdef ADDTIVEFOG
#else
uniform vec3 u_FogColor;
#endif
#endif
void main()
{
#ifdef RENDERMODE_MESH
gl_FragColor=v_MeshColor;
#else
gl_FragColor=vec4(1.0);
#endif
#ifdef DIFFUSEMAP
if(v_Discard!=0.0)
discard;
#ifdef TINTCOLOR
gl_FragColor*=texture2D(u_texture,v_TextureCoordinate)*u_Tintcolor*2.0*v_Color;
#else
gl_FragColor*=texture2D(u_texture,v_TextureCoordinate)*v_Color;
#endif
#else
#ifdef TINTCOLOR
gl_FragColor*=u_Tintcolor*2.0*v_Color;
#else
gl_FragColor*=v_Color;
#endif
#endif
#ifdef FOG
vec3 toEye=u_CameraPosition-v_PositionWorld;
float toEyeLength=length(toEye);
toEye/=toEyeLength;
float lerpFact=clamp((toEyeLength-u_FogStart)/u_FogRange,0.0,1.0);
#ifdef ADDTIVEFOG
gl_FragColor.rgb=mix(gl_FragColor.rgb,vec3(0.0,0.0,0.0),lerpFact);
#else
gl_FragColor.rgb=mix(gl_FragColor.rgb,u_FogColor,lerpFact);
#endif
#endif
}";
删掉了这部分:
#ifdef FOG
vec3 toEye=u_CameraPosition-v_PositionWorld;
float toEyeLength=length(toEye);
toEye/=toEyeLength;
float lerpFact=clamp((toEyeLength-u_FogStart)/u_FogRange,0.0,1.0);
#ifdef ADDTIVEFOG
gl_FragColor.rgb=mix(gl_FragColor.rgb,vec3(0.0,0.0,0.0),lerpFact);
#else
gl_FragColor.rgb=mix(gl_FragColor.rgb,u_FogColor,lerpFact);
#endif
#endif
最后:
ps ="#ifdef HIGHPRECISION\n precision highp float;\n#else\n precision mediump float;\n#endif\n\nvarying float v_Discard;\nvarying vec4 v_Color;\nvarying vec2 v_TextureCoordinate;\nuniform sampler2D u_texture;\nuniform vec4 u_Tintcolor;\n\n#ifdef RENDERMODE_MESH\n varying vec4 v_MeshColor;\n#endif\n\n#ifdef FOG\n varying vec3 v_PositionWorld;\n uniform vec3 u_CameraPosition;\n uniform float u_FogStart;\n uniform float u_FogRange;\n #ifdef ADDTIVEFOG\n #else\n uniform vec3 u_FogColor;\n #endif\n#endif\n\n\nvoid main()\n{ \n #ifdef RENDERMODE_MESH\n gl_FragColor=v_MeshColor;\n #else\n gl_FragColor=vec4(1.0); \n #endif\n \n #ifdef DIFFUSEMAP\n if(v_Discard!=0.0)\n discard;\n #ifdef TINTCOLOR\n gl_FragColor*=texture2D(u_texture,v_TextureCoordinate)*u_Tintcolor*2.0*v_Color;\n #else\n gl_FragColor*=texture2D(u_texture,v_TextureCoordinate)*v_Color;\n #endif\n #else\n #ifdef TINTCOLOR\n gl_FragColor*=u_Tintcolor*2.0*v_Color;\n #else\n gl_FragColor*=v_Color;\n #endif\n #endif\n \n #ifdef FOG\n vec3 toEye=u_CameraPosition-v_PositionWorld;\n float toEyeLength=length(toEye);\n toEye/=toEyeLength;\n \n float lerpFact=clamp((toEyeLength-u_FogStart)/u_FogRange,0.0,1.0);\n #endif\n}";
shader = Shader3D.add("PARTICLESHURIKEN");
能力有限,只能解决冲突,去掉了雾在粒子上的影响,不能有效的将粒子和雾效果叠加,期待能者的出现,也期待官方解决一下
Nat
赞同来自:
u_CameraPosition改为u_CameraPos就可以了,u_CameraPosition明显是写错的
要回复问题请先
登录
发起人
……
相关问题
请问2.0的版本开始,我用ts编写的相关内容,都要使用import和export吗?
unity导出粒子文件问题
LayaAir3D UnityPlugin 使用须知-版本更新-问题解答(最新版本:1.7.16)
Layabox 2.0 bate5 运行编译之后 bundle.js 文件里面没有使用命名空间类文件的定义!导致运行时 找不到类的定义!这是为什么? 已上传 Demo 附件
TS项目使用matter.js库无智能提示
sprite3d怎样使用Laya.Tween.to来做缓动呢?比如position或者scale
微信小游戏如何使用ttf字体?
Laya2.0 WebGl模式,使用 drawToCanvas 报错 ImageData is not defined?
使用3D时候,Property 'getComponentByType' does not exist on type 'Node'.
微信小游戏:HTMLDivElement的使用
LayaAirIDE下如何使用mask?
问题状态
最新活动:
2019-08-15 17:20
浏览:
2469
关注:
3
人
商务合作
2 个回复
……
赞同来自:
最后参考这位的,不过做了一些修改,原来的代码
uniform vec4 u_Tintcolor;
#ifdef RENDERMODE_MESH
varying vec4 v_MeshColor;
#endif
#ifdef FOG
varying vec3 v_PositionWorld;
uniform vec3 u_CameraPosition;
uniform float u_FogStart;
uniform float u_FogRange;
#ifdef ADDTIVEFOG
#else
uniform vec3 u_FogColor;
#endif
#endif
void main()
{
#ifdef RENDERMODE_MESH
gl_FragColor=v_MeshColor;
#else
gl_FragColor=vec4(1.0);
#endif
#ifdef DIFFUSEMAP
if(v_Discard!=0.0)
discard;
#ifdef TINTCOLOR
gl_FragColor*=texture2D(u_texture,v_TextureCoordinate)*u_Tintcolor*2.0*v_Color;
#else
gl_FragColor*=texture2D(u_texture,v_TextureCoordinate)*v_Color;
#endif
#else
#ifdef TINTCOLOR
gl_FragColor*=u_Tintcolor*2.0*v_Color;
#else
gl_FragColor*=v_Color;
#endif
#endif
#ifdef FOG
vec3 toEye=u_CameraPosition-v_PositionWorld;
float toEyeLength=length(toEye);
toEye/=toEyeLength;
float lerpFact=clamp((toEyeLength-u_FogStart)/u_FogRange,0.0,1.0);
#ifdef ADDTIVEFOG
gl_FragColor.rgb=mix(gl_FragColor.rgb,vec3(0.0,0.0,0.0),lerpFact);
#else
gl_FragColor.rgb=mix(gl_FragColor.rgb,u_FogColor,lerpFact);
#endif
#endif
}";
删掉了这部分:
#ifdef FOG
vec3 toEye=u_CameraPosition-v_PositionWorld;
float toEyeLength=length(toEye);
toEye/=toEyeLength;
float lerpFact=clamp((toEyeLength-u_FogStart)/u_FogRange,0.0,1.0);
#ifdef ADDTIVEFOG
gl_FragColor.rgb=mix(gl_FragColor.rgb,vec3(0.0,0.0,0.0),lerpFact);
#else
gl_FragColor.rgb=mix(gl_FragColor.rgb,u_FogColor,lerpFact);
#endif
#endif
最后:
ps ="#ifdef HIGHPRECISION\n precision highp float;\n#else\n precision mediump float;\n#endif\n\nvarying float v_Discard;\nvarying vec4 v_Color;\nvarying vec2 v_TextureCoordinate;\nuniform sampler2D u_texture;\nuniform vec4 u_Tintcolor;\n\n#ifdef RENDERMODE_MESH\n varying vec4 v_MeshColor;\n#endif\n\n#ifdef FOG\n varying vec3 v_PositionWorld;\n uniform vec3 u_CameraPosition;\n uniform float u_FogStart;\n uniform float u_FogRange;\n #ifdef ADDTIVEFOG\n #else\n uniform vec3 u_FogColor;\n #endif\n#endif\n\n\nvoid main()\n{ \n #ifdef RENDERMODE_MESH\n gl_FragColor=v_MeshColor;\n #else\n gl_FragColor=vec4(1.0); \n #endif\n \n #ifdef DIFFUSEMAP\n if(v_Discard!=0.0)\n discard;\n #ifdef TINTCOLOR\n gl_FragColor*=texture2D(u_texture,v_TextureCoordinate)*u_Tintcolor*2.0*v_Color;\n #else\n gl_FragColor*=texture2D(u_texture,v_TextureCoordinate)*v_Color;\n #endif\n #else\n #ifdef TINTCOLOR\n gl_FragColor*=u_Tintcolor*2.0*v_Color;\n #else\n gl_FragColor*=v_Color;\n #endif\n #endif\n \n #ifdef FOG\n vec3 toEye=u_CameraPosition-v_PositionWorld;\n float toEyeLength=length(toEye);\n toEye/=toEyeLength;\n \n float lerpFact=clamp((toEyeLength-u_FogStart)/u_FogRange,0.0,1.0);\n #endif\n}";
shader = Shader3D.add("PARTICLESHURIKEN");
能力有限,只能解决冲突,去掉了雾在粒子上的影响,不能有效的将粒子和雾效果叠加,期待能者的出现,也期待官方解决一下
Nat
赞同来自: