源代码框架中的light是diffuse材质,具有自己的kd。在实际应用中的面光源应该具有反射或者阻挡光线的能力么?
另外想问一下大家,对于一开始获取的intersection是光源的处理是怎么做的,是直接判断为光源然后early return, 这样光源上的点就不会受到任何光照,直接将其emitcolor打在屏幕上
if (intersection.obj->hasEmit())
return intersection.m->getEmission();
还是final_color += intersection.m->getEmission();
使得光源也可以像普通物体一样接受其他光源的光照。如果采取这种做法,在采样时是否要防止sampleLight()
采取到的光源是intersection.obj本身,从而防止自投影?然后在只有一个光源的情况下,直接return emitcolor?
以及我加了一个球形的面光源,发现无论强度多小,总是会照亮整个场景,能否让其强度在一个固定的距离半径衰减到0?
This post has received 2 votes up.