Black Ops III

Vision Files

Vision files can be used in GSC to adjust post-processing

Color Correction

ValueTypeDefaultSummary
vkTTfloat6500Color temperature
vkTSfloat0Saturation (-1 to 1)
vkTCvector1 1 1 0Color tint R G B (0 to 1) and stops
vkTOvector0 0 0Color offset (0 to 1)
vkRGBvector0 0 0Color for color ramp (0 to 1)
vkLfloat0Anchor location for color ramp (0 to 1)
vkMfloat0.5Midpoint location for color ramp
vkRMfloat0Blend ammount for color ramp (0 to 1)

Static Overlays

Overlays are optional, you can skip this step if you'd like

  1. In APE, create a new Material for your overlay texture
  2. KeyValue
    Material Category2d
    Material Typerefract_reveal_blend
    Surface Typenone
  3. Then add your image
  4. KeyValue
    Image Usage2d
    CompressionUncompressed
    Mipmap Disable☑️
    Streamable☑️
  5. Add a normal map if you want your overlay to refract light
  6. Add a postfxbundle to your GDT and add your material
  7. KeyValue
    Looping☑️
    First Person Only☑️
    Number of shader constants1
    NamescriptVector0
    Animationhold
    Number of channels2

Animated Overlays

Overlays are optional, you can skip this step if you'd like

  1. In APE, create a new Material for your overlay texture
  2. KeyValue
    Material Category2d
    Material Typewarp_aberration_refract_screen
    Surface Typenone
  3. Then add an aberration mask
  4. KeyValue
    Image UsagerevealMap
    Mipmap Disable☑️

and adjust the Aberration values

  1. Add a normal map if you want your overlay to refract light
  2. Add a warp mask
  3. Add a sprite sheet as the color map
  4. KeyValue
    Image UsagediffuseMap
    CompressionUncompressed
    Mipmap Disable☑️
    Streamable☑️

Then enter the number of rows and columns in your sprite sheet color map and set flipbook time to animation duration divided by total number of frames

  1. Add a postfxbundle to your GDT and add your material
  2. KeyValue
    Looping☑️
    First Person Only☑️
    Number of shader constants1
    NamescriptVector0
    Animationhold
    Number of channels3
    Start value0 0 1

Add To Script

  1. At the top of your .gsc, add:
#using scripts\shared\visionset_mgr_shared;
#using scripts\shared\system_shared;
  1. Then in your init function, add:
visionset_mgr::register_info("visionset", VISIONSET_NAME, VERSION, PRIORITY, LERP_STEP_COUNT, SHOULD_ACTIVATE_PER_PLAYER);
visionset_mgr::register_info("overlay", POSTFX_NAME, VERSION, PRIORITY, LERP_STEP_COUNT, SHOULD_ACTIVATE_PER_PLAYER);

and replace the values

ValueSummary
VISIONSET_NAMEThe name of the visionset you created
POSTFX_NAMECreate a name for your `postfxbundle` to reference later
VERSIONDoesn't matter, set to 1
PRIORITYNot important, set to 31
LERP_STEP_COUNTLinear interpolation step count, not important, set to 1
SHOULD_ACTIVATE_PER_PLAYERSet to 1
  1. Now, wherever you want to activate a visionset, add:
visionset_mgr::activate("visionset", VISIONSET_NAME, player);
visionset_mgr::activate("overlay", POSTFX_NAME, player);

and wherever you want to deactivate a visionset, add:

visionset_mgr::deactivate("visionset", VISIONSET_NAME, player);
visionset_mgr::deactivate("overlay", POSTFX_NAME, player);
  1. At the top of your .csc, add:
#using scripts\shared\visionset_mgr_shared;
#using scripts\shared\system_shared;
  1. Then in your init function, add:
visionset_mgr::register_visionset_info(VISIONSET_NAME, VERSION, LERP_STEP_COUNT, VISIONSET_FROM, VISIONSET_TO);
visionset_mgr::register_overlay_info_style_postfx_bundle(POSTFX_NAME, VERSION, LERP_STEP_COUNT, BUNDLE, DURATION);

and replace the values

ValueSummary
VISIONSET_NAMEThe name of the visionset you created
POSTFX_NAMEThe name you set for your `postfxbundle`
VERSIONDoesn't matter, set to 1
LERP_STEP_COUNTLinear interpolation step count, not important, set to 1
VISIONSET_FROMTransition from visionset, set to undefined if only one
VISIONSET_TOTransition to visionset, set to VISIONSET_NAME
BUNDLEName of your `postfxbundle` in APE
DURATIONCan be left out
  1. Add to your map zone file:
rawfile,vision/VISION_FILE
scriptbundle,BUNDLE

Replace VISION_FILE with the name of your .vision file you created earlier, and BUNDLE with the name of your postfxbundle in APE