关于象素光照的问题

时间:2022-09-11 07:38:33
3D场景中物体表面被多个光源照射是很平常的事儿,但是一个片断程序一般只能处理一个光源,对于这种表面如果每个光源都渲染一次,然后用混合叠加,性能极差,请问有其它高效的处理办法吗?

9 个解决方案

#1


多线程

#2


我的意思是多CPU :P

#3


你可以使用数组+结构 vertex shader

#4


何为数组+结构 vertex shader,麻烦稍微说详细点

#5


3d固定流水线渲染办法当中,是支持多光源
一个物体可以同时被多个光源所照亮
硬件上目前在dx当中最多是同时打开8个光源
如果硬件支持光照计算的话(支持的最多光源数目可能不到8个),这个8个光源是并行计算的

但是转换成为cg的时候,代码你自己写,硬件是否能够执行并行计算就值得怀疑了。
恐怕是没有更好的办法

#6


我研究Doom3的引擎,它所用的片断程序也只处理一个光源,但是最终的渲染效果显然是多个像素光照效果的叠加,性能也绝对比每个光源都渲染一遍再混合叠加要高得多,办法我想一定是有的,只是还没想到。

#7


动态光源一般很少一个或两个其他的都是静态光源。毕竟现在硬件计算能力还不是很强。

#8


在实际的游戏开发当中,动态光源很少的,一般说来都是只有一个主灯
而其他的部分都是依靠预先处理好的光照效果当做贴图使用来实现的

采用一个动态光源不仅仅是因为硬件能力的问题,而是效果的问题
硬件支持的光照效果是没有办法和美工制作的光照效果比较的
但是如果全部都由美工来制作,场景当中的一些特殊效果——动态的阴影就无法实现
整体的视觉效果就不好
游戏里面很多东西都不是单纯技术实现的,绝大多数特效和效果都是依靠美工
技术只要提供一种方法可以让美工做的特效得以体现即可
因为用技术控制一个特效的成本和安全性远远没有可以用大量美工人力来实现来的好

如果有研究过多个游戏的引擎就会发现,实际上游戏当中的特效所采用的技术没有多少值得研究的
相反美工的技巧才是更要注重的

#9


up

#1


多线程

#2


我的意思是多CPU :P

#3


你可以使用数组+结构 vertex shader

#4


何为数组+结构 vertex shader,麻烦稍微说详细点

#5


3d固定流水线渲染办法当中,是支持多光源
一个物体可以同时被多个光源所照亮
硬件上目前在dx当中最多是同时打开8个光源
如果硬件支持光照计算的话(支持的最多光源数目可能不到8个),这个8个光源是并行计算的

但是转换成为cg的时候,代码你自己写,硬件是否能够执行并行计算就值得怀疑了。
恐怕是没有更好的办法

#6


我研究Doom3的引擎,它所用的片断程序也只处理一个光源,但是最终的渲染效果显然是多个像素光照效果的叠加,性能也绝对比每个光源都渲染一遍再混合叠加要高得多,办法我想一定是有的,只是还没想到。

#7


动态光源一般很少一个或两个其他的都是静态光源。毕竟现在硬件计算能力还不是很强。

#8


在实际的游戏开发当中,动态光源很少的,一般说来都是只有一个主灯
而其他的部分都是依靠预先处理好的光照效果当做贴图使用来实现的

采用一个动态光源不仅仅是因为硬件能力的问题,而是效果的问题
硬件支持的光照效果是没有办法和美工制作的光照效果比较的
但是如果全部都由美工来制作,场景当中的一些特殊效果——动态的阴影就无法实现
整体的视觉效果就不好
游戏里面很多东西都不是单纯技术实现的,绝大多数特效和效果都是依靠美工
技术只要提供一种方法可以让美工做的特效得以体现即可
因为用技术控制一个特效的成本和安全性远远没有可以用大量美工人力来实现来的好

如果有研究过多个游戏的引擎就会发现,实际上游戏当中的特效所采用的技术没有多少值得研究的
相反美工的技巧才是更要注重的

#9


up