原创文章,转载请注明链接 http://blog.csdn.net/hoytgm/article/details/38374687
这章只是上一章的扩展。上章讲了怎么实现一个平行光的阴影,这章我们稍微改动一下,就可以完成一个点光源的阴影。点光源和平行光所产生的阴影有什么不同呢?平行光的阴影宽度是不会变的,而点光源产生的阴影,离光源越远就越宽。
和上一章平行光所用的Shader不同,先看看点光源所用的Shader
char* texture_vs =
"precision mediump float;\n"
"attribute vec4 aPosition;\n"
"uniform mat4 uMvp;\n"
"uniform mat4 uShadowMvp;\n"
"varying vec4 vTexCoord;\n"
"void main() {\n"
" gl_Position = uMvp*aPosition;\n"
" vTexCoord = uShadowMvp * aPosition;\n"
"}\n";
char* texture_fs =
"precision mediump float;\n"
"uniform sampler2D uTex;\n"
"varying vec4 vTexCoord;\n"
"void main() {\n"
" if(texture2DProj(uTex, vTexCoord).r < 1.0)\n"
" gl_FragColor = vec4(0.2, 0.