本文主要是介绍UnityShader源码2017---学习笔记与自我拓展045,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
源自Internal-BlitCopy,Internal-BlitCopyDepth,Internal-CombineDepthNormals
讲一下unity的潜规则
Shader "Hidden/Internal-CombineDepthNormals" {}
只有以Hidden/开头的shader,都会在shader列表中隐藏起来。
BlitCopy从名字上看应该是Blit()函数调用时使用的吧,不负责任的猜测。
这个shader没有知识点
看一下BlitCopyDepth里的几个函数
SAMPLE_RAW_DEPTH_TEXTURE(_MainTex, i.texcoord)
然后查HLSLSupport里的
#define SAMPLE_RAW_DEPTH_TEXTURE(tex, uv) UNITY_SAMPLE_TEX2DARRAY(tex, float3(uv.xy, (float)unity_StereoEyeIndex))
然后就到了
#define UNITY_SAMPLE_TEX2DARRAY(tex,coord) tex.Sample (sampler##tex,coord)
。。。好像都到头了。。。废话了一堆,没有什么可以记录的
看一下CombineDepthNormals
这个其实就是把depthNormal弄到一张图里
return (d < (1.0-1.0/65025.0)) ? EncodeDepthNormal (d, n.xyz) : float4(0.5,0.5,1.0,1.0);
比较难以理解的就是1.0-1.0/65025.0这个几乎接近1的值。我也不理解,可能是知识断层
inline float4 EncodeDepthNormal( float depth, float3 normal )
{float4 enc;enc.xy = EncodeViewNormalStereo (normal);enc.zw = EncodeFloatRG (depth);return enc;
}
。。。感觉好水。。。难道是不想写blog了么。。。
这篇关于UnityShader源码2017---学习笔记与自我拓展045的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!