我试图在OpenGL 2.0中为阴影立方体贴图实现PCF。我以为我找到了解决方案here(搜索Percentage closer filtering (PCF) algorithm
以查找多维数据集地图PCF上的部分的开头),但代码依赖的是samplerCubeShadow
在OpenGL 2.0中不可用,因此我无法使用该页面上显示的texture(samplerCubeShadow(), vec4())
来电。
这个问题的第一部分是:有没有办法从OpenGL 2.0 / GLSL 1.10中的samplerCube
检索相同的结果?使用textureCube
或其他什么?
第二部分涉及我必须解决这个问题的想法。下图说明了我想做的事情。
实线蓝线和虚线红线是来自samplerCube
的一个面的所有向量,它存储我的深度值。蓝线与黑色方块中心的深灰色方块的交点表示来自立方体的采样点。我想创建一个垂直于蓝色矢量的平面(由浅灰色矩形表示)。然后,我想通过将Z矢量从光位置(这些是红色虚线)投射到该平面上的x,Y值来从相机中采样4个黑点。然后,我将使用这些值与原始样本的值组合来计算PCF阴影值。
这是一种计算点光/立方体贴图的PCF的可行且有效的方法吗?我将如何创建平行平面然后从中检索我需要的X和Y坐标?
答案 0 :(得分:0)
我不能说它是高效还是好(甚至是正确的),但绝对可行。
给定从光到片段的向量v,选择任何与v不平行的向量u。叉积w = cross(u,v)将垂直于v。将w作为轴并交叉( v,w)作为第二轴。