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.
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…



