The previous implementation maintained a global linked list of all the bias surfaces in the map. This meant that the unlink algorithm (which had to support dynamic unlinking) was of the order O(n) and consequently unlinking often took far longer than it should.
The revised mechanism dispenses with the global list entirely and instead a simple traversal of the Map element LUTs is used when performing bias lighting updates.
Shadow Bias: Integrated BiasSurface, optimized linking mechanism
The previous implementation maintained a global linked list of all
the bias surfaces in the map. This meant that the unlink algorithm
(which had to support dynamic unlinking) was of the order O(n) and
consequently unlinking often took far longer than it should.
The revised mechanism dispenses with the global list entirely and
instead a simple traversal of the Map element LUTs is used when
performing bias lighting updates.