Hatching Shader 是最初在NICONICO上看到的MME的效果( 手描き風シェーダー by ogugu )·前段时间把它改写为了适合自己引擎的方式·

  简单的讲它就是把预制的纹理和场景渲染的结果相互混合·

  实作上Hatching Shader本体是个ImageProcess·其输入除去场景的目标纹理·还需要UV纹理·和预制的Hatching纹理至少三张Texture2D·

  这里指的UV纹理只是简单的把模型变换后的TexCoord的两个值写入到纹理的RG通道就可以了·

  Hatching Shader的计算和Hatching纹理本体是相关的·(这里依旧使用的ogugu的4*4一共16个层级的格式)

   float4 t_OrgColor = SceneMap.Sample( SceneMapSampler, i_TexCoord );    const float t_Luminous = dot( float3( 0.29891f, 0.58661f, 0.11448f ), t_OrgColor.rgb );       //亮度值const int t_Index = min( 15.f, t_Luminous * 16.f );const float t_Weight = frac( t_Luminous * 16.f );

  首先计算原本场景的亮度值·然后计算对应到HatchingMap的十六个等级·和后面需要用到的权重·

        const float2 t_UV = UVMap.Sample( UVMapSampler, i_TexCoord ).rg;float t_f0 = HatchingMap.Sample( HatchingSampler, 0.25f * ( frac( t_UV * float2(-1.f,1.f) * s_TileRepeat) +float2( 3.f - t_Index % 4, t_Index / 4 ) ) ).r;const int t_UIndex = t_Index + 1;float t_f1 = 1.f;                                                  //限界值if( t_UIndex < 16 ){t_f1 = HatchingMap.Sample( HatchingSampler, 0.25f * ( frac( t_UV * float2(-1.f,1.f) * s_TileRepeat) + float2( 3.f - t_UIndex % 4, t_UIndex / 4 ))).r;}const float t_f = lerp( t_f0, t_f1, t_Weight );float3 t_Color = lerp( t_OrgColor.rgb, s_WhiteLineColor, t_f );float4 o_OutColor = float4( lerp( t_OrgColor.rgb, t_Color, s_Mixture ), t_OrgColor.a);

然后通过UVMap来计算HatchingMap所对应的位置(UV决定X轴,亮度决定Y轴)·最后通过插值(其实这里想怎么弄都可以)得到最终的输出颜色···

(这里s_TileRepeat是HatchingMap的重复周期·s_Mixture为最终混合权重·)

更换不同的HatchingMap可以得到不同的效果·

(人物模型为 机巧少女TV官方配布的 yeye, 背景模型为 天界 )  

  

  

  

转载于:https://www.cnblogs.com/macom/p/3423819.html

Hatching shader相关推荐

  1. Unity Shader入门精要学习笔记 - 第14章非真实感渲染

    转载自 冯乐乐的 <Unity Shader 入门精要> 尽管游戏渲染一般都是以照相写实主义作为主要目标,但也有许多游戏使用了非真实感渲染(NPR)的方法来渲染游戏画面.非真实感渲染的一个 ...

  2. Unity_Shader高级篇_14.1_Unity Shader入门精要

    14.2 素描风格的渲染 另一种非常流行的非真实感渲染时素描风格的渲染.微软研究院的Praun等人在2001年的SIGGRAPH上发表了一篇非常著名的论文(Rraun E,Hoppe H,Webb M ...

  3. shader入门精要读书笔记40 素描风格的渲染

    总结下头文件: HLSLSupport.cginc - (自动包含) 为跨平台的着色器编译宏和定义提供帮助. UnityShaderVariables.cginc - (自动包含)常用的全局变量. U ...

  4. Real-time hatching報告+實現代碼和效果

    1.論文解讀 論文標題為實時的畫影線,實時的畫影線的主要作用可以用於產生素描畫的效果.該論文屬於計算機圖形學中的圖像處理技術和紋理技術. 根據摘要,論文可以被分為四個部分.該論文通過分析已有技術中的問 ...

  5. WebGL+shader实现素描效果渲染

    转自:点击打开链接 实现一个这样的渲染效果,主要的步骤包括: 准备模型和场景 通过 WebGL (Three.js) 导入场景 实现 Shader 以表现接近素描的效果 在最重要的第 3 步中,我们要 ...

  6. Unity Shader总结(十四)——卡通和素描风格的渲染

    文章目录 卡通渲染 渲染轮廓线 高光 实现 素描风格渲染 许多游戏使用非真实感渲染(NPR)的方法渲染游戏画面,例如卡通和水彩风格等: 卡通渲染 渲染轮廓线 这里使用过程式几何轮廓线渲染:使用两个Pa ...

  7. Unity Shader 学习笔记(27)渲染轮廓线(描边)方法、卡通风格渲染、素描风格渲染

    Unity Shader 学习笔记(27)渲染轮廓线(描边)方法.卡通风格渲染.素描风格渲染 参考书籍:<Unity Shader 入门精要> 渲染轮廓线(描边) 五种方法: 基于观察角度 ...

  8. 绘制多边形_XDGE_RayMarchine 1- 利用Frag Shader绘制图形

    转载于小道的博客园 XDGE_RayMarchine 1- 利用Frag Shader绘制图形​www.cnblogs.com # Render/RayMarchine/Base 1- 利用Frag绘 ...

  9. 早上突然看明白 shader和材质球的关系

    计算机的世界不外乎 指令+数据 shader即Gpu指令,材质即数据 转载于:https://www.cnblogs.com/jiahuafu/p/7348663.html

最新文章

  1. Python多线程thread与threading实现
  2. 微信tocken后台后台保存方法
  3. linux dmesg信息哪来的,linux中的dmesg命令简介
  4. 广西大学计算机科学与技术中法,广西大学
  5. 一、express 路由 todos案例
  6. 信息学奥赛一本通 1079:计算分数加减表达式的值 | OpenJudge NOI 1.5 33
  7. 史上最通俗分布式锁解读
  8. 暗中学习的人太坏了,12本书帮你翻车变超车!
  9. 设置角速度及生成四元数及利用刚体
  10. 安防的未来五年 如何把握机遇深耕市场?
  11. 华为IPD研发项目管理5项精髓
  12. 回溯法 | 图的m着色问题
  13. 计算机控制面板空白,win7控制面板打开是空白的怎么办-解决控制面板打开之后空白的方法 - 河东软件园...
  14. Oracle技巧之 desc+表名
  15. 【网络】VLAN 及其配置详解
  16. IIS通过共享文件夹发布aspx程序站点(部分为原创)
  17. CPU的计算机能力和AVX512指令集
  18. GDAL python教程基础篇(2)——用OGR写入矢量数据
  19. storm mysql trident_Storm Trident状态
  20. 8月收到的最新更新附近的人交友系统源码,自动打招呼,自动发视频通话+自动聊天多功能机器人交友源码

热门文章

  1. “看完网红村视频,我连夜叫了滴滴打人服务”|黑话连篇
  2. java 判断时间先后顺序_java怎样判断下面的日期的先后
  3. Android手机软键盘enter改为搜索
  4. 【AHK】微信自定义快捷键/微信体验优化/微信常用快捷键
  5. lazarus视频控件linux,开源软件之Lazarus:国产操作系统下写个跨平台截屏录屏软件...
  6. 电磁流量计用于管道流量监测
  7. kubesphere k8s 安装Fluentd,带elasticsearch插件
  8. DELL服务器U盘安装Centos 7
  9. 地理信息系统软件工程与应用开发实验报告
  10. webservice Xfier