although it is possible to write some code for correction
(make color values less aggressive).
It's easy. We have full control of incoming color values:
Quote
for I :=0 to RadW-1 do // Ïî âñåì òî÷êàì ïàìÿòè RadiosityPointer
for J :=0 to RadH-1 do
begin
Pixel:=Pointer(Integer(RadiosityPointer) + 3*(i*RadW + j));
R:=R+Pixel^.R * formFactor[i,j]; // ïðèìåíÿåì FormFactor
G:=G+Pixel^.G * formFactor[i,j]; // è óâåëè÷èâàåì êîìïîíåíòû R,G,B
B:=B+Pixel^.B * formFactor[i,j]; // íà çíà÷åíèÿ ÊÎÌÏÎÍÅÍÒÀ*ÔÎÐÌÔÀÊÒÎÐ
end;
result.R:=R/(RadW*RadH*255); // Ïåðåâîäèì â Single
result.G:=G/(RadW*RadH*255); // Çíå÷åíèÿ 0...255 â 0...1
result.B:=B/(RadW*RadH*255); // è óñðåäíÿåì äåëåíèåì íà RadW*RadH
So we can do absolutely everything with this incoming colors.
If some color value (R,G,B) is much bigger than another then change it.
Original scene:

only walls are colored