X射线也就是轮廓线,效果如下图所示原理:物体表面的法线与人眼睛缩成的角度为90度时,刚好能看到物体的轮廓Fragmentshader代码如下:uniformsampler2DU_MainTexture;
varyingvec2M_coord;
varyingvec3M_normal;
varyingvec3M_WordPos;
voidmain(void)
{
vec3nLightDirection..
分类:
其他好文 时间:
2017-06-01 00:28:49
阅读次数:
172
使用Subroutine在shader中封装不同的函数,在CPU端选择调用那个函数效果如下图所示左侧:环境光中间:环境光+漫反射右侧:环境光+漫反射+高光1、Subroutine在shader中的内容subroutinevec4SurfaceColor();
subroutineuniformSurfaceColorU_SurfaceColor;定义SurfaceColor()函数..
分类:
其他好文 时间:
2017-06-01 00:28:35
阅读次数:
239
雾的效果,这里只对牛头的模型进行了雾化,如下图所示距离模型越近,越清晰1、线性雾fragmentshader中实现效果,参数为眼睛到平面的距离,需要传入雾的起始位置和终止位置floatcalcFogLinear(floatdistance)
{
floatfogAlpha=(distance-M_FogStart)/(M_FogEnd-M_FogStart);
fogA..
分类:
其他好文 时间:
2017-06-01 00:27:36
阅读次数:
150
1、差值shader//差值
uniformsampler2DU_MainTexture;
uniformsampler2DU_SubTexture;
varyingvec2M_coord;
voidmain()
{
vec4blendColor=texture2D(U_SubTexture,M_coord);
vec4baseColor=texture2D(U_MainTexture,M_coord);
gl_FragColor=abs(vec4(blendColor.rgb-baseCol..
分类:
其他好文 时间:
2017-06-01 00:26:55
阅读次数:
160
关于探照灯的效果如下图所示:探照灯需要传入光源的位置,光源的方向以及夹角的大小(夹角为光源覆盖的夹角的一半)计算思路:用光源到点的距离与光源的方向的单位向量做点乘,得到夹角的cos,用计算的夹角cos与传入的角度的cos做比较,确定光线照射的范围。边缘不部分计算的cos..
分类:
其他好文 时间:
2017-06-01 00:26:40
阅读次数:
185
1、柔光shader//柔光
uniformsampler2DU_MainTexture;
uniformsampler2DU_SubTexture;
varyingvec2M_coord;
voidmain()
{
vec4blendColor=texture2D(U_SubTexture,M_coord);
vec4baseColor=texture2D(U_MainTexture,M_coord);
gl_FragColor=2.0*blendColor*baseColor+baseCol..
分类:
其他好文 时间:
2017-06-01 00:26:33
阅读次数:
310
下图是使用高斯模糊和未使用高斯模糊的效果图对比正常图片高斯模糊后1、标准高斯模糊原理:每个像素周围对应的像素乘以对应的算子,然后除以算子的综合算子为121242121fragmentshadervaryingvec2M_coord;
varyingvec3M_normal;
varyingvec3M_WordPos;
uniformsampler2DU_MainT..
分类:
其他好文 时间:
2017-06-01 00:22:38
阅读次数:
288
1、平滑shader//平滑
uniformsampler2DU_MainTexture;
uniformsampler2DU_SubTexture;
varyingvec2M_coord;
voidmain()
{
vec4color=vec4(0.0);
intcoreSize=3;
floattexelOffset=1/300.0;
floatkernel[9];
kernel[6]=1;kernel[7]=1;kernel[8]=1;
kernel[3]=1;kernel[4]=1;k..
分类:
其他好文 时间:
2017-06-01 00:21:52
阅读次数:
283
1、正片叠底shader//正片叠底
uniformsampler2DU_MainTexture;
uniformsampler2DU_SubTexture;
varyingvec2M_coord;
voidmain()
{
vec4blendColor=texture2D(U_SubTexture,M_coord);
vec4baseColor=texture2D(U_MainTexture,M_coord);
gl_FragColor=blendColor*baseColor;
}..
分类:
其他好文 时间:
2017-06-01 00:21:38
阅读次数:
148
FBO:FrameBufferObject,默认绘制在1号FBO中,自定义的FBO是可以做读写操作的。绘制到自定义的FBO,然后显示出来,如下图所示:Qt中有关于FBO的类,QOpenGLFrameBufferObjectFBO的创建m_FrameBufferObj=newQOpenGLFramebufferObject(w,h,QOpenGLFramebufferObject::Depth);FBO的..
分类:
其他好文 时间:
2017-06-01 00:20:31
阅读次数:
226