【HLSL学习笔记】WPF Shader Effect Library算法解读之[Embossed]
来源:互联网 发布:软件测试流程进阶 编辑:程序博客网 时间:2024/05/16 08:08
Embossed(浮雕效果)
浮雕效果主要有两个参数:Amount和Width。Amount控制浮雕边缘的对比度,Width参数控制浮雕效果的精细程度,数值越小越精细。
效果如下图所示:
源代码如下: +++++++++++++++++++++++++++++++++++++++++++++ //浮雕特效 //数量,一个控制雕刻边缘对比度的参数,数值越大,对比越强 float Amount : register(C0); //位移,一个用于控制雕刻效果宽度的参数,数值越小,雕刻效果越细腻、清晰 float Width : register(C1); sampler2D implicitInputSampler : register(S0); float4 main(float2 uv : TEXCOORD) : COLOR { //用一个中性灰不透明的纹理当做默认的纹理 float4 outC = {0.5, 0.5, 0.5, 1.0}; //通过两次正反的位置偏移叠加产生边缘错位的效果,可以用Amount参数来控制错位的边缘对比度 outC -= tex2D(implicitInputSampler, uv - Width) * Amount; outC += tex2D(implicitInputSampler, uv + Width) * Amount; //上面的纹理叠加难免会产生色彩混合后不等于中性灰的地方,所以再将纹理变成灰度 outC.rgb = (outC.r + outC.g + outC.b) / 3.0f; return outC; } +++++++++++++++++++++++++++++++++++++++++++++ 这个特效中主要是利用中性灰色来区分高光边缘和暗部边缘,通过对纹理进行错位来突出纹理的边缘,通过数量值来控制高光和暗部的对比。 这种多次采样并叠加的方式就类似于Photoshop中的图层混合模式,下面简单做几个PS中默认的混合模式特效: 1、 正片叠底Multiply 算法:C=A*B 代码: +++++++++++++++++++ float4 c; c=tex2D(input,uv); c*=tex2D(input,uv); return c; +++++++++++++++++++ 效果:
1、 滤色Screen 算法:C=1-(1-A)*(1-B) 代码: +++++++++++++ c=tex2D(input,uv); c=1-(1-c)*(1-c); +++++++++++++ 效果:
- 【HLSL学习笔记】WPF Shader Effect Library算法解读之[Embossed]
- 【HLSL学习笔记】WPF Shader Effect Library算法解读之[BandedSwirl]
- 【HLSL学习笔记】WPF Shader Effect Library算法解读之[DirectionalBlur]
- D3D9学习笔记(九) effect (hlsl)
- Shader 学习笔记 ---Screen Effect介绍
- Unity Shader 学习笔记(2)Shader、ShaderLab、Cg/HLSL/GLSL
- HLSL Effect的vertex shader和pixel shader的参数传递
- HLSL Effect的vertex shader和pixel shader的参数传递
- HLSL Effect的vertex shader和pixel shader的参数传递 .
- HLSL学习笔记
- Shader编程学习笔记(三)—— 三大主流编程语言 HLSL/GLSL/Cg
- Shader编程学习笔记(三)—— 三大主流编程语言 HLSL/GLSL/Cg
- Shader编程学习笔记(三)—— 三大主流编程语言 HLSL/GLSL/Cg
- Shader编程学习笔记(三)—— 三大主流编程语言 HLSL/GLSL/Cg
- Directx11 HelloWorld之HLSL的Effect框架的使用
- Directx11 HelloWorld之HLSL的Effect框架的使用
- Directx11 HelloWorld之HLSL的Effect框架的使用
- Directx11 HelloWorld之HLSL的Effect框架的使用
- c# gdi+ cpu监视器
- OGRE分析之设计模式Singleton,Factory Method,Abstract Factory
- LPC2000系列的向量中断控制器(VIC)
- 查询及删除重复记录的方法大全
- VMS(Visitor Management System)2.0发布
- 【HLSL学习笔记】WPF Shader Effect Library算法解读之[Embossed]
- Ogre 分析系列完全篇
- LPC2114中向量中断控制器(VIC)的操作方法
- JXTA学习笔记之二
- latex中输入数学中的“属于” 符号
- 使用C#实现身份证号码15位到18位的转换
- 国外空间Sql数据乱码问题
- hibernate笔记(四)关于懒加载和load()方法之一
- 使用CodeIgniter框架快速开发PHP应用(一)