一旦设置好上面的摄像机模式后,我们就可以在Shader中声明_CameraDepthTexture来访问它。 Unity为我们提供了统一的宏SAMPLE_DEPTH_TEXTURE用来处理这些平台差异(比如PS3和PS2)造成的问题。例如: float d = SAMPLE DEPTH TEXTURE (_CameraDepthTexture , i.uv) ; float d = SAMPLE_DEPTH_TEXTURE_PROJ(_CarneraDepthT...
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, ...
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, ...
不过Unity提供了统一的宏SAMPLE_DEPTH_TEXTURE用来处理平台差异造成的问题: // i.uv是float2类型的变量,对应当前像素的纹理坐标 float d = SAMPLE_DEPTH_TEXTURE(_CameraDepthTexture, i.uv); 类似的宏还有SAMPLE_DEPTH_TEXTURE_PROJ、SAMPLE_DEPTH_TEXTURE_LOD,可以在Unity内置的HLSLSupport.cginc文件中找到。 关于...
float d2 = SAMPLE_DEPTH_TEXTURE_PROJ(_CameraDepthTexture, UNITY_PROJ_COORD(i.screen)); d2 = LinearEyeDepth(d2); 4. float3 normalValues; float depthValue; DecodeDepthNormal(tex2D(_CameraDepthNormalsTexture, i.screen.xy), depthValue...
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...
SAMPLE_DEPTH_TEXTURE_PROJ 宏同样接受两个参数——深度纹理和一个float3或float4类型的纹理坐标,它的内部使用了tex2Dproj这样的函数进行投影纹理采样,纹理坐标的前两个分量首先会除以最后一个分量,再进行纹理采样。如果提供了第四个分量,还会进行一次比较, 通常用于阴影的实现中。SAMPLE_DEPTH_TEXTURE_PROJ 的第二...
SAMPLE_DEPTH_TEXTURE_PROJ 宏同样接受两个参数——深度纹理和一个float3或float4类型的纹理坐标,它的内部使用了tex2Dproj这样的函数进行投影纹理采样,纹理坐标的前两个分量首先会除以最后一个分量,再进行纹理采样。如果提供了第四个分量,还会进行一次比较, 通常用于阴影的实现中。SAMPLE_DEPTH_TEXTURE_PROJ 的第二...
Camera.main.depthTextureMode |= DepthTextureMode.Depth; } 1. 2. 3. 开启后,可以FrameDebugger一下,会发现流程中已经加入了获取深度纹理的Pass: 其中,DepthTexture是在ShadowCaster Pass中被渲染的,由于我这里场景中所有物体给了默认Shader,Shader中默认Fallback"Duffuse"就包含了ShadowCaster这一Pass。
SAMPLE_DEPTH_TEXTURE_PROJ宏同样接受两个参数——深度纹理和一个float3或float4类型的纹理坐标,它的内部使用了tex2Dproj这样的函数进行投影纹理采样,纹理坐标的前两个分量首先会除以最后一个分量,再进行纹理采样。如果提供了第四个分量,还会进行一次比较,通常用于阴影的实现中。SAMPLE_DEPTH_TEXTURE_PROJ的第二个参数...