博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【HLSL学习笔记】WPF Shader Effect Library算法解读之[Embossed]
阅读量:6785 次
发布时间:2019-06-26

本文共 1094 字,大约阅读时间需要 3 分钟。

原文:

Embossed(浮雕效果)

         浮雕效果主要有两个参数:AmountWidthAmount控制浮雕边缘的对比度,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);

+++++++++++++

效果:

 

 

转载地址:http://htbgo.baihongyu.com/

你可能感兴趣的文章
简析Uber的可伸缩监控:uMonitor和Neris
查看>>
腾讯云答治茜:云计算为独角兽和传统企业提供了哪些沃土?
查看>>
Spark on YARN 部署案例
查看>>
RedHat发布JBoss 7.2,完全支持Java EE 8规范
查看>>
kubernetes1.9.2基于kubeadm的高可用安装HA
查看>>
「性能优化之道」每秒上万并发下的Spring Cloud参数优化实战
查看>>
App启动流程
查看>>
原理 | 分布式链路跟踪组件 SOFATracer 和 Zipkin 模型转换
查看>>
我的第一篇博客
查看>>
手把手教你如何用Python从PDF文件中导出数据(附链接)
查看>>
维珍银河完成最长距离火箭飞行,下一步剑指太空旅行
查看>>
[Python]attributeError:'module' object has no attribute 'dump'
查看>>
Docker系列教程11-使用Nexus管理Docker镜像
查看>>
业界最全,阿里云混合云灾备服务上线!
查看>>
Windows Linux 子系统可以在资源管理器中打开
查看>>
WebStorm文件类型关联设置
查看>>
13.1 Spring MVC 关于controller的字符编码
查看>>
理发店与 App 定价模型
查看>>
ES6(数组)
查看>>
php simplexml_load_file 函数执行不稳定
查看>>