摘要
每个camera都对应一个六面体,如果某物体完全与这个六面体不相交,则会被剔除,不会被渲染。但是又非得画这个物体,怎么办呢。
正文
- 强行更改物体的bound。
- 在该物体的vertex shader中设定特殊的、指定的SV_POSITION。
这样能发生什么:
用代码强行更改一个物体的bound,变大或者移动。如果这个bound和camera的frustum相交,则Unity不会对其剔除,那么这个物体的shader将被执行,在vertex shader中再修改SV_POSITION,就可以让该物体在指定的位置渲染,far clip,near clip,或者其他位置。
//将vertex移动到far clip位置。同理移动到near clip对应o.vertex.z = 0
v2f vert(data i){
v2f o;
o.vertex = mul(UNITY_MATRIX_MVP, i.vertex);
o.ver