基于Qt的OpenGL可编程管线学习(10)- 膨胀与腐蚀
膨胀:取一个像素周围的点,取最亮的点为当前的点颜色,为膨胀效果
腐蚀:取一个像素周围的点,取最暗的点为当前的点颜色,为腐蚀效果
膨胀Fragment Shader
varyingvec2M_coord;varyingvec3M_normal;varyingvec3M_WordPos;uniformsampler2DU_MainTexture;uniformsampler2DU_SubTexture;voidmain(){vec4maxValue=vec4(0.0);intcoreSize=3;inthalfCoreSize=coreSize/2;floattexelOffset=1/200.0;for(inty=0;y<coreSize;y++){for(intx=0;x<coreSize;x++){vec4color=texture2D(U_MainTexture,M_coord+vec2((-halfCoreSize+x)*texelOffset,(-halfCoreSize+y)*texelOffset));maxValue=max(maxValue,color);}}gl_FragColor=maxValue;}
腐蚀Fragment Shader
varyingvec2M_coord;varyingvec3M_normal;varyingvec3M_WordPos;uniformsampler2DU_MainTexture;uniformsampler2DU_SubTexture;voidmain(){vec4minValue=vec4(1.0);intcoreSize=3;inthalfCoreSize=coreSize/2;floattexelOffset=1/100.0;for(inty=0;y<coreSize;y++){for(intx=0;x<coreSize;x++){vec4color=texture2D(U_MainTexture,M_coord+vec2((-halfCoreSize+x)*texelOffset,(-halfCoreSize+y)*texelOffset));minValue=min(minValue,color);}}gl_FragColor=minValue;}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。