Here's the summary from Yankes.
Small recap what is possible with new visibility scripts:
a) Some unit can be visible only to some other units, something like A can see B, C can see D but A cant see D and C cant see B.
b) Items in hands can affect visibility of units, you can add NV googles that need be held in hands to allow see in darkens or masking device that will cloaking you.
c) Effectiveness of visibility is stored as integer value. Greater than zero mean that other unit is visible. This allow gun scope that add value to that number increasing effective sight radius of unit. Alternative you can subtract to recreate some camouflage. As IR visibility should not be affected by scopes or normal camouflage, I added option for distinguish between different visibility modes. Normal visibility (in visible light lengths) is defined by empty value `null` other types can be defined by new tag in `BattleUnitVisibility`.
d) You have access to raw data of smoke and fire density, this allow you to change how smoke affect visibility or allow fire to prevent use of IR.
e) You can add penalty for NV googles if target is in bright spot, or simply add bonus/penates based on relative lighting level of tiles where units stand (current and target) to simulate that you can't see thing in shadow.
f) All units stats can contribute to visibility. You can made cloaking device that will fall or reduce it effectiveness when unit lose hp (or current TU).
What I understood is that you can now script various visibility modes, including things like the camouflage, counter-camouflage and heat vision from OXCE+... but with greater control over it (you can use more variables for calculation and even consider items in hands). You can't do psi-vision-like scripts yet. So, if you want more than what I "hardcoded" in OXCE+, this gives you the tools to do it.
Performance loss is not confirmed yet.
There is inevitably some (like with every new feature), but we don't know how big it is until we try it out.
EDIT: and there is also the "mod size" feature... which gives you possibility to use IDs bigger than 1000 without conflicts... which I strongly suggest using instead of IDs > 100000 used at the moment.
EDIT2: also I think light doesn't go through solid objects (like walls) anymore... but I haven't really played yet, so that's just what I saw in some demo video