shader入门--PixelShader运用实例

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);
}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值