PLAY

Enabling cel shading in custom locations

In 2021, there was an April fools event called “TailSpin”, the main feature of which was not only furry pilots, but also cartoon graphics, more formally known as “cel” or “toon” shading. After the event was over, all content, including the planes and location, was removed from the game client. However, the graphics effect itself can still be turned on.

Archived screenshot by user @NorthyPark

Restrictions:

  • No multiplayer.
  • It is not the mission file responsible for the graphics, but the location file, so the effect will work only on custom locations.
  • Shader only works correctly for planes and helicopters.

To enable the shader, you need to open the custom location file, for example location_sample.blk, and add the following block to it

shader_vars{
  //water_wind 4 0.4 0.4
  max_river_width:r=1500
  ocean_density:r=0.4
  river_density:r=1
  toonshading:b = yes    /* Specifically this line. */
}

Optionally, you can also replace the weather effects preset with a custom one:

weatherPreset:t = "gameData/environments/weather_preset_toon_stylization.blk"

And replace the default skybox with the skybox from the event:

weatherTypes:t = "gameData/environments/weather_types_air_islands.blk"
enableApex:b = yes
mandatoryLandquality:i = 1 
z_far:r = 80000
customLevelMap:t="levels\empty_location_map.jpg"

geo{
  latitude:r=48
  longitude:r=44
  year:i=2019
  month:i=6
  day:i=15
}



mapCoord0:p2 = -20000, -20000 // m
mapCoord1:p2 = 20000, 20000   // m
minAreaSize:p2 = 90000, 90000         // m

aiMapCoord0:p2 = -20000, -20000 // m
aiMapCoord1:p2 = 20000, 20000   // m

numBorderCellsXPos:i = 0
numBorderCellsXNeg:i = 0
numBorderCellsZPos:i = 0
numBorderCellsZNeg:i = 0

mirrorShrinkXPos:r = 0
mirrorShrinkXNeg:r = 0
mirrorShrinkZPos:r = 0
mirrorShrinkZNeg:r = 0

water_level:r=0
levelMapAltOffset:r = 0
vsmAngleThreshold:r = 50//angle, after which vsm disabled. 5degrees - diable evening+, 9degrees - disable morning+, 40 - day+

gridSteps:p2 = 2048, 2048

weatherPreset:t = "gameData/environments/weather_preset_toon_stylization.blk"
weatherTypes:t = "gameData/environments/weather_types_air_islands.blk"

lastclip_horizon:b = yes
earth {
  earthWorldEnabled:b = yes
  earthWorldMin:p2 = -98304, -32768
  earthWorldMax:p2 = 32752, 98304
}

micro_details{
  micro_detail:t=microdetail_stone_a_tex_n*
  micro_detail:t=microdetail_scan_gravel_a_tex_n*
  micro_detail:t=microdetail_sand_a_tex_n*
  micro_detail:t=microdetail_soil_a_tex_n*
  micro_detail:t=microdetail_generic_granules_a_tex_n*
  micro_detail:t=microdetail_grass_a_tex_n*
  micro_detail:t=microdetail_forest_floor_a_tex_n*
  micro_detail:t=microdetail_fabric_a_tex_n
  micro_detail:t=microdetail_wood_b_tex_n
  micro_detail:t=microdetail_metal_a_tex_n*
  micro_detail:t=microdetail_snow_a_tex_n
  micro_detail:t=microdetail_generic_granules_a_tex_n
  land_micro_details_uv_scale:r=0.73
}

shader_vars{
  //water_wind 4 0.4 0.4
  max_river_width:r=1500
  ocean_density:r=0.4
  river_density:r=1
  toonshading:b = yes
}

randomGrass{

  guadalcanal_detailed_colormap:t = "guadalcanal_detailed_colormap_scatter_mask"

  layer{
    maskChannel:p4 = 1, 1, 1, 0
    res:t ="grass_fill_a"
    density:r = 4
    horScale:r = 1.2                      
    horMinScale:r = 0.5
    verScale:r = 1.2
    verMinScale:r = 0.5
    windMul:r = 0.05

    include ":/levels/grass_colors/_grass_color_fill_a.blk"
    include ":/levels/grass_colors/_grass_color_lightness_warm.blk"
  }

  layer{
    maskChannel:p4 = 1, 0, 0, 0
    res:t ="grass_reed_a"
    density:r = 0.5
    horScale:r = 1.2                      
    horMinScale:r = 0.9
    verScale:r = 1.2
    verMinScale:r = 0.9
    windMul:r = 0.05
    radiusMul:r = 0.5

  include ":/levels/grass_colors/_grass_color_reed_a.blk"
  include ":/levels/grass_colors/_grass_color_lightness_warm.blk"
  }

  layer{
    maskChannel:p4 = 0, 1, 0, 0
    res:t ="grass_daisies_a"
    density:r = 1
    horScale:r = 1.2                      
    horMinScale:r = 0.9
    verScale:r = 1.2
    verMinScale:r = 0.9
    windMul:r = 0.05
    radiusMul:r = 0.4

    include ":/levels/grass_colors/_grass_color_daisies_a.blk"
    include ":/levels/grass_colors/_grass_color_lightness_warm.blk"
  }

  layer{
    maskChannel:p4 = 0, 0, 1, 0
    res:t ="grass_heather_a"
    density:r = 2
    horScale:r = 1.2                      
    horMinScale:r = 0.5
    verScale:r = 1.2
    verMinScale:r = 0.5
    windMul:r = 0.05
    radiusMul:r = 0.4

    include ":/levels/grass_colors/_grass_color_heather_a.blk"
    include ":/levels/grass_colors/_grass_color_lightness_warm.blk"
  }

  layer{
    maskChannel:p4 = 0, 1, 0, 0
    res:t ="grass_tulip_a"
    density:r = 4
    horScale:r = 1.2                      
    horMinScale:r = 0.5
    verScale:r = 1.2
    verMinScale:r = 0.5
    windMul:r = 0.05
    radiusMul:r = 0.4

    include ":/levels/grass_colors/_grass_color_tulip_a.blk"
    include ":/levels/grass_colors/_grass_color_lightness_warm.blk"
  }

  layer{
    maskChannel:p4 = 1, 1, 1, 0
    res:t ="grass_sedge_a"
    density:r = 7 
    horScale:r = 1.2                      
    horMinScale:r = 0.9
    verScale:r = 1
    verMinScale:r = 0.5
    windMul:r = 0.05
    radiusMul:r = 0.6

    include ":/levels/grass_colors/_grass_color_simple_a.blk"
    include ":/levels/grass_colors/_grass_color_lightness_warm.blk"
  }

  layer{
    maskChannel:p4 = 1, 1, 0, 0
    res:t ="grass_simple_a"
    density:r = 3 
    horScale:r = 1.2                      
    horMinScale:r = 0.9
    verScale:r = 1
    verMinScale:r = 0.5
    windMul:r = 0.05
    radiusMul:r = 0.7

    include ":/levels/grass_colors/_grass_color_simple_a.blk"
    include ":/levels/grass_colors/_grass_color_lightness_warm.blk"
  }
}
technicsSkins{
  groundSkin:t = "jungle"
  groundSkin:t = "default"
}

I personally think that the fighters look very good with this shading. I hope you will be able to find a use for it…

3 comments
No comments yet
Be the first to write one!
Recommendation feed
We have nothing to recommend you at the moment :(
Go to Main
No more content