一旦设置好上面的摄像机模式后,我们就可以在Shader中声明_CameraDepthTexture来访问它。 Unity为我们提供了统一的宏SAMPLE_DEPTH_TEXTURE用来处理这些平台差异(比如PS3和PS2)造成的问题。例如: float d = SAMPLE DEPTH TEXTURE (_CameraDepthTexture , i.uv) ; float d = SAMPLE_DEPTH_TEXTURE_PROJ(_CarneraDepthT...
而我们只需要在Shader中使用SAMPLE_DEPTH_TEXTURE宏对深度纹理进行采样,例如: float d = SMAPLE_DEPTH_TEXTURE(_CameraDepthTexture, i.uv); 其中,i.uv 是一个float2类型的变量,对应了当前像素的纹理坐标。类似的宏还有SAMPLE_DEPTH_TEXTURE_PROJ 和 SAMPLE_DEPTH_TEXTURE_LOD。SAMPLE_DEPTH_TEXTURE_PROJ 宏同样接...
使用SAMPLE_DEPTH_TEXTURE宏对深度纹理进行采样,处理由于平台差异造成的问题: float d=SAMPLE_DEPTH_TEXTURE(_CameraDepthTexture,i.uv); 这样对投影纹理采样: float d=SAMPLE_DEPTH_TEXTURE_PROJ(_CameraDepthTexture,UNITY_PROJ_COORD(i.scrPos)); // HLSLSupport.cginc 因为深度值往往是非线性的,而我们需要线性...
而我们只需要在Shader中使用SAMPLE_DEPTH_TEXTURE宏对深度纹理进行采样:float d = SAMPLE_DEPTH_TEXTURE(_cameraDepthTexture,i.uv).其中i.uv是一个float2类型的变量,对应了当前像素的纹理坐标。类似的宏还有SAMPLE_DEPTH_TEXTURE_PROJ。 SAMPLE_DEPTH_TEXTURE_PROJ宏接受两个参数-深度纹理和一个float3或float4类型的...
SAMPLE_DEPTH_TEXTURE_PROJ 宏同样接受两个参数——深度纹理和一个float3或float4类型的纹理坐标,它的内部使用了tex2Dproj这样的函数进行投影纹理采样,纹理坐标的前两个分量首先会除以最后一个分量,再进行纹理采样。如果提供了第四个分量,还会进行一次比较, 通常用于阴影的实现中。SAMPLE_DEPTH_TEXTURE_PROJ 的第二...
SAMPLE_DEPTH_TEXTURE 内部使用 tex2D 进行采样,类似的宏还有 SAMPLE_DEPTH_TEXTURE_PROJ、SAMPLE_DEPTH_TEXTURE_LOD,它们在 HLSLSupport.cgin 文件中有定义,如下: #defineSAMPLE_DEPTH_TEXTURE(sampler, uv) (tex2D(sampler, uv).r)#defineSAMPLE_DEPTH_TEXTURE_PROJ(sampler, uv) (tex2Dproj(sampler, uv)....
在Shader中可以直接访问深度纹理_CameraDepthTexture,为了处理平台差异,Unity提供一个统一的宏对深度纹理进行采样 SAMPLE_DEPTH_TEXTURE(大多数情况下可以直接使用tex2D函数进行采样)。其中 i.uv 是当前像素的纹理坐标,float2类型变量。 类似的宏还有 SAMPLE_DEPTH_TEXTURE_PROJ 和 SAMPLE_DEPTH_TEXTURE_LOD。
SAMPLE_DEPTH_TEXTURE 内部使用 tex2D 进行采样,类似的宏还有 SAMPLE_DEPTH_TEXTURE_PROJ、SAMPLE_DEPTH_TEXTURE_LOD,它们在 HLSLSupport.cgin 文件中有定义,如下: # define SAMPLE_DEPTH_TEXTURE(sampler, uv) (tex2D(sampler, uv).r) # define SAMPLE_DEPTH_TEXTURE_PROJ(sampler, uv) (tex2Dproj(sampler...
其中LinearEyeDepth (SAMPLE_DEPTH_TEXTURE_PROJ(_CameraDepthTexture, UNITY_PROJ_COORD(i.projPos)))表示对深度图_CameraDepthTexture进行纹理投射,SAMPLE_DEPTH_TEXTURE_PROJ是定义在UnityCG.cginc文件中的,相当于tex2Dproj,事实上只是多了对当前的图形api做了判断而已。
SAMPLE_DEPTH_TEXTURE 内部使用 tex2D 进行采样,类似的宏还有 SAMPLE_DEPTH_TEXTURE_PROJ、SAMPLE_DEPTH_TEXTURE_LOD,它们在 HLSLSupport.cgin 文件中有定义,如下: #defineSAMPLE_DEPTH_TEXTURE(sampler, uv) (tex2D(sampler, uv).r)#defineSAMPLE_DEPTH_TEXTURE_PROJ(sampler, uv) (tex2Dproj(sampler, ...