[LayaAir3]关于多pass模版测试
let forwardPass = subShader.addShaderPass(HeroVS, HeroFS);
forwardPass.statefirst = true;
forwardPass.renderState.cull = Laya.RenderState.CULL_BACK;
forwardPass.renderState.stencilWrite = true;
forwardPass.renderState.stencilRef = 1;
forwardPass.renderState.stencilTest = Laya.RenderState.STENCILTEST_GREATER;
forwardPass.renderState.stencilOp = new Laya.Vector3(Laya.RenderState.STENCILOP_KEEP, Laya.RenderState.STENCILOP_KEEP, Laya.RenderState.STENCILOP_REPLACE);
let xRay = subShader.addShaderPass(XRayVS, XRayFS);
xRay.renderState.depthWrite = false;
xRay.renderState.depthTest = Laya.RenderState.STENCILTEST_GREATER;
xRay.statefirst = true;
xRay.renderState.cull = Laya.RenderState.CULL_BACK;
xRay.renderState.stencilRef = 0;
xRay.renderState.stencilTest = Laya.RenderState.STENCILTEST_EQUAL;
xRay.renderState.stencilOp = new Laya.Vector3(Laya.RenderState.STENCILOP_KEEP, Laya.RenderState.STENCILOP_KEEP, Laya.RenderState.STENCILOP_KEEP);
看到官方案例里面,有实现描边的多pass方案MultiplePassOutlineMaterial,我的目标是:实现角色被遮挡部分特殊效果显示,里面要用到模版测试,发现renderState中有模版测试的设置,但是发现没有起到效果,而深度测试起效,模版测试不起效,导致角色自遮挡部分也会特殊效果显示,这不是我想要的,请问下官方,这种方法是否支持,我也看到官方关于模版的demo,里面有对整个Material的renderState的模版测试设置,开启关闭后,小球显示,隐藏,是有效果的,不知道官方是否支持多pass的模版测试,还有就是自定义shader里面,是否支持模版测试代码定义,这样方便资源管理。
forwardPass.statefirst = true;
forwardPass.renderState.cull = Laya.RenderState.CULL_BACK;
forwardPass.renderState.stencilWrite = true;
forwardPass.renderState.stencilRef = 1;
forwardPass.renderState.stencilTest = Laya.RenderState.STENCILTEST_GREATER;
forwardPass.renderState.stencilOp = new Laya.Vector3(Laya.RenderState.STENCILOP_KEEP, Laya.RenderState.STENCILOP_KEEP, Laya.RenderState.STENCILOP_REPLACE);
let xRay = subShader.addShaderPass(XRayVS, XRayFS);
xRay.renderState.depthWrite = false;
xRay.renderState.depthTest = Laya.RenderState.STENCILTEST_GREATER;
xRay.statefirst = true;
xRay.renderState.cull = Laya.RenderState.CULL_BACK;
xRay.renderState.stencilRef = 0;
xRay.renderState.stencilTest = Laya.RenderState.STENCILTEST_EQUAL;
xRay.renderState.stencilOp = new Laya.Vector3(Laya.RenderState.STENCILOP_KEEP, Laya.RenderState.STENCILOP_KEEP, Laya.RenderState.STENCILOP_KEEP);
看到官方案例里面,有实现描边的多pass方案MultiplePassOutlineMaterial,我的目标是:实现角色被遮挡部分特殊效果显示,里面要用到模版测试,发现renderState中有模版测试的设置,但是发现没有起到效果,而深度测试起效,模版测试不起效,导致角色自遮挡部分也会特殊效果显示,这不是我想要的,请问下官方,这种方法是否支持,我也看到官方关于模版的demo,里面有对整个Material的renderState的模版测试设置,开启关闭后,小球显示,隐藏,是有效果的,不知道官方是否支持多pass的模版测试,还有就是自定义shader里面,是否支持模版测试代码定义,这样方便资源管理。
没有找到相关结果
已邀请:
要回复问题请先登录
1 个回复
Heured
赞同来自: