2014-02-07 139 views
0

我已經調整了Nvidia CSM示例,使用GLM進行數學運算的Opengl核心配置文件。但是,我注意到一個我認爲與縮放模型有關的問題。陰影似乎縮小了我與他們的距離。級聯陰影貼圖縮小

在片段着色器我得到的陰影協調,像這樣:

vec4 shadow_coord = textureMatrix[index] * vec4(positionCS, 1.0); 

在頂點着色器我做positionCS像這樣(模型視圖是V * M):

positionCS = (modelView * vertPosition).xyz; 

我讀的地方如果模型矩陣對網格進行縮放,我應該使用模型矩陣的逆轉置,但是該特定示例將法向矢量乘以而不是位置矢量。無論如何我都試過,但它完全打破了陰影映射。

任何想法?

它似乎只是在CSM的更接近的分裂。

回答

0

好的,我修好了。 Nvidia的例子缺少作物矩陣的Z尺度/偏移量(糟糕的演示?)。

我加入他們在我創建了作物矩陣和問題走了:

float scaleZ = 1.0f/(maxZ - minZ); 
float offsetZ = -minZ * scaleZ; 
shadCrop[2][2] = scaleZ; 
shadCrop[2][3] = offsetZ; 

我現在已經上了最遠的分裂一些輕微的文物,但我還沒有設置任何偏見,只是還沒有。