摘要:
其实就基本SM加上一个靠近百分比过滤·下面这里是使用对周边取样的片段· float t_DepthMap = DepthMap.Sample( DepthMapSampler, t_ProjPos.xy ).r; float4 t_OutColor = t_DepthMap >= t_DepthScene ? s_OutColor : s_ShadowColor; t_DepthMap = DepthMap.Sample( DepthMapSampler, t_ProjPos.xy + float2(-viewport_inv_width, 0) ).r; t_Out 阅读全文
posted @ 2013-10-30 22:24
macom
阅读(449)
评论(0)
推荐(0)
摘要:
Simple Shadow Mapping 最基本的SM。之前曾经被坑过,后来发现其实原理并不麻烦。就是 绘制深度图 加上 投影纹理映射 以及简单的比较就行了。 首先要获得深度图·其实要怎么获取·获取什么样的值(W-BUF或者Z-BUF)并没有太重要的关系·只要能有一张把光源当做摄像机所绘制出的深度图并保证比较时是一致的应该就可以了·下面是简易的HLSL:#pragma pack_matrix( row_major )cbuffer Transforms{ float4x4 cb_WVP;};struct VS_TO_PS{ float4 Pos : S 阅读全文
posted @ 2013-10-30 21:20
macom
阅读(341)
评论(0)
推荐(0)
摘要:
其实ID3D11ShaderReflection原本就能获取HLSL文件信息·由获取到的信息创建InputLayout其实是比较容易的· Reflection接口由函数D3DReflect创建·需要四个参数·分别是编译着色器时得到的 缓冲指针 · 缓冲大小 · GUID(也就是IID_ID3D11ShaderReflection) 和ID3D11ShaderReflection接口· 获得ID3D11ShaderReflection接口后·调用GetInputParameterDesc获得D3D11_SIGNATU 阅读全文
posted @ 2013-10-30 12:06
macom
阅读(965)
评论(0)
推荐(0)

浙公网安备 33010602011771号