憋了快一个月啊.内容是加入Deferred Shading.中间想加成Deferred Lighting.后来发现太难,需要的时间太久,最主要是没有现成代码可以参照,于是还是老老实实先实现Deferred Shading,并且存储了位置信息.可以说是最简化版本了.效果上看起来就是这样,只计算了漫反射,并且只有一个平行光.有漫反射的部分表现为蓝色.

  过程中还是学习到了很多知识,遇到了很多问题.有个代码参照,其实也算是个坑.中间了解了设置D3D调试模式,确实帮助了不少.最后的屏幕四边形,直接在CPU代码中设定四个点为规范化后的坐标位置,即X(-1~1), Y(1~-1),传入顶点着色器后,顶点着色器不对点做矩阵乘法,直接传递到像素着色器.结果就是画除了这个全屏的四边形.虽然这样做可能有问题,但至少目前来看出现了想要的效果.接下来优化一下现有的代码,考虑不存储位置信息,而是写入一张Depth Buffer.同时,加入多种光源的类型,加入根据光照类型和范围减少像素着色器的执行次数,或者改成Deferred Lighting.还有就是对设备丢失进行处理.唉,在现有复杂架构中加入Deferred Shading也算是一件难事,好在搞出来了.

  好在坚持过来了,神秘的Deferred Shading似乎也明朗了一些.接下来继续加油吧,把现有的搞好,我准备投简历了就.明天是我的生日,早点休息吧,黑天白天写代码~

你可能感兴趣的:(十)