shader入门--PixelShader运用实例
2016-03-18 07:19
225 查看
PixelShader:
PixelShader的功能是根据传入的变量,按照某种算法计算出每个像素的颜色.即是在传入变量里面,包含顶点法向量,纹理观察位置等变量,在执行的时候,根据PixelShader传入的各顶点上的的数据,再按两个顶点之间的数据进行插值,从而得到对应的像素的计算结果.PixelShader的输出:
颜色纹理输出:
由于可以控制模型上的每个像素的颜色,可以将模型德尔颜色直接输出,在GPU中执行.float4 ps_main( VS_OUTPUT In ) : COLOR0 { return float4(1.0,0.0,0.0,1.0); }
纹理按照纹理坐标输出:
如果要是输出纹理的话,要求说明纹理和纹理坐标,这里的Texture0 是自己预定义的模式,是要进行纹理贴图的纹理名称sampler Texture0; float4 ps_main( VS_OUTPUT In ) : COLOR0 { return tex2D(Texture0,In.inTxr); }
颜色纹理输出为灰度:
这是没有添加灰度的纹理,只是简单的添加了一张纹理,下面一张是将颜色转化为灰度.
颜色转化为灰度计算公式为:
float4 fGray = 0.299*fRed + 0.5*fGreen + 0.2*fBlue;
sampler Texture0; float4 ps_main( VS_OUTPUT In ) : COLOR0 { float4 vColor = tex2D(Texture0,In.inTxr*2.0); float OutColor = vColor.x*0.3+vColor.y*0.5+vColor.z*0.2; return float4(OutColor,OutColor,OutColor,1.0); }
也可以使用点乘的方式来计算:
sampler Texture0; float4 ps_main( VS_OUTPUT In ) : COLOR0 { float4 vColor = tex2D(Texture0,inTxr1*2.0); float3 v3ToGray = float3(0.3,0.5,0.2); float OutColor = dot(vColor,v3ToGray) return float4(OutColor,OutColor,OutColor,1.0); }
相关文章推荐
- 【Android】Java堆栈溢出的解决办法
- ScrollView和WebView 嵌套,底部出现大块空白的问题
- SLAM学习笔记3: 源码分析ORB_SLAM中后端图构建
- mysqlbinlog读取远程机器binlog
- 【Hadoop 10周年】我与Hadoop不得不说的故事
- 【Hadoop 10周年】我与Hadoop不得不说的故事
- shodan:黑客搜索引擎
- 【Android】将Xamarin For VS升级为4.0.1.145版
- PDE5 method of characteristics
- PDE3&4 Transport equation: derivation & general solution
- Java技术路线
- KVM 网络虚拟化基础 - 每天5分钟玩转 OpenStack(9)
- Ubuntu 14.04 安装node js
- Xcode7禁用了明码的HTTP请求
- KVM 网络虚拟化基础 - 每天5分钟玩转 OpenStack(9)
- KVM 网络虚拟化基础 - 每天5分钟玩转 OpenStack(9)
- 什么是“对用户友好”【转自王垠博客】
- 谈 Linux,Windows 和 Mac【转自王垠博客】
- 清华梦的粉碎—写给清华大学的退学申请【转自王垠博客】
- mean value coordinates