Sao,
基本思路是首先得到深度纹理和法线纹理。
然后画出复盖整个画面的四边形
不一定是真的画。 只要确保四边形的四个点被映射到屏幕的四个角就可以了,
因此,即使不传递顶点的坐标数据,顶点索引值(根据dx得出的opengl考虑了顶点属性() ) ) ) ) ) ) ) ) ) ) ) ) )。
映射到屏幕的四个角
在方形切片(dx称为像素)着色器中,检查相应的深度纹理和法线纹理normal。
能够根据深度值复原视空间中顶点的位置pos (可以是透视投影的逆运算)
然后,从该点周围取几个点,(参数控制、尊敬的行人方式或水平切片方式)、
比较周围这些点p时,
v=pos - p;
对取向量v长度、及v和normal的点积进行加权处理,在dot(v,normal )小于等零时没有遮挡
相反,根据v的长度加权计算阴影
===============分割线=========================
nvidia的demo看到只考虑深度因素,
在一定范围内随机得分(尊敬的行人方式,或切片式)。
选定点基于深度恢复顶点坐标,简单地基于顶点加权,而不考虑法线
因此,nvidia的例子根据视角而变化,影子也相应地变化。=====================================
笔者实现的效果图