随笔分类 - Shader
摘要:Hatching Shader 是最初在NICONICO上看到的MME的效果( 手描き風シェーダー by ogugu )·前段时间把它改写为了适合自己引擎的方式· 简单的讲它就是把预制的纹理和场景渲染的结果相互混合· 实作上Hatching Shader本体是个ImageProcess·其输入除去场景的目标纹理·还需要UV纹理·和预制的Hatching纹理至少三张Texture2D· 这里指的UV纹理只是简单的把模型变换后的TexCoord的两个值写入到纹理的RG通道就可以了· Hatching Shader的计算
阅读全文
摘要:之前就打算做的SSAO一直都有点问题没解决·一直拖到现在才实装· 原始场景AO·一次高斯模糊·(这里其实被坑了下·一直没注意以为是ImageProcess的普通的高斯模糊就可以了·)混合·
阅读全文
摘要:之前给自己的渣引擎添加了简易的漫画效果· 简易的MangaShader其实和CartoonShader差不多一样·也一样需要额外准备一张(或者几张)纹理资源·作为网点·主要的处理都在像素(片元)着色器·首先把颜色转换为亮度(直接dot一个float3(0.29f, 0.58f, 0.11f)就行)·先由预先指定的阀值决定划分出不同的色块·当处于网点的色块时·从模型坐标转换到屏幕坐标·然后贴上去就行了·稍微不同的地方: if(t_Value < s_ColorLevel1){ //填充色 C
阅读全文
摘要:其实就基本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
阅读全文
摘要: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
阅读全文

浙公网安备 33010602011771号