回到20世纪90年代,PC上进入3D图形硬件光栅化时代。VOODOO取代了CPU 光栅化渲染。随后出现NVIDIA TNT。直到GEFORCE将3DFX吞并。现在GPU的演变已经8年,基于屏幕上每个象素的复杂计算已经可以让老shader程序员忽略C和HLSL的区别。
在下一代mmo 3d引擎工具平台开发之前,有必要重新回到GPU内部,关注几何与光栅管道。越来越复杂的shader效果一切均基于光栅器的运作机理。把工作从GPU搬回CPU目的为使图形开发人员打捞图形学基础,在次世代开发中更好的运用GPU功能。
softcore 是一个软件光栅器。用于从场景物体的geometry transform, clipping,lighting, texture mapping, gouraud shading,到最后光栅化显示的整个图形处理管道技术演示。此项目为了保持代码清晰,省略了所有优化。只在可以使用SIMD和MULTITHREAD的步骤做出了标记。为了便于学习,project整合了id software doom3 sdk中SIMD和数学库代码。
由于是两个星期业余时间制作,时间有限,主要目的在于演示3D加速核心算法,光栅化部分的tc,color数值计算和sampler部分仍然需要进一步tunning。需要去除溢出和浮点转整数规则调整。这些可由感兴趣人员自行修改。
softcore project
done:
* CPU soft rasterization
* Z-buffer
* Gouraud Shading
* Perspective Correct Texturemapping
* Near plane Clipping
* Back face culling(geometry)
* Directional lighting
not do:
x Phong shading/bump mapping
x Bilinear filter
x Mipmap
x Dynamic lightmap
x Vertex color export/import
x Optimization
以下是3DSMAX中场景原图。有了硬件BILINEAR效果还是不一样.....
后面给出技术细节