3、shader深度测试(Cull、ZWrite 、ZTest )

剔除和深度测试是渲染法线中的一个流程

Cull:默认情况下,Unity中给的所有Shader都是单面的,它都把反面的渲染给关闭掉了,如果你在开发的过程中需要使用到双面,只要把cull关闭(off)即可!

ZWrite:深度缓存ZWrite默认情况下都是开启的,因为我们3D场景中的模型非常多,那么模型与模型之间的前后关系就是由ZWrite来控制的,所以默认情况下要开启,前面已经介绍过它了

直接看效果来介绍

Cull:Unity中给的所有Shader都是单面的,它都把反面的渲染给关闭掉了,我们来看下图就知道什么回事了,我们来新建一个Plane,看下它就知道了,

这是cull back时的效果,unity中默认也是这样的

当cull为fornt时,效果为:

当cull为off时,效果为:

时间: 2024-08-08 01:10:32

3、shader深度测试(Cull、ZWrite 、ZTest )的相关文章

Unity3D教程宝典之Shader篇:第十一讲剔除及深度测试

转载自风宇冲Unity3D教程学院 Culling阴影面剔除 Culling阴影面剔除是一种优化技术.所有的多边形都有正反两面,而你永远只能看见其中一面,不信的话拿张纸板或者一面镜子看看你能不能同时看到两面.通常多边形面向屏幕里面的背面,我们看不见,所以会将该面剔除. Cull Off 关闭阴影面剔除 Cull Back 剔除背面 Cull Front 剔除正面 Depth Testing深度测试 Depth Testing:深度测试,也叫深度缓冲.只有最靠近观察者的物体会被绘制.深度即Z,该值

NGUI利用深度测试实现新手引导遮罩

实现原理:实际上就是先利用渲染队列渲染,然后再利用ZTest,改变渲染的遮挡关系. PS:Depth Testing:深度测试,也叫深度缓冲.只有最靠近观察者的物体会被绘制.深度即Z,该值越小表示离观察者越近,该值越大表示离观察者越远. 具体操作步骤: 1.修改NGUI的Unlit - Transparent Colored Shader,将ZWrite改为On. 2.创建3个Panel,分别为叫GameObject.Mask.Cutout,里面分别创建一个Sprite, 3.将Panel的渲染

这是用两个shader来实现,球的shader跟两个胶囊体

代码如下:胶囊体(先渲染Geometry+1): Shader "SoulCoder/Mask" { SubShader { Tags { "RenderType"="Opaque" "Queue"="Geometry+1"} ColorMask 0 ZWrite off Stencil { Ref 1 Comp always Pass replace } CGINCLUDE struct appdata

Unity Shader Billboard

记录来源于ShaderLab开发实战详解 Shader "Tut/Project/Billboard_1" { Properties { _MainTex ("Base (RGB)", 2D) = "white" {} } SubShader { Tags { "Queue"="Transparent" "IgnoreProjector"="True" "R

(转)Esfog_UnityShader教程_UnityShader语法实例浅析

距离上次首篇前言已经有一段时间了,一直比较忙,今天是周末不可以再拖了,经过我一段时间的考虑,我决定这一系列的教程会避免过于深入细节,一来可以避免一些同学被误导,二来会避免文章过于冗长难读, 三来可以让大家有更多自己思考的时间.如果我想讲述一些细节问题会另开一个系列. UnityShader语法实例浅析 上一次我在前言里大体上讲述了一下图形渲染的流程以及Shader是如何参与的,我们这系列教程还是更注重实际应用多一些,所以这一节为了以后打基础,我们来分析一下UnityShader的语法结构.如果没

(转)Shadow Map & Shadow Volume

转自:http://blog.csdn.net/hippig/article/details/7858574 shadow volume 这个术语几乎是随着 DOOM3 的发布而成为FPS 玩家和图形学爱好者谈论的对象的.虽然这个游戏还没有上市,但是凭借 John Carmack 的传奇经历以及 DOOM3发布的一些让人惊讶的预览图片,我们仍然有理由认为它将会是 2004 年最热门的 FPS 游戏之一. id software向来都不吝惜为了达到最好的图像效果而使用最先进的渲染技术,这曾经使得玩

球体(后渲染Geometry+2)

Shader "SoulCoder/Model" { Properties { _Color ("Main Color", Color) = (1,1,1,0) } SubShader { Tags { "RenderType"="Opaque" "Queue"="Geometry+2"} ColorMask RGB Cull Front ZTest Always Stencil { R

ShadowMap & ShadowVolume

[ShadowMap] 一个物体之所以会处在阴影当中,是由于在它和光源之间存在着遮蔽物,或者说遮蔽物离光源的距离比物体要近,这就是 shadow mapping 算法的基本原理. Pass1: 以光源为视点,或者说在光源坐标系下面对整个场景进行渲染,目的是要得到一副所有物体相对于光源的 depth map (也就是我们所说的shadow map),也就是这副图像中每个象素的值代表着场景里面离光源最近的 fragment 的深度值.由于这个pass中我们感兴趣的只是象素的深度值,所以可以把所有的光

Unity ZTest 深度测试 & ZWrite 深度写入

初学Shader,一开始对于渲染队列,ZTest 和 ZWrite一头雾水,经过多方查阅和实验,有了一些自己的理解.发此文与初学Shader的朋友分享,也算是为自己做个笔记.不对或不足之处欢迎指正. 不说废话,直接进入正题. 首先是实验场景,一蓝一红两个Cube.蓝在红前. 两个方块所使用的Shader都是最简单的 V&F 着色程序,不同的是蓝色方块alpha返回值为0.6,红色为1. 但是蓝色方块并没有丝毫透明的效果,这时我们在蓝色方块的Shader内加上这样一行代码 : Blend SrcA