10 2013 档案

摘要:之前给自己的渣引擎添加了简易的漫画效果· 简易的MangaShader其实和CartoonShader差不多一样·也一样需要额外准备一张(或者几张)纹理资源·作为网点·主要的处理都在像素(片元)着色器·首先把颜色转换为亮度(直接dot一个float3(0.29f, 0.58f, 0.11f)就行)·先由预先指定的阀值决定划分出不同的色块·当处于网点的色块时·从模型坐标转换到屏幕坐标·然后贴上去就行了·稍微不同的地方: if(t_Value < s_ColorLevel1){ //填充色 C 阅读全文
posted @ 2013-10-31 19:21 macom 阅读(859) 评论(0) 推荐(0)
摘要:其实就基本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 阅读(456) 评论(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 阅读(354) 评论(0) 推荐(0)
摘要:其实ID3D11ShaderReflection原本就能获取HLSL文件信息·由获取到的信息创建InputLayout其实是比较容易的· Reflection接口由函数D3DReflect创建·需要四个参数·分别是编译着色器时得到的 缓冲指针 · 缓冲大小 · GUID(也就是IID_ID3D11ShaderReflection) 和ID3D11ShaderReflection接口· 获得ID3D11ShaderReflection接口后·调用GetInputParameterDesc获得D3D11_SIGNATU 阅读全文
posted @ 2013-10-30 12:06 macom 阅读(974) 评论(0) 推荐(0)