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…