NPR-Hatching素描渲染
Hatching(素描)渲染——通过光照的强弱,用不同深浅的纹理,实现一种类似素描效果。
Hatching的实现原理是:通过N.L计算点受光的强弱,将该值分成不同的段,不同的光照强度对应不同深浅的素描贴图
算法对应的VS如下:
- VS_OUTPUT vs_main( VS_INPUT Input )
- {
- VS_OUTPUT Output;
- Output.Position = mul( Input.Position, matViewProjection );
- Output.Texcoord = Input.Texcoord;
- float3 normalW = mul( Input.Normal, matView);
- float diffuse = min( 1, max(0, dot( vecLightDir, normalW)));
- //把diffuse平方两次是为了,把亮度降低点,把整体亮度向暗方向偏移,以得到更好的视觉效果。
- diffuse = diffuse * diffuse;
- diffuse = diffuse * diffuse;
- float factor = diffuse * 6.0;
- // 通过两个weight,来记录权值,减少传入ps的变量数。
- float3 weight0 = 0.0;
- float3 weight1 = 0.0;
- // 不同光照强度,对应不同的权值,及不同的纹理贴图
- if( factor > 5.0)
- {
- weight0.x = 1;
- }
- else if( factor > 4.0)
- {
- weight0.x = factor - 4.0;
- weight0.y = 1.0 - weight0.x;
- }
- else if( factor > 3.0)
- {
- weight0.y = factor - 3.0;
- weight0.z = 1.0 - weight0.y;
- }
- else if( factor > 2.0)
- {
- weight0.z = factor - 2.0;
- weight1.x = 1.0 - weight0.z;
- }
- else if( factor > 1.0)
- {
- weight1.x = factor - 1.0;
- weight1.y = 1.0 - weight1.x;
- }
- else if( factor > 0.0)
- {
- weight1.y = factor;
- weight1.z = 1.0 - weight1.y;
- }
- Output.Weight0 = weight0;
- Output.Weight1 = weight1;
- return( Output );
- }
PS为:
- struct PS_INPUT
- {
- float2 tex : TEXCOORD0;
- float3 weight0 : TEXCOORD1;
- float3 weight1 : TEXCOORD2;
- };
- float4 ps_main( PS_INPUT input) : COLOR0
- {
- float4 hattch0 = tex2D(hattch0Map, input.tex)*input.weight0.x;
- float4 hattch1 = tex2D(hattch1Map, input.tex)*input.weight0.y;
- float4 hattch2 = tex2D(hattch2Map, input.tex)*input.weight0.z;
- float4 hattch3 = tex2D(hattch3Map, input.tex)*input.weight1.x;
- float4 hattch4 = tex2D(hattch4Map, input.tex)*input.weight1.y;
- float4 hattch5 = tex2D(hattch5Map, input.tex)*input.weight1.z;
- return hattch0 + hattch1 + hattch2
- + hattch3 + hattch4 + hattch5;
- }
最终效果
NPR-Hatching素描渲染相关推荐
- NPR技术(2)—Hatching 素描渲染
转载请注明出处:http://blog.csdn.net/tianhai110 Hatching(素描)渲染--通过光照的强弱,用不同深浅的纹理,实现一种类似素描效果. Hatching的实现原理是: ...
- Unity Shader 素描渲染
一.效果 Unity3D Shader 素描渲染 技术参考:https://io-meter.com/2014/12/31/sketch-rendering/ 效果思路来源于以前看的一部电影<小 ...
- [OpenGL] Hatching 素描画效果
参考:http://hhoppe.com/proj/hatching/ 第一部分 : 论文概述 里面包含了论文和演讲稿,接下来是对Real-Time hatching论文的一个概述: 主要的挑战: ( ...
- mfc三视图和斜等测图实现_如何在UE4中实现NPR(非真实感)渲染效果?
如何在UE4中实现NPR(非真实感)渲染效果?本文作者尝试在UE4中制作了秋叶原南出口的画面,并分享了全部的制作过程,希望对大家有所帮助. 在虚幻引擎中制作秋叶原南出口 我经常在artstation上 ...
- Chapter14_非真实感渲染
非真实感渲染(Non Photorealistic Rendering,NPR),用于卡通,水彩风格渲染. 卡通风格渲染(黑色描边,分明的明暗变化) 基于色调的着色技术(tone-based shad ...
- 崩三类卡通渲染解析及制作规范
一.本篇文章分为三部分 1,卡通材质解析. 2,优化方向. 3,制作规范. 二.正文部分 1,卡通材质解析 卡通渲染属于非真实感计算机图形学(NPR)的范畴,然而崩三的卡通渲染又在国内被称为行业的标杆 ...
- Unity Shader - Simple Toon Shading - 简单卡通渲染
文章目录 最终效果 - Final Effect 无光照,只有纹理与主色调 Shader 加描边 - Outline GIF Shader 添加光影 - RecieveShadow 自身接收阴影 Sh ...
- unity-NPR-卡通渲染
title: unity-NPR-卡通渲染 categories: Unity3d tags: [unity, shader, npr, ta] date: 2019-03-07 11:44:18 c ...
- 【项目分析笔记】卡通感风格的渲染方法和思考
本文是基于腾讯TA大咖的一篇分享作的笔记,主要内容来自于Unity社区的分享,下面指路.基于个人的阅读习惯和一些陌生的方法做了补充和引用.主要是面对NPR的一个渲染效果分析,通俗易懂适合新手阅读. 引 ...
最新文章
- gnu linux空间包括什么,不知道这十项Linux常识,就别说自己玩过Linux
- 谈谈:.Net中的序列化和反序列化
- an example of Ascii using 问号 as example
- 并发编程(多进程1)
- java vm art_Android虚拟机art流程:JavaVM 和 JNIEnv 的初始化 - 神农笔记
- EVENT:10228 trace application of redo by kcocbk
- 支付宝退款接口及反回参数
- linux查看二进制文件乱码
- 判断平面内两直线平行c语言,5.2 平行线及其判定教学设计模板
- 常用的台式计算机,台式电脑常见简单故障排除
- FrameMaker 2019中文版
- 【原创】关于改变电脑默认安装地址后桌面快捷键显示“指定路径不存在”错误的解决方法之一
- np.ones(),np.zeros(), np.empty(),np.full(),np.ones_like() 基本用法
- 1055 习题4-9-3 逆序输出正整数各位上数字
- 嵌入式Linux设备驱动程序开发指南17(IIO子系统一)——读书笔记
- 微信小程序canvas 证件照制作
- 常见html5营销类型有哪些,常见的品牌营销都有哪几种形式
- MatLab实现的ftt大数乘法
- 【阿里巴巴】学习Java在面试过程中跳槽成功的心得总结
- Mysql 性能优化教程
热门文章
- JavaScript---常用的鼠标事件mouseover 和mouseenter的区别
- 香港科大詹华强发明头发检测吸毒新技术
- 谁说郭德纲的相声没有教育意义?
- Linux协议栈配置文件,Linux TCP/IP 协议栈调优 | 鸟窝
- elementui校验表格出现英文
- Windows10专业版任务栏右下角按钮左键无效右键有效的问题的解决
- Django教程(安装PythonPycharmDjango)
- 【A_star二维路径规划】基于matlab A_star算法无人机二维路径规划(起终点障碍物可设置)【含Matlab源码 1321期】
- 计算机二级Excel考点精讲(—)
- OpenGL(八)使用 subroutine 切换可编程管线