Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
498dc14359 |
5
README.md
Normal file
@@ -0,0 +1,5 @@
|
||||
# minecraft-assets
|
||||
|
||||
This repository contains assets extracted from the Minecraft .jar files and additional downloaded resources (sounds).
|
||||
|
||||
Please use the **branch selector** to switch versions.
|
||||
@@ -1 +0,0 @@
|
||||
{"directories":["assets"],"files":["13w37a.json","version.json"]}
|
||||
@@ -1,16 +0,0 @@
|
||||
_ _ ___ ______ _ _ _____ _ _ _____
|
||||
| | | |/ _ \ | ___ \ \ | |_ _| \ | | __ \
|
||||
| | | / /_\ \| |_/ / \| | | | | \| | | \/
|
||||
| |/\| | _ || /| . ` | | | | . ` | | __
|
||||
\ /\ / | | || |\ \| |\ |_| |_| |\ | |_\ \
|
||||
\/ \/\_| |_/\_| \_\_| \_/\___/\_| \_/\____/
|
||||
|
||||
(Sorry about the cheesy 90s ASCII art.)
|
||||
|
||||
Everything in this folder that does not belong here will be deleted.
|
||||
This folder will be kept sync with the Launcher at every run.
|
||||
If you wish to modify assets/resources in any way, use Resource Packs.
|
||||
|
||||
|
||||
Ta,
|
||||
Dinnerbone of Mojang
|
||||
@@ -1 +0,0 @@
|
||||
{"directories":["icons","lang","minecraft","music","records","sound","sounds"],"files":["READ_ME_I_AM_VERY_IMPORTANT.txt","pack.mcmeta","sounds.json"]}
|
||||
@@ -1 +0,0 @@
|
||||
{"directories":[],"files":["icon_16x16.png","icon_32x32.png","minecraft.icns"]}
|
||||
@@ -1 +0,0 @@
|
||||
{"directories":[],"files":["af_ZA.lang","ar_SA.lang","bg_BG.lang","ca_ES.lang","cs_CZ.lang","cy_GB.lang","da_DK.lang","de_DE.lang","el_GR.lang","en_AU.lang","en_CA.lang","en_GB.lang","en_PT.lang","eo_UY.lang","es_AR.lang","es_ES.lang","es_MX.lang","es_UY.lang","es_VE.lang","et_EE.lang","eu_ES.lang","fa_IR.lang","fi_FI.lang","fil_PH.lang","fr_CA.lang","fr_FR.lang","ga_IE.lang","gl_ES.lang","he_IL.lang","hi_IN.lang","hr_HR.lang","hu_HU.lang","hy_AM.lang","id_ID.lang","is_IS.lang","it_IT.lang","ja_JP.lang","ka_GE.lang","ko_KR.lang","kw_GB.lang","la_LA.lang","lb_LU.lang","lt_LT.lang","lv_LV.lang","ms_MY.lang","mt_MT.lang","nl_NL.lang","nn_NO.lang","no_NO.lang","oc_FR.lang","pl_PL.lang","pt_BR.lang","pt_PT.lang","qya_AA.lang","ro_RO.lang","ru_RU.lang","sk_SK.lang","sl_SI.lang","sr_SP.lang","sv_SE.lang","th_TH.lang","tlh_AA.lang","tr_TR.lang","uk_UA.lang","vi_VN.lang","zh_CN.lang","zh_TW.lang"]}
|
||||
@@ -1 +0,0 @@
|
||||
{"directories":["font","lang","texts","textures"],"files":[]}
|
||||
@@ -1 +0,0 @@
|
||||
{"directories":[],"files":["glyph_sizes.bin"]}
|
||||
@@ -1 +0,0 @@
|
||||
{"directories":[],"files":["en_US.lang"]}
|
||||
@@ -20,6 +20,7 @@ translation.test.invalid2=hi % s
|
||||
translation.test.args=%s %s
|
||||
translation.test.world=world
|
||||
|
||||
menu.game=Game menu
|
||||
menu.singleplayer=Singleplayer
|
||||
menu.multiplayer=Multiplayer
|
||||
menu.online=Minecraft Realms
|
||||
@@ -82,7 +83,7 @@ gameMode.adventure=Adventure Mode
|
||||
gameMode.hardcore=Hardcore Mode!
|
||||
gameMode.changed=Your game mode has been updated
|
||||
|
||||
selectWorld.gameMode=Game Mode:
|
||||
selectWorld.gameMode=Game Mode
|
||||
selectWorld.gameMode.survival=Survival
|
||||
selectWorld.gameMode.survival.line1=Search for resources, crafting, gain
|
||||
selectWorld.gameMode.survival.line2=levels, health and hunger
|
||||
@@ -155,9 +156,15 @@ chat.type.text=<%s> %s
|
||||
chat.type.emote=* %s %s
|
||||
chat.type.announcement=[%s] %s
|
||||
chat.type.admin=[%s: %s]
|
||||
chat.type.achievement=%s has just earned the achievement %s
|
||||
chat.link.confirm=Are you sure you want to open the following website?
|
||||
chat.link.warning=Never open links from people that you don't trust!
|
||||
chat.copy=Copy to Clipboard
|
||||
chat.link.confirmTrusted=Do you want to open this link or copy it to your clipboard?
|
||||
chat.link.open=Open in browser
|
||||
|
||||
chat.stream.text=(%s) <%s> %s
|
||||
chat.stream.emote=(%s) * %s %s
|
||||
|
||||
menu.playdemo=Play Demo World
|
||||
menu.resetdemo=Reset Demo World
|
||||
@@ -194,6 +201,8 @@ disconnect.timeout=Timed out
|
||||
disconnect.closed=Connection closed
|
||||
disconnect.loginFailed=Failed to login
|
||||
disconnect.loginFailedInfo=Failed to login: %s
|
||||
disconnect.loginFailedInfo.serversUnavailable=The authentication are currently down for maintenance.
|
||||
disconnect.loginFailedInfo.invalidSession=Invalid session (Try restarting your game)
|
||||
disconnect.quitting=Quitting
|
||||
disconnect.endOfStream=End of stream
|
||||
disconnect.overflow=Buffer overflow
|
||||
@@ -201,12 +210,15 @@ disconnect.spam=Kicked for spamming
|
||||
|
||||
soundCategory.master=Master Volume
|
||||
soundCategory.music=Music
|
||||
soundCategory.records=Jukebox & Note Blocks
|
||||
soundCategory.record=Jukebox/Noteblocks
|
||||
soundCategory.weather=Weather
|
||||
soundCategory.mobs=Enemy Monsters
|
||||
soundCategory.animals=Friendly Animals
|
||||
soundCategory.players=Players
|
||||
soundCategory.blocks=Blocks & Environment
|
||||
soundCategory.hostile=Hostile Creatures
|
||||
soundCategory.neutral=Friendly Creatures
|
||||
soundCategory.player=Players
|
||||
soundCategory.block=Blocks
|
||||
soundCategory.ambient=Ambient/Environment
|
||||
|
||||
record.nowPlaying=Now playing: %s
|
||||
|
||||
options.off=OFF
|
||||
options.on=ON
|
||||
@@ -216,9 +228,10 @@ options.title=Options
|
||||
options.controls=Controls...
|
||||
options.video=Video Settings...
|
||||
options.language=Language...
|
||||
options.stream=Broadcast Settings...
|
||||
options.sounds=Music & Sounds...
|
||||
options.sounds.title=Music & Sound Options
|
||||
options.languageWarning=Language translations may not be 100% accurate
|
||||
options.languageWarning=Language translations may not be 100%% accurate
|
||||
options.videoTitle=Video Settings
|
||||
options.music=Music
|
||||
options.sound=Sound
|
||||
@@ -226,6 +239,7 @@ options.invertMouse=Invert Mouse
|
||||
options.fov=FOV
|
||||
options.fov.min=Normal
|
||||
options.fov.max=Quake Pro
|
||||
options.saturation=Saturation
|
||||
options.gamma=Brightness
|
||||
options.gamma.min=Moody
|
||||
options.gamma.max=Bright
|
||||
@@ -243,7 +257,8 @@ options.ao.off=OFF
|
||||
options.ao.min=Minimum
|
||||
options.ao.max=Maximum
|
||||
options.anaglyph=3D Anaglyph
|
||||
options.framerateLimit=Performance
|
||||
options.framerateLimit=Max Framerate
|
||||
options.framerateLimit.max=Unlimited
|
||||
options.difficulty=Difficulty
|
||||
options.difficulty.peaceful=Peaceful
|
||||
options.difficulty.easy=Easy
|
||||
@@ -259,7 +274,37 @@ options.guiScale.small=Small
|
||||
options.guiScale.normal=Normal
|
||||
options.guiScale.large=Large
|
||||
options.advancedOpengl=Advanced OpenGL
|
||||
options.fboEnable=Enable FBOs
|
||||
options.postProcessEnable=Enable Post-Processing
|
||||
options.aoDesc0=Enable faux ambient occlusion on blocks.
|
||||
options.aoDesc1=
|
||||
options.framerateLimitDesc0=Selects the maximum frame rate:
|
||||
options.framerateLimitDesc1=35fps, 120fps, or 200+fps.
|
||||
options.viewBobbingDesc0=Enables view-bob when moving.
|
||||
options.viewBobbingDesc1=
|
||||
options.renderCloudsDesc0=Enables the rendering of clouds.
|
||||
options.renderCloudsDesc1=
|
||||
options.graphicsDesc0='Fancy': Enables extra transparency.
|
||||
options.graphicsDesc1='Fast': Suggested for lower-end hardware.
|
||||
options.renderDistanceDesc0=Maximum render distance. Smaller values
|
||||
options.renderDistanceDesc1=run better on lower-end hardware.
|
||||
options.particlesDesc0=Selects the overall amount of particles.
|
||||
options.particlesDesc1=On lower-end hardware, less is better.
|
||||
options.advancedOpenglDesc0=Enables occlusion queries. On AMD and Intel
|
||||
options.advancedOpenglDesc1=hardware, this may decrease performance.
|
||||
options.fboEnableDesc0=Enables the use of Framebuffer Objects.
|
||||
options.fboEnableDesc1=Necessary for certain Minecraft features.
|
||||
options.postProcessEnableDesc0=Enables post-processing. Disabling will
|
||||
options.postProcessEnableDesc1=result in reduction in Awesome Levels.
|
||||
options.renderClouds=Clouds
|
||||
options.qualityButton=Video Quality Settings...
|
||||
options.qualityVideoTitle=Video Quality Settings
|
||||
options.performanceButton=Video Performance Settings...
|
||||
options.performanceVideoTitle=Video Performance Settings
|
||||
options.advancedButton=Advanced Video Settings...
|
||||
options.advancedVideoTitle=Advanced Video Settings
|
||||
options.postButton=Post-Processing Settings...
|
||||
options.postVideoTitle=Post-Processing Settings
|
||||
options.farWarning1=A 64 bit Java installation is recommended
|
||||
options.farWarning2=for 'Far' render distance (you have 32 bit)
|
||||
options.particles=Particles
|
||||
@@ -291,9 +336,41 @@ options.fullscreen=Fullscreen
|
||||
options.vsync=Use VSync
|
||||
options.touchscreen=Touchscreen Mode
|
||||
|
||||
performance.max=Max FPS
|
||||
performance.balanced=Balanced
|
||||
performance.powersaver=Power saver
|
||||
options.mipmapLevels=Mipmap Levels
|
||||
options.anisotropicFiltering=Anisotropic Filtering
|
||||
options.forceUnicodeFont=Force Unicode Font
|
||||
|
||||
options.stream.title=Twitch Broadcast Settings
|
||||
options.stream.bytesPerPixel=Quality
|
||||
options.stream.micVolumne=Mic Volume
|
||||
options.stream.micToggleBehavior=Push To
|
||||
options.stream.mic_toggle.mute=Mute
|
||||
options.stream.mic_toggle.talk=Talk
|
||||
options.stream.systemVolume=System Volume
|
||||
options.stream.kbps=Bandwidth
|
||||
options.stream.fps=Framerate
|
||||
options.stream.sendMetadata=Send Metadata
|
||||
options.stream.compression=Compression
|
||||
options.stream.compression.low=Low
|
||||
options.stream.compression.medium=Medium
|
||||
options.stream.compression.high=High
|
||||
options.stream.estimation=Estimated resolution: %dx%d
|
||||
options.stream.changes=You may need to restart your stream for these changes to take place.
|
||||
options.stream.ingestSelection=Broadcast Server List
|
||||
options.stream.ingest.title=Twitch Broadcast Servers
|
||||
options.stream.ingest.reset=Reset Preference
|
||||
options.stream.chat.title=Twitch Chat Settings
|
||||
options.stream.chat.enabled=Enable
|
||||
options.stream.chat.enabled.streaming=Whilst Streaming
|
||||
options.stream.chat.enabled.always=Always
|
||||
options.stream.chat.enabled.never=Never
|
||||
options.stream.chat.userFilter=User Filter
|
||||
options.stream.chat.userFilter.all=All Viewers
|
||||
options.stream.chat.userFilter.subs=Subscribers
|
||||
options.stream.chat.userFilter.mods=Moderators
|
||||
|
||||
title.oldgl1="Old graphics card detected; this may prevent you from"
|
||||
title.oldgl2="playing in the far future as OpenGL 2.0 will be required."
|
||||
|
||||
controls.title=Controls
|
||||
controls.reset=Reset
|
||||
@@ -318,6 +395,7 @@ key.command=Open Command
|
||||
key.screenshot=Take Screenshot
|
||||
key.togglePerspective=Toggle Perspective
|
||||
key.smoothCamera=Toggle Cinematic Camera
|
||||
key.fullscreen=Toggle Fullscreen
|
||||
key.hotbar.1=Hotbar Slot 1
|
||||
key.hotbar.2=Hotbar Slot 2
|
||||
key.hotbar.3=Hotbar Slot 3
|
||||
@@ -327,6 +405,10 @@ key.hotbar.6=Hotbar Slot 6
|
||||
key.hotbar.7=Hotbar Slot 7
|
||||
key.hotbar.8=Hotbar Slot 8
|
||||
key.hotbar.9=Hotbar Slot 9
|
||||
key.streamStartStop=Start/Stop Stream
|
||||
key.streamPauseUnpause=Pause/Unpause Stream
|
||||
key.streamCommercial=Show Stream Commercials
|
||||
key.streamToggleMic=Push To Talk/Mute
|
||||
|
||||
key.categories.movement=Movement
|
||||
key.categories.misc=Miscellaneous
|
||||
@@ -334,6 +416,7 @@ key.categories.multiplayer=Multiplayer
|
||||
key.categories.gameplay=Gameplay
|
||||
key.categories.ui=Game Interface
|
||||
key.categories.inventory=Inventory
|
||||
key.categories.stream=Streaming
|
||||
|
||||
resourcePack.openFolder=Open resource pack folder
|
||||
resourcePack.title=Select Resource Packs
|
||||
@@ -341,6 +424,8 @@ resourcePack.available.title=Available Resource Packs
|
||||
resourcePack.selected.title=Selected Resource Packs
|
||||
resourcePack.folderInfo=(Place resource pack files here)
|
||||
|
||||
sign.edit=Edit sign message
|
||||
|
||||
book.pageIndicator=Page %1$s of %2$s
|
||||
book.byAuthor=by %1$s
|
||||
book.signButton=Sign
|
||||
@@ -359,15 +444,20 @@ tile.wood.oak.name=Oak Wood Planks
|
||||
tile.wood.spruce.name=Spruce Wood Planks
|
||||
tile.wood.birch.name=Birch Wood Planks
|
||||
tile.wood.jungle.name=Jungle Wood Planks
|
||||
tile.wood.acacia.name=Acacia Wood Planks
|
||||
tile.wood.big_oak.name=Dark Oak Wood Planks
|
||||
tile.sapling.oak.name=Oak Sapling
|
||||
tile.sapling.spruce.name=Spruce Sapling
|
||||
tile.sapling.birch.name=Birch Sapling
|
||||
tile.sapling.jungle.name=Jungle Sapling
|
||||
tile.sapling.acacia.name=Acacia Sapling
|
||||
tile.sapling.roofed_oak.name=Dark Oak Sapling
|
||||
tile.deadbush.name=Dead Bush
|
||||
tile.bedrock.name=Bedrock
|
||||
tile.water.name=Water
|
||||
tile.lava.name=Lava
|
||||
tile.sand.name=Sand
|
||||
tile.sand.default.name=Sand
|
||||
tile.sand.red.name=Red Sand
|
||||
tile.sandStone.name=Sandstone
|
||||
tile.sandStone.default.name=Sandstone
|
||||
tile.sandStone.chiseled.name=Chiseled Sandstone
|
||||
@@ -381,17 +471,55 @@ tile.log.oak.name=Oak Wood
|
||||
tile.log.spruce.name=Spruce Wood
|
||||
tile.log.birch.name=Birch Wood
|
||||
tile.log.jungle.name=Jungle Wood
|
||||
tile.log.acacia.name=Acacia Wood
|
||||
tile.log.big_oak.name=Dark Oak Wood
|
||||
tile.leaves.name=Leaves
|
||||
tile.leaves.oak.name=Oak Leaves
|
||||
tile.leaves.spruce.name=Spruce Leaves
|
||||
tile.leaves.birch.name=Birch Leaves
|
||||
tile.leaves.jungle.name=Jungle Leaves
|
||||
tile.leaves.acacia.name=Acacia Leaves
|
||||
tile.leaves.big_oak.name=Dark Oak Leaves
|
||||
tile.tallgrass.name=Grass
|
||||
tile.tallgrass.shrub.name=Shrub
|
||||
tile.tallgrass.grass.name=Grass
|
||||
tile.tallgrass.fern.name=Fern
|
||||
tile.sponge.name=Sponge
|
||||
tile.glass.name=Glass
|
||||
tile.stainedGlass.name=Stained Glass
|
||||
tile.stainedGlass.black.name=Black Stained Glass
|
||||
tile.stainedGlass.red.name=Red Stained Glass
|
||||
tile.stainedGlass.green.name=Green Stained Glass
|
||||
tile.stainedGlass.brown.name=Brown Stained Glass
|
||||
tile.stainedGlass.blue.name=Blue Stained Glass
|
||||
tile.stainedGlass.purple.name=Purple Stained Glass
|
||||
tile.stainedGlass.cyan.name=Cyan Stained Glass
|
||||
tile.stainedGlass.silver.name=Light Gray Stained Glass
|
||||
tile.stainedGlass.gray.name=Gray Stained Glass
|
||||
tile.stainedGlass.pink.name=Pink Stained Glass
|
||||
tile.stainedGlass.lime.name=Lime Stained Glass
|
||||
tile.stainedGlass.yellow.name=Yellow Stained Glass
|
||||
tile.stainedGlass.lightBlue.name=Light Blue Stained Glass
|
||||
tile.stainedGlass.magenta.name=Magenta Stained Glass
|
||||
tile.stainedGlass.orange.name=Orange Stained Glass
|
||||
tile.stainedGlass.white.name=White Stained Glass
|
||||
tile.thinStainedGlass.name=Stained Glass Pane
|
||||
tile.thinStainedGlass.black.name=Black Stained Glass Pane
|
||||
tile.thinStainedGlass.red.name=Red Stained Glass Pane
|
||||
tile.thinStainedGlass.green.name=Green Stained Glass Pane
|
||||
tile.thinStainedGlass.brown.name=Brown Stained Glass Pane
|
||||
tile.thinStainedGlass.blue.name=Blue Stained Glass Pane
|
||||
tile.thinStainedGlass.purple.name=Purple Stained Glass Pane
|
||||
tile.thinStainedGlass.cyan.name=Cyan Stained Glass Pane
|
||||
tile.thinStainedGlass.silver.name=Light Gray Stained Glass Pane
|
||||
tile.thinStainedGlass.gray.name=Gray Stained Glass Pane
|
||||
tile.thinStainedGlass.pink.name=Pink Stained Glass Pane
|
||||
tile.thinStainedGlass.lime.name=Lime Stained Glass Pane
|
||||
tile.thinStainedGlass.yellow.name=Yellow Stained Glass Pane
|
||||
tile.thinStainedGlass.lightBlue.name=Light Blue Stained Glass Pane
|
||||
tile.thinStainedGlass.magenta.name=Magenta Stained Glass Pane
|
||||
tile.thinStainedGlass.orange.name=Orange Stained Glass Pane
|
||||
tile.thinStainedGlass.white.name=White Stained Glass Pane
|
||||
tile.thinGlass.name=Glass Pane
|
||||
tile.cloth.name=Wool
|
||||
tile.flower1.dandelion.name=Dandelion
|
||||
@@ -425,6 +553,8 @@ tile.woodSlab.oak.name=Oak Wood Slab
|
||||
tile.woodSlab.spruce.name=Spruce Wood Slab
|
||||
tile.woodSlab.birch.name=Birch Wood Slab
|
||||
tile.woodSlab.jungle.name=Jungle Wood Slab
|
||||
tile.woodSlab.acacia.name=Acacia Wood Slab
|
||||
tile.woodSlab.big_oak.name=Dark Oak Wood Slab
|
||||
tile.brick.name=Bricks
|
||||
tile.tnt.name=TNT
|
||||
tile.bookshelf.name=Bookshelf
|
||||
@@ -437,6 +567,8 @@ tile.stairsWood.name=Oak Wood Stairs
|
||||
tile.stairsWoodSpruce.name=Spruce Wood Stairs
|
||||
tile.stairsWoodBirch.name=Birch Wood Stairs
|
||||
tile.stairsWoodJungle.name=Jungle Wood Stairs
|
||||
tile.stairsWoodAcacia.name=Acacia Wood Stairs
|
||||
tile.stairsWoodDarkOak.name=Dark Oak Wood Stairs
|
||||
tile.chest.name=Chest
|
||||
tile.chestTrap.name=Trapped Chest
|
||||
tile.redstoneDust.name=Redstone Dust
|
||||
@@ -703,6 +835,7 @@ item.minecartChest.name=Minecart with Chest
|
||||
item.minecartFurnace.name=Minecart with Furnace
|
||||
item.minecartTnt.name=Minecart with TNT
|
||||
item.minecartHopper.name=Minecart with Hopper
|
||||
item.minecartCommandBlock.name=Minecart with Command Block
|
||||
item.egg.name=Egg
|
||||
item.compass.name=Compass
|
||||
item.fishingRod.name=Fishing Rod
|
||||
@@ -715,6 +848,18 @@ item.fish.clownfish.raw.name=Clownfish
|
||||
item.fish.cod.cooked.name=Cooked Fish
|
||||
item.fish.salmon.cooked.name=Cooked Salmon
|
||||
item.record.name=Music Disc
|
||||
item.record.13.desc=C418 - 13
|
||||
item.record.cat.desc=C418 - cat
|
||||
item.record.blocks.desc=C418 - blocks
|
||||
item.record.chirp.desc=C418 - chirp
|
||||
item.record.far.desc=C418 - far
|
||||
item.record.mall.desc=C418 - mall
|
||||
item.record.mellohi.desc=C418 - mellohi
|
||||
item.record.stal.desc=C418 - stal
|
||||
item.record.strad.desc=C418 - strad
|
||||
item.record.ward.desc=C418 - ward
|
||||
item.record.11.desc=C418 - 11
|
||||
item.record.wait.desc=C418 - wait
|
||||
item.bone.name=Bone
|
||||
item.dyePowder.black.name=Ink Sac
|
||||
item.dyePowder.red.name=Rose Red
|
||||
@@ -1075,6 +1220,8 @@ enchantment.level.10=X
|
||||
gui.achievements=Achievements
|
||||
gui.stats=Statistics
|
||||
|
||||
stats.tooltip.type.achievement=Achievement
|
||||
stats.tooltip.type.statistic=Statistic
|
||||
stat.generalButton=General
|
||||
stat.blocksButton=Blocks
|
||||
stat.itemsButton=Items
|
||||
@@ -1169,6 +1316,8 @@ achievement.snipeSkeleton=Sniper Duel
|
||||
achievement.snipeSkeleton.desc=Kill a skeleton with an arrow from more than 50 meters
|
||||
achievement.diamonds=DIAMONDS!
|
||||
achievement.diamonds.desc=Acquire diamonds with your iron tools
|
||||
achievement.diamondsToYou=Diamonds to you!
|
||||
achievement.diamondsToYou.desc=Throw diamonds at another player.
|
||||
achievement.portal=We Need to Go Deeper
|
||||
achievement.portal.desc=Build a portal to the Nether
|
||||
achievement.ghast=Return to Sender
|
||||
@@ -1208,7 +1357,10 @@ commands.generic.num.tooBig=The number you have entered (%d) is too big, it must
|
||||
commands.generic.double.tooSmall=The number you have entered (%.2f) is too small, it must be at least %.2f
|
||||
commands.generic.double.tooBig=The number you have entered (%.2f) is too big, it must be at most %.2f
|
||||
commands.generic.usage=Usage: %s
|
||||
commands.generic.deprecatedId=Warning: Using numeric IDs will not be supported in the future. Please use names, such as '%s'
|
||||
|
||||
commands.setidletimeout.usage=/setidletimeout <Minutes until kick>
|
||||
commands.setidletimeout.success=Successfully set the idle timeout to %d minutes.
|
||||
commands.xp.failure.widthdrawXp=Cannot give player negative experience points
|
||||
commands.xp.success=Given %d experience to %s
|
||||
commands.xp.success.levels=Given %d levels to %s
|
||||
@@ -1322,7 +1474,7 @@ commands.scoreboard.objectives.setdisplay.invalidSlot=No such display slot '%s'
|
||||
commands.scoreboard.objectives.setdisplay.successCleared=Cleared objective display slot '%s'
|
||||
commands.scoreboard.objectives.setdisplay.successSet=Set the display objective in slot '%s' to '%s'
|
||||
commands.scoreboard.objectives.add.usage=/scoreboard objectives add <name> <criteriaType> [display name ...]
|
||||
commands.scoreboard.objectives.add.wrongType=Invalid objective criteria type. Valid types are: %s
|
||||
commands.scoreboard.objectives.add.wrongType=Invalid objective criteria type '%s'
|
||||
commands.scoreboard.objectives.add.alreadyExists=An objective with the name '%s' already exists
|
||||
commands.scoreboard.objectives.add.tooLong=The name '%s' is too long for an objective, it can be at most %d characters long
|
||||
commands.scoreboard.objectives.add.displayTooLong=The display name '%s' is too long for an objective, it can be at most %d characters long
|
||||
@@ -1399,6 +1551,8 @@ commands.difficulty.usage=/difficulty <new difficulty>
|
||||
commands.difficulty.success=Set game difficulty to %s
|
||||
commands.spawnpoint.usage=/spawnpoint OR /spawnpoint <player> OR /spawnpoint <player> <x> <y> <z>
|
||||
commands.spawnpoint.success=Set %s's spawn point to (%d, %d, %d)
|
||||
commands.setworldspawn.usage=/setworldspawn OR /setworldspawn <x> <y> <z>
|
||||
commands.setworldspawn.success=Set the world spawn point to (%d, %d, %d)
|
||||
commands.gamerule.usage=/gamerule <rule name> <value> OR /gamerule <rule name>
|
||||
commands.gamerule.success=Game rule has been updated
|
||||
commands.gamerule.norule=No game rule called '%s' is available
|
||||
@@ -1422,7 +1576,7 @@ commands.spreadplayers.failure.players=Could not spread %s players around %s,%s
|
||||
commands.achievement.usage=/achievement give <stat_name> [player]
|
||||
commands.achievement.unknownAchievement=Unknown achievement or statistic '%s'
|
||||
commands.achievement.give.success.all=Successfully given all achievements to %s
|
||||
commands.achievement.give.success.one=Successfully given %s the stat '%s'
|
||||
commands.achievement.give.success.one=Successfully given %s the stat %s
|
||||
commands.achievement.statTooLow=Player %s does not have the stat %s
|
||||
|
||||
itemGroup.buildingBlocks=Building Blocks
|
||||
@@ -1460,11 +1614,15 @@ mco.terms.title=Realms Terms of Service
|
||||
mco.terms.sentence.1=I agree to Minecraft Realms
|
||||
mco.terms.sentence.2=Terms of Service
|
||||
|
||||
mco.buy.realms.title=Buy a Realm
|
||||
mco.buy.realms.buy=I want one!
|
||||
|
||||
mco.selectServer.play=Play
|
||||
mco.selectServer.configure=Configure
|
||||
mco.selectServer.leave=Leave Realm
|
||||
mco.selectServer.create=Create Realm
|
||||
mco.selectServer.moreinfo=More Info
|
||||
mco.selectServer.buy=Buy Realm
|
||||
mco.selectServer.whatisrealms=What is Realms?
|
||||
|
||||
mco.selectServer.expired=Expired Server
|
||||
mco.selectServer.open=Open Server
|
||||
@@ -1482,7 +1640,7 @@ mco.configure.world.name=Name
|
||||
mco.configure.world.description=Description
|
||||
mco.configure.world.location=Location
|
||||
mco.configure.world.invited=Invited
|
||||
mco.configure.world.buttons.edit=Edit
|
||||
mco.configure.world.buttons.edit=Edit Settings...
|
||||
mco.configure.world.buttons.reset=Reset Realm
|
||||
mco.configure.world.buttons.done=Done
|
||||
mco.configure.world.buttons.delete=Delete
|
||||
@@ -1499,7 +1657,8 @@ mco.configure.world.status=Status
|
||||
mco.configure.world.subscription.title=Subscription Info
|
||||
mco.configure.world.subscription.daysleft=Days Left
|
||||
mco.configure.world.subscription.start=Start Date
|
||||
mco.configure.world.subscription.extend=Extend
|
||||
mco.configure.world.subscription.extend=Extend Subscription
|
||||
mco.configure.world.subscription.extendHere=Extend subscription here:
|
||||
|
||||
mco.create.world.location.title=Locations
|
||||
mco.create.world.location.warning=You may not get the exact location you select
|
||||
@@ -1520,9 +1679,15 @@ mco.configure.world.leave.question.line2=Are you sure you want to do that?
|
||||
mco.configure.world.reset.question.line1=Your realm will be regenerated and your current realm will be lost
|
||||
mco.configure.world.reset.question.line2=Are you sure you want to do that?
|
||||
|
||||
mco.configure.world.restore.question.line1=Your realm will be restored to a previous version
|
||||
mco.configure.world.restore.question.line1=Your realm will be restored to date
|
||||
mco.configure.world.restore.question.line2=Are you sure you want to do that?
|
||||
|
||||
mco.configure.world.restore.download.question.line1=You will be redirected to your default browser to download your world map.
|
||||
mco.configure.world.restore.download.question.line2=Do you want to continue?
|
||||
|
||||
mco.more.info.question.line1=You will be redirected to your default browser to see the page.
|
||||
mco.more.info.question.line2=Do you want to continue?
|
||||
|
||||
mco.connect.connecting=Connecting to the online server...
|
||||
mco.connect.authorizing=Logging in...
|
||||
mco.connect.failed=Failed to connect to the online server
|
||||
@@ -1546,6 +1711,7 @@ mco.invites.button.accept=Accept
|
||||
mco.invites.button.reject=Reject
|
||||
mco.invites.title=Pending Invitations
|
||||
mco.invites.pending=New invitations!
|
||||
mco.invites.nopending=No pending invitations!
|
||||
|
||||
build.tooHigh=Height limit for building is %s blocks
|
||||
|
||||
@@ -1566,3 +1732,55 @@ attribute.name.generic.attackDamage=Attack Damage
|
||||
|
||||
screenshot.success=Saved screenshot as %s
|
||||
screenshot.failure=Couldn't save screenshot: %s
|
||||
|
||||
stream.user.mode.moderator=Moderator
|
||||
stream.user.mode.moderator.self=Moderator on your channel
|
||||
stream.user.mode.moderator.other=Moderator on %s's channel
|
||||
stream.user.mode.broadcaster=Broadcaster
|
||||
stream.user.mode.broadcaster.self=Broadcaster (You!)
|
||||
stream.user.mode.broadcaster.other=Broadcaster
|
||||
stream.user.mode.administrator=Twitch Administrator
|
||||
stream.user.mode.staff=Twitch Staff
|
||||
stream.user.mode.banned=Banned
|
||||
stream.user.mode.banned.self=Banned on your channel
|
||||
stream.user.mode.banned.other=Banned on %s's channel
|
||||
stream.user.subscription.subscriber=Subscriber
|
||||
stream.user.subscription.subscriber.self=Subscriber to your channel
|
||||
stream.user.subscription.subscriber.other=Subscriber to %s's channel
|
||||
stream.user.subscription.turbo=Twitch Turbo
|
||||
|
||||
stream.unavailable.title=Twitch Broadcasting Unavailable
|
||||
stream.unavailable.report_to_mojang=Report to Mojang
|
||||
|
||||
stream.unavailable.account_not_bound=Before you can broadcast Minecraft through Twitch, you will need to link your Twitch account on mojang.com. Would you like to do that now?
|
||||
stream.unavailable.account_not_bound.okay=Link Accounts
|
||||
stream.unavailable.account_not_migrated=Before you can broadcast Minecraft through Twitch, you will need to migrate your Minecraft account to a Mojang account. Would you like to do that now?
|
||||
stream.unavailable.account_not_migrated.okay=Migrate Account
|
||||
stream.unavailable.failed_auth=Authentication to Twitch failed. Please go to mojang.com and rebind your Twitch account.
|
||||
stream.unavailable.failed_auth.okay=Rebind Accounts
|
||||
stream.unavailable.failed_auth_error=Unable to authenticate to Twitch. Please try again later.
|
||||
stream.unavailable.initialization_failure=Unable to initialize the Twitch SDK.
|
||||
stream.unavailable.initialization_failure.extra=(Reason: %s)
|
||||
stream.unavailable.library_arch_mismatch=The custom java version used to launch Minecraft has a different architecture than the one used to run the launcher. Please make sure these are the same, either 32-bit or 64-bit for both.
|
||||
stream.unavailable.library_failure=Unable to load the libraries needed for the integrated Twitch broadcasting service.
|
||||
stream.unavailable.no_fbo=Your video card needs to support at least OpenGL version 3.0 or support Framebuffer Objects via an extension to use the integrated Twitch broadcasting.
|
||||
stream.unavailable.no_fbo.version=You are currently using: %s
|
||||
stream.unavailable.no_fbo.blend=Separate blending support via EXT is: %s
|
||||
stream.unavailable.no_fbo.arb=Framebuffer object support via ARB is: %s
|
||||
stream.unavailable.no_fbo.ext=Framebuffer object support via EXT is: %s
|
||||
stream.unavailable.not_supported.windows=Unfortunately the integrated Twitch broadcasting requires a newer version of Windows than you are on. You must have at least Windows Vista or newer.
|
||||
stream.unavailable.not_supported.mac=Unfortunately the integrated Twitch broadcasting on Mac requires a version of OSX newer than the one you are on. You must use 10.7 (Mac OS X Lion) or newer to be able to use this service. Would you like to visit apple.com to learn about upgrading?
|
||||
stream.unavailable.not_supported.mac.okay=Upgrade
|
||||
stream.unavailable.not_supported.other=Unfortunately the integrated Twitch broadcasting service requires Windows (Vista or newer) or Mac OS X (10.7/Lion or newer)
|
||||
stream.unavailable.unknown=Unfortunately you cannot broadcast to Twitch at this time. And we don't know why :'(
|
||||
stream.unavailable.unknown.chat=Could not start stream: %s
|
||||
|
||||
stream.unavailable.soundflower.chat=Soundflower is required to be able to stream on Mac. %s
|
||||
stream.unavailable.soundflower.chat.link=Please click here to install it.
|
||||
|
||||
stream.userinfo.chatTooltip=Click to manage user
|
||||
stream.userinfo.timeout=Timeout
|
||||
stream.userinfo.ban=Ban
|
||||
stream.userinfo.unban=Unban
|
||||
stream.userinfo.mod=Promote to Moderator
|
||||
stream.userinfo.unmod=Demote from Moderator
|
||||
17
assets/minecraft/shaders/post/antialias.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"targets": [
|
||||
"swap"
|
||||
],
|
||||
"passes": [
|
||||
{
|
||||
"name": "antialias",
|
||||
"intarget": "minecraft:main",
|
||||
"outtarget": "swap"
|
||||
},
|
||||
{
|
||||
"name": "blit",
|
||||
"intarget": "swap",
|
||||
"outtarget": "minecraft:main"
|
||||
}
|
||||
]
|
||||
}
|
||||
64
assets/minecraft/shaders/post/art.json
Normal file
@@ -0,0 +1,64 @@
|
||||
{
|
||||
"targets": [
|
||||
"0",
|
||||
"1"
|
||||
],
|
||||
"passes": [
|
||||
{
|
||||
"name": "blobs2",
|
||||
"intarget": "minecraft:main",
|
||||
"outtarget": "0"
|
||||
},
|
||||
{
|
||||
"name": "outline_watercolor",
|
||||
"intarget": "0",
|
||||
"outtarget": "minecraft:main"
|
||||
},
|
||||
{
|
||||
"name": "blur",
|
||||
"intarget": "minecraft:main",
|
||||
"outtarget": "1",
|
||||
"uniforms": [
|
||||
{
|
||||
"name": "BlurDir",
|
||||
"values": [ 0.8, 0.0 ]
|
||||
},
|
||||
{
|
||||
"name": "Radius",
|
||||
"values": [ 20.0 ]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "blur",
|
||||
"intarget": "1",
|
||||
"outtarget": "minecraft:main",
|
||||
"uniforms": [
|
||||
{
|
||||
"name": "BlurDir",
|
||||
"values": [ 0.0, 0.8 ]
|
||||
},
|
||||
{
|
||||
"name": "Radius",
|
||||
"values": [ 20.0 ]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "outline_combine",
|
||||
"intarget": "0",
|
||||
"outtarget": "1",
|
||||
"auxtargets": [
|
||||
{
|
||||
"name": "OutlineSampler",
|
||||
"id": "minecraft:main"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "blit",
|
||||
"intarget": "1",
|
||||
"outtarget": "minecraft:main"
|
||||
}
|
||||
]
|
||||
}
|
||||
17
assets/minecraft/shaders/post/bits.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"targets": [
|
||||
"swap"
|
||||
],
|
||||
"passes": [
|
||||
{
|
||||
"name": "bits",
|
||||
"intarget": "minecraft:main",
|
||||
"outtarget": "swap"
|
||||
},
|
||||
{
|
||||
"name": "blit",
|
||||
"intarget": "swap",
|
||||
"outtarget": "minecraft:main"
|
||||
}
|
||||
]
|
||||
}
|
||||
17
assets/minecraft/shaders/post/blobs.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"targets": [
|
||||
"swap"
|
||||
],
|
||||
"passes": [
|
||||
{
|
||||
"name": "blobs",
|
||||
"intarget": "minecraft:main",
|
||||
"outtarget": "swap"
|
||||
},
|
||||
{
|
||||
"name": "blit",
|
||||
"intarget": "swap",
|
||||
"outtarget": "minecraft:main"
|
||||
}
|
||||
]
|
||||
}
|
||||
17
assets/minecraft/shaders/post/blobs2.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"targets": [
|
||||
"swap"
|
||||
],
|
||||
"passes": [
|
||||
{
|
||||
"name": "blobs2",
|
||||
"intarget": "minecraft:main",
|
||||
"outtarget": "swap"
|
||||
},
|
||||
{
|
||||
"name": "blit",
|
||||
"intarget": "swap",
|
||||
"outtarget": "minecraft:main"
|
||||
}
|
||||
]
|
||||
}
|
||||
37
assets/minecraft/shaders/post/blur.json
Normal file
@@ -0,0 +1,37 @@
|
||||
{
|
||||
"targets": [
|
||||
"swap"
|
||||
],
|
||||
"passes": [
|
||||
{
|
||||
"name": "blur",
|
||||
"intarget": "minecraft:main",
|
||||
"outtarget": "swap",
|
||||
"uniforms": [
|
||||
{
|
||||
"name": "BlurDir",
|
||||
"values": [ 1.0, 0.0 ]
|
||||
},
|
||||
{
|
||||
"name": "Radius",
|
||||
"values": [ 20.0 ]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "blur",
|
||||
"intarget": "swap",
|
||||
"outtarget": "minecraft:main",
|
||||
"uniforms": [
|
||||
{
|
||||
"name": "BlurDir",
|
||||
"values": [ 0.0, 1.0 ]
|
||||
},
|
||||
{
|
||||
"name": "Radius",
|
||||
"values": [ 20.0 ]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
17
assets/minecraft/shaders/post/bumpy.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"targets": [
|
||||
"swap"
|
||||
],
|
||||
"passes": [
|
||||
{
|
||||
"name": "bumpy",
|
||||
"intarget": "minecraft:main",
|
||||
"outtarget": "swap"
|
||||
},
|
||||
{
|
||||
"name": "blit",
|
||||
"intarget": "swap",
|
||||
"outtarget": "minecraft:main"
|
||||
}
|
||||
]
|
||||
}
|
||||
20
assets/minecraft/shaders/post/color_convolve.json
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"targets": [
|
||||
"swap"
|
||||
],
|
||||
"passes": [
|
||||
{
|
||||
"name": "color_convolve",
|
||||
"intarget": "minecraft:main",
|
||||
"outtarget": "swap",
|
||||
"uniforms": [
|
||||
{ "name": "Saturation", "values": [ 1.4 ] }
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "blit",
|
||||
"intarget": "swap",
|
||||
"outtarget": "minecraft:main"
|
||||
}
|
||||
]
|
||||
}
|
||||
17
assets/minecraft/shaders/post/deconverge.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"targets": [
|
||||
"swap"
|
||||
],
|
||||
"passes": [
|
||||
{
|
||||
"name": "deconverge",
|
||||
"intarget": "minecraft:main",
|
||||
"outtarget": "swap"
|
||||
},
|
||||
{
|
||||
"name": "blit",
|
||||
"intarget": "swap",
|
||||
"outtarget": "minecraft:main"
|
||||
}
|
||||
]
|
||||
}
|
||||
23
assets/minecraft/shaders/post/desaturate.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"targets": [
|
||||
"swap"
|
||||
],
|
||||
"passes": [
|
||||
{
|
||||
"name": "color_convolve",
|
||||
"intarget": "minecraft:main",
|
||||
"outtarget": "swap",
|
||||
"uniforms": [
|
||||
{
|
||||
"name": "Saturation",
|
||||
"values": [ 0.2 ]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "blit",
|
||||
"intarget": "swap",
|
||||
"outtarget": "minecraft:main"
|
||||
}
|
||||
]
|
||||
}
|
||||
17
assets/minecraft/shaders/post/flip.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"targets": [
|
||||
"swap"
|
||||
],
|
||||
"passes": [
|
||||
{
|
||||
"name": "flip",
|
||||
"intarget": "minecraft:main",
|
||||
"outtarget": "swap"
|
||||
},
|
||||
{
|
||||
"name": "blit",
|
||||
"intarget": "swap",
|
||||
"outtarget": "minecraft:main"
|
||||
}
|
||||
]
|
||||
}
|
||||
17
assets/minecraft/shaders/post/fxaa.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"targets": [
|
||||
"swap"
|
||||
],
|
||||
"passes": [
|
||||
{
|
||||
"name": "fxaa",
|
||||
"intarget": "minecraft:main",
|
||||
"outtarget": "swap"
|
||||
},
|
||||
{
|
||||
"name": "blit",
|
||||
"intarget": "swap",
|
||||
"outtarget": "minecraft:main"
|
||||
}
|
||||
]
|
||||
}
|
||||
41
assets/minecraft/shaders/post/green.json
Normal file
@@ -0,0 +1,41 @@
|
||||
{
|
||||
"targets": [
|
||||
"swap"
|
||||
],
|
||||
"passes": [
|
||||
{
|
||||
"name": "color_convolve",
|
||||
"intarget": "minecraft:main",
|
||||
"outtarget": "swap",
|
||||
"uniforms": [
|
||||
{
|
||||
"name": "RedMatrix",
|
||||
"values": [ 0.0, 0.0, 0.0 ]
|
||||
},
|
||||
{
|
||||
"name": "GreenMatrix",
|
||||
"values": [ 0.3, 0.59, 0.11 ]
|
||||
},
|
||||
{
|
||||
"name": "BlueMatrix",
|
||||
"values": [ 0.0, 0.0, 0.0 ]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "bits",
|
||||
"intarget": "swap",
|
||||
"outtarget": "minecraft:main"
|
||||
},
|
||||
{
|
||||
"name": "scan_pincushion",
|
||||
"intarget": "minecraft:main",
|
||||
"outtarget": "swap"
|
||||
},
|
||||
{
|
||||
"name": "blit",
|
||||
"intarget": "swap",
|
||||
"outtarget": "minecraft:main"
|
||||
}
|
||||
]
|
||||
}
|
||||
23
assets/minecraft/shaders/post/invert.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"targets": [
|
||||
"swap"
|
||||
],
|
||||
"passes": [
|
||||
{
|
||||
"name": "invert",
|
||||
"intarget": "minecraft:main",
|
||||
"outtarget": "swap",
|
||||
"uniforms": [
|
||||
{
|
||||
"name": "InverseAmount",
|
||||
"values": [ 0.8 ]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "blit",
|
||||
"intarget": "swap",
|
||||
"outtarget": "minecraft:main"
|
||||
}
|
||||
]
|
||||
}
|
||||
26
assets/minecraft/shaders/post/notch.json
Normal file
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"targets": [
|
||||
"swap"
|
||||
],
|
||||
"passes": [
|
||||
{
|
||||
"name": "notch",
|
||||
"intarget": "minecraft:main",
|
||||
"outtarget": "swap",
|
||||
"auxtargets": [
|
||||
{
|
||||
"name": "DitherSampler",
|
||||
"id": "dither",
|
||||
"width": 4,
|
||||
"height": 4,
|
||||
"bilinear": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "blit",
|
||||
"intarget": "swap",
|
||||
"outtarget": "minecraft:main"
|
||||
}
|
||||
]
|
||||
}
|
||||
92
assets/minecraft/shaders/post/ntsc.json
Normal file
@@ -0,0 +1,92 @@
|
||||
{
|
||||
"targets": [
|
||||
"swap",
|
||||
"swap2",
|
||||
"previous"
|
||||
],
|
||||
"passes": [
|
||||
{
|
||||
"name": "ntsc_encode",
|
||||
"intarget": "minecraft:main",
|
||||
"outtarget": "swap"
|
||||
},
|
||||
{
|
||||
"name": "ntsc_decode",
|
||||
"intarget": "swap",
|
||||
"outtarget": "swap2",
|
||||
"auxtargets": [
|
||||
{
|
||||
"name": "BaseSampler",
|
||||
"id": "minecraft:main"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "color_convolve",
|
||||
"intarget": "swap2",
|
||||
"outtarget": "swap"
|
||||
},
|
||||
{
|
||||
"name": "deconverge",
|
||||
"intarget": "swap",
|
||||
"outtarget": "minecraft:main"
|
||||
},
|
||||
{
|
||||
"name": "blur",
|
||||
"intarget": "minecraft:main",
|
||||
"outtarget": "swap",
|
||||
"uniforms": [
|
||||
{
|
||||
"name": "BlurDir",
|
||||
"values": [ 1.0, 0.0 ]
|
||||
},
|
||||
{
|
||||
"name": "Radius",
|
||||
"values": [ 10.0 ]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "blur",
|
||||
"intarget": "swap",
|
||||
"outtarget": "minecraft:main",
|
||||
"uniforms": [
|
||||
{
|
||||
"name": "BlurDir",
|
||||
"values": [ 0.0, 1.0 ]
|
||||
},
|
||||
{
|
||||
"name": "Radius",
|
||||
"values": [ 10.0 ]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "scan_pincushion",
|
||||
"intarget": "minecraft:main",
|
||||
"outtarget": "swap"
|
||||
},
|
||||
{
|
||||
"name": "phosphor",
|
||||
"intarget": "swap",
|
||||
"outtarget": "minecraft:main",
|
||||
"auxtargets": [
|
||||
{
|
||||
"name": "PrevSampler",
|
||||
"id": "previous"
|
||||
}
|
||||
],
|
||||
"uniforms": [
|
||||
{
|
||||
"name": "Phosphor",
|
||||
"values": [ 0.4, 0.4, 0.4 ]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "blit",
|
||||
"intarget": "minecraft:main",
|
||||
"outtarget": "previous"
|
||||
}
|
||||
]
|
||||
}
|
||||
17
assets/minecraft/shaders/post/outline.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"targets": [
|
||||
"swap"
|
||||
],
|
||||
"passes": [
|
||||
{
|
||||
"name": "outline",
|
||||
"intarget": "minecraft:main",
|
||||
"outtarget": "swap"
|
||||
},
|
||||
{
|
||||
"name": "blit",
|
||||
"intarget": "swap",
|
||||
"outtarget": "minecraft:main"
|
||||
}
|
||||
]
|
||||
}
|
||||
17
assets/minecraft/shaders/post/pencil.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"targets": [
|
||||
"swap"
|
||||
],
|
||||
"passes": [
|
||||
{
|
||||
"name": "outline_soft",
|
||||
"intarget": "minecraft:main",
|
||||
"outtarget": "swap"
|
||||
},
|
||||
{
|
||||
"name": "blit",
|
||||
"intarget": "swap",
|
||||
"outtarget": "minecraft:main"
|
||||
}
|
||||
]
|
||||
}
|
||||
35
assets/minecraft/shaders/post/phosphor.json
Normal file
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"targets": [
|
||||
"swap",
|
||||
"previous"
|
||||
],
|
||||
"passes": [
|
||||
{
|
||||
"name": "phosphor",
|
||||
"intarget": "minecraft:main",
|
||||
"outtarget": "swap",
|
||||
"auxtargets": [
|
||||
{
|
||||
"name": "PrevSampler",
|
||||
"id": "previous"
|
||||
}
|
||||
],
|
||||
"uniforms": [
|
||||
{
|
||||
"name": "Phosphor",
|
||||
"values": [ 0.95, 0.95, 0.95 ]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "blit",
|
||||
"intarget": "swap",
|
||||
"outtarget": "previous"
|
||||
},
|
||||
{
|
||||
"name": "blit",
|
||||
"intarget": "swap",
|
||||
"outtarget": "minecraft:main"
|
||||
}
|
||||
]
|
||||
}
|
||||
17
assets/minecraft/shaders/post/scan_pincushion.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"targets": [
|
||||
"swap"
|
||||
],
|
||||
"passes": [
|
||||
{
|
||||
"name": "scan_pincushion",
|
||||
"intarget": "minecraft:main",
|
||||
"outtarget": "swap"
|
||||
},
|
||||
{
|
||||
"name": "blit",
|
||||
"intarget": "swap",
|
||||
"outtarget": "minecraft:main"
|
||||
}
|
||||
]
|
||||
}
|
||||
17
assets/minecraft/shaders/post/sobel.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"targets": [
|
||||
"swap"
|
||||
],
|
||||
"passes": [
|
||||
{
|
||||
"name": "sobel",
|
||||
"intarget": "minecraft:main",
|
||||
"outtarget": "swap"
|
||||
},
|
||||
{
|
||||
"name": "blit",
|
||||
"intarget": "swap",
|
||||
"outtarget": "minecraft:main"
|
||||
}
|
||||
]
|
||||
}
|
||||
17
assets/minecraft/shaders/post/wobble.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"targets": [
|
||||
"swap"
|
||||
],
|
||||
"passes": [
|
||||
{
|
||||
"name": "wobble",
|
||||
"intarget": "minecraft:main",
|
||||
"outtarget": "swap"
|
||||
},
|
||||
{
|
||||
"name": "blit",
|
||||
"intarget": "swap",
|
||||
"outtarget": "minecraft:main"
|
||||
}
|
||||
]
|
||||
}
|
||||
29
assets/minecraft/shaders/program/antialias.fsh
Normal file
@@ -0,0 +1,29 @@
|
||||
#version 120
|
||||
|
||||
uniform sampler2D DiffuseSampler;
|
||||
|
||||
varying vec2 texCoord;
|
||||
varying vec2 oneTexel;
|
||||
|
||||
void main(){
|
||||
vec4 c = texture2D (DiffuseSampler, texCoord);
|
||||
vec4 u1 = texture2D (DiffuseSampler, texCoord + vec2 ( 0.0, -oneTexel.y ));
|
||||
vec4 u2 = texture2D (DiffuseSampler, texCoord + vec2 ( 0.0, -oneTexel.y * 2.0));
|
||||
vec4 d1 = texture2D (DiffuseSampler, texCoord + vec2 ( 0.0, oneTexel.y ));
|
||||
vec4 d2 = texture2D (DiffuseSampler, texCoord + vec2 ( 0.0, oneTexel.y * 2.0));
|
||||
vec4 l1 = texture2D (DiffuseSampler, texCoord + vec2 (-oneTexel.x, 0.0));
|
||||
vec4 l2 = texture2D (DiffuseSampler, texCoord + vec2 (-oneTexel.x * 2.0, 0.0));
|
||||
vec4 r1 = texture2D (DiffuseSampler, texCoord + vec2 ( oneTexel.x, 0.0));
|
||||
vec4 r2 = texture2D (DiffuseSampler, texCoord + vec2 ( oneTexel.x * 2.0, 0.0));
|
||||
|
||||
vec4 v1 = mix (c, mix (l1, l2, 0.667), 0.75);
|
||||
vec4 v2 = mix (c, mix (r1, r2, 0.667), 0.75);
|
||||
vec4 v3 = mix (c, mix (u1, u2, 0.667), 0.75);
|
||||
vec4 v4 = mix (c, mix (d1, d2, 0.667), 0.75);
|
||||
|
||||
vec4 v5 = mix (v1, v2, 0.5);
|
||||
vec4 v6 = mix (v3, v4, 0.5);
|
||||
|
||||
vec4 color = mix (v5, v6, 0.5);
|
||||
gl_FragColor = vec4(color.rgb, c.a);
|
||||
}
|
||||
18
assets/minecraft/shaders/program/antialias.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"blend": {
|
||||
"func": "add",
|
||||
"srcrgb": "one",
|
||||
"dstrgb": "zero"
|
||||
},
|
||||
"vertex": "blobs",
|
||||
"fragment": "antialias",
|
||||
"attributes": [ "Position" ],
|
||||
"samplers": [
|
||||
{ "name": "DiffuseSampler" }
|
||||
],
|
||||
"uniforms": [
|
||||
{ "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] },
|
||||
{ "name": "InSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] },
|
||||
{ "name": "OutSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] }
|
||||
]
|
||||
}
|
||||
26
assets/minecraft/shaders/program/bits.fsh
Normal file
@@ -0,0 +1,26 @@
|
||||
#version 120
|
||||
|
||||
uniform sampler2D DiffuseSampler;
|
||||
|
||||
varying vec2 texCoord;
|
||||
varying vec2 oneTexel;
|
||||
|
||||
uniform vec2 InSize;
|
||||
|
||||
uniform float Resolution = 4.0;
|
||||
uniform float Saturation = 1.5;
|
||||
uniform float MosaicSize = 8.0;
|
||||
|
||||
void main() {
|
||||
vec2 mosaicInSize = InSize / MosaicSize;
|
||||
vec2 fractPix = fract(texCoord * mosaicInSize) / mosaicInSize;
|
||||
|
||||
vec4 baseTexel = texture2D(DiffuseSampler, texCoord - fractPix);
|
||||
|
||||
baseTexel = baseTexel - fract(baseTexel * Resolution) / Resolution;
|
||||
float luma = dot(baseTexel.rgb, vec3(0.3, 0.59, 0.11));
|
||||
vec3 chroma = (baseTexel.rgb - luma) * Saturation;
|
||||
baseTexel = vec4(luma + chroma, baseTexel.a);
|
||||
|
||||
gl_FragColor = baseTexel;
|
||||
}
|
||||
21
assets/minecraft/shaders/program/bits.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"blend": {
|
||||
"func": "add",
|
||||
"srcrgb": "one",
|
||||
"dstrgb": "zero"
|
||||
},
|
||||
"vertex": "sobel",
|
||||
"fragment": "bits",
|
||||
"attributes": [ "Position" ],
|
||||
"samplers": [
|
||||
{ "name": "DiffuseSampler" }
|
||||
],
|
||||
"uniforms": [
|
||||
{ "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] },
|
||||
{ "name": "InSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] },
|
||||
{ "name": "OutSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] },
|
||||
{ "name": "Resolution", "type": "float", "count": 1, "values": [ 4.0 ] },
|
||||
{ "name": "Saturation", "type": "float", "count": 1, "values": [ 1.5 ] },
|
||||
{ "name": "MosaicSize", "type": "float", "count": 1, "values": [ 8.0 ] }
|
||||
]
|
||||
}
|
||||
9
assets/minecraft/shaders/program/blit.fsh
Normal file
@@ -0,0 +1,9 @@
|
||||
#version 120
|
||||
|
||||
uniform sampler2D DiffuseSampler;
|
||||
|
||||
varying vec2 texCoord;
|
||||
|
||||
void main(){
|
||||
gl_FragColor = texture2D(DiffuseSampler, texCoord);
|
||||
}
|
||||
17
assets/minecraft/shaders/program/blit.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"blend": {
|
||||
"func": "add",
|
||||
"srcrgb": "one",
|
||||
"dstrgb": "zero"
|
||||
},
|
||||
"vertex": "blit",
|
||||
"fragment": "blit",
|
||||
"attributes": [ "Position" ],
|
||||
"samplers": [
|
||||
{ "name": "DiffuseSampler" }
|
||||
],
|
||||
"uniforms": [
|
||||
{ "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] },
|
||||
{ "name": "OutSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] }
|
||||
]
|
||||
}
|
||||
16
assets/minecraft/shaders/program/blit.vsh
Normal file
@@ -0,0 +1,16 @@
|
||||
#version 120
|
||||
|
||||
attribute vec4 Position;
|
||||
|
||||
uniform mat4 ProjMat;
|
||||
uniform vec2 OutSize;
|
||||
|
||||
varying vec2 texCoord;
|
||||
|
||||
void main(){
|
||||
vec4 outPos = ProjMat * vec4(Position.xy, 0.0, 1.0);
|
||||
gl_Position = vec4(outPos.xy, 0.2, 1.0);
|
||||
|
||||
texCoord = Position.xy / OutSize;
|
||||
texCoord.y = 1.0 - texCoord.y;
|
||||
}
|
||||
43
assets/minecraft/shaders/program/blobs.fsh
Normal file
@@ -0,0 +1,43 @@
|
||||
#version 120
|
||||
|
||||
uniform sampler2D DiffuseSampler;
|
||||
|
||||
varying vec2 texCoord;
|
||||
varying vec2 oneTexel;
|
||||
|
||||
void main(){
|
||||
vec4 u = texture2D(DiffuseSampler, texCoord + vec2( 0.0, -oneTexel.y));
|
||||
vec4 d = texture2D(DiffuseSampler, texCoord + vec2( 0.0, oneTexel.y));
|
||||
vec4 l = texture2D(DiffuseSampler, texCoord + vec2(-oneTexel.x, 0.0));
|
||||
vec4 r = texture2D(DiffuseSampler, texCoord + vec2( oneTexel.x, 0.0));
|
||||
|
||||
vec4 v1 = min(l, r);
|
||||
vec4 v2 = min(u, d);
|
||||
vec4 v3 = min(v1, v2);
|
||||
|
||||
vec4 ul = texture2D(DiffuseSampler, texCoord + vec2(-oneTexel.x, -oneTexel.y));
|
||||
vec4 dr = texture2D(DiffuseSampler, texCoord + vec2( oneTexel.x, oneTexel.y));
|
||||
vec4 dl = texture2D(DiffuseSampler, texCoord + vec2(-oneTexel.x, oneTexel.y));
|
||||
vec4 ur = texture2D(DiffuseSampler, texCoord + vec2( oneTexel.x, -oneTexel.y));
|
||||
|
||||
vec4 v4 = min(ul, dr);
|
||||
vec4 v5 = min(ur, dl);
|
||||
vec4 v6 = min(v4, v5);
|
||||
|
||||
vec4 v7 = min(v3, v6);
|
||||
|
||||
vec4 uu = texture2D(DiffuseSampler, texCoord + vec2( 0.0, -oneTexel.y * 2.0));
|
||||
vec4 dd = texture2D(DiffuseSampler, texCoord + vec2( 0.0, oneTexel.y * 2.0));
|
||||
vec4 ll = texture2D(DiffuseSampler, texCoord + vec2(-oneTexel.x * 2.0, 0.0));
|
||||
vec4 rr = texture2D(DiffuseSampler, texCoord + vec2( oneTexel.x * 2.0, 0.0));
|
||||
|
||||
vec4 v8 = min(uu, dd);
|
||||
vec4 v9 = min(ll, rr);
|
||||
vec4 v10 = min(v8, v9);
|
||||
|
||||
vec4 v11 = min(v7, v10);
|
||||
|
||||
vec4 c = texture2D(DiffuseSampler, texCoord);
|
||||
vec4 color = min(c, v11);
|
||||
gl_FragColor = vec4(color.rgb, c.a);
|
||||
}
|
||||
18
assets/minecraft/shaders/program/blobs.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"blend": {
|
||||
"func": "add",
|
||||
"srcrgb": "one",
|
||||
"dstrgb": "zero"
|
||||
},
|
||||
"vertex": "blobs",
|
||||
"fragment": "blobs",
|
||||
"attributes": [ "Position" ],
|
||||
"samplers": [
|
||||
{ "name": "DiffuseSampler" }
|
||||
],
|
||||
"uniforms": [
|
||||
{ "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] },
|
||||
{ "name": "InSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] },
|
||||
{ "name": "OutSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] }
|
||||
]
|
||||
}
|
||||
17
assets/minecraft/shaders/program/blobs.vsh
Normal file
@@ -0,0 +1,17 @@
|
||||
#version 120
|
||||
|
||||
attribute vec4 Position;
|
||||
|
||||
uniform mat4 ProjMat;
|
||||
uniform vec2 InSize;
|
||||
|
||||
varying vec2 texCoord;
|
||||
varying vec2 oneTexel;
|
||||
|
||||
void main(){
|
||||
vec4 outPos = ProjMat * vec4(Position.xy, 0.0, 1.0);
|
||||
gl_Position = vec4(outPos.xy, 0.2, 1.0);
|
||||
|
||||
oneTexel = 1.0 / InSize;
|
||||
texCoord = outPos.xy * 0.5 + 0.5;
|
||||
}
|
||||
30
assets/minecraft/shaders/program/blobs2.fsh
Normal file
@@ -0,0 +1,30 @@
|
||||
#version 120
|
||||
|
||||
uniform sampler2D DiffuseSampler;
|
||||
|
||||
varying vec2 texCoord;
|
||||
varying vec2 oneTexel;
|
||||
|
||||
uniform float Radius;
|
||||
|
||||
void main(){
|
||||
vec4 c = texture2D(DiffuseSampler, texCoord);
|
||||
vec4 maxVal = c;
|
||||
for(float u = 0.0; u <= Radius; u += 1.0) {
|
||||
for(float v = 0.0; v <= Radius; v += 1.0) {
|
||||
float weight = (((sqrt(u * u + v * v) / (Radius)) > 1.0) ? 0.0 : 1.0);
|
||||
|
||||
vec4 s0 = texture2D(DiffuseSampler, texCoord + vec2(-u * oneTexel.x, -v * oneTexel.y));
|
||||
vec4 s1 = texture2D(DiffuseSampler, texCoord + vec2( u * oneTexel.x, v * oneTexel.y));
|
||||
vec4 s2 = texture2D(DiffuseSampler, texCoord + vec2(-u * oneTexel.x, v * oneTexel.y));
|
||||
vec4 s3 = texture2D(DiffuseSampler, texCoord + vec2( u * oneTexel.x, -v * oneTexel.y));
|
||||
|
||||
vec4 o0 = max(s0, s1);
|
||||
vec4 o1 = max(s2, s3);
|
||||
vec4 tempMax = max(o0, o1);
|
||||
maxVal = mix(maxVal, max(maxVal, tempMax), weight);
|
||||
}
|
||||
}
|
||||
|
||||
gl_FragColor = vec4(maxVal.rgb, c.a);
|
||||
}
|
||||
18
assets/minecraft/shaders/program/blobs2.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"blend": {
|
||||
"func": "add",
|
||||
"srcrgb": "one",
|
||||
"dstrgb": "zero"
|
||||
},
|
||||
"vertex": "blobs",
|
||||
"fragment": "blobs2",
|
||||
"attributes": [ "Position" ],
|
||||
"samplers": [
|
||||
{ "name": "DiffuseSampler" }
|
||||
],
|
||||
"uniforms": [
|
||||
{ "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] },
|
||||
{ "name": "InSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] },
|
||||
{ "name": "Radius", "type": "float", "count": 1, "values": [ 7.0 ] }
|
||||
]
|
||||
}
|
||||
19
assets/minecraft/shaders/program/bloom.json
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"blend": {
|
||||
"func": "add",
|
||||
"srcrgb": "one",
|
||||
"dstrgb": "zero"
|
||||
},
|
||||
"vertex": "sobel",
|
||||
"fragment": "phosphor",
|
||||
"attributes": [ "Position" ],
|
||||
"samplers": [
|
||||
{ "name": "DiffuseSampler" },
|
||||
{ "name": "CycleSampler" }
|
||||
],
|
||||
"uniforms": [
|
||||
{ "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] },
|
||||
{ "name": "InSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] },
|
||||
{ "name": "OutSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] }
|
||||
]
|
||||
}
|
||||
23
assets/minecraft/shaders/program/blur.fsh
Normal file
@@ -0,0 +1,23 @@
|
||||
#version 120
|
||||
|
||||
uniform sampler2D DiffuseSampler;
|
||||
|
||||
varying vec2 texCoord;
|
||||
varying vec2 oneTexel;
|
||||
|
||||
uniform vec2 InSize;
|
||||
|
||||
uniform vec2 BlurDir;
|
||||
uniform float Radius;
|
||||
|
||||
void main() {
|
||||
vec4 blurred = vec4(0.0);
|
||||
float totalStrength = 0.0;
|
||||
for(float r = -Radius; r <= Radius; r += 1.0) {
|
||||
float strength = abs(1.0 - r / Radius);
|
||||
strength = strength * strength;
|
||||
totalStrength = totalStrength + strength;
|
||||
blurred = blurred + texture2D(DiffuseSampler, texCoord + oneTexel * r * BlurDir) * strength;
|
||||
}
|
||||
gl_FragColor = vec4(blurred.rgb / totalStrength, texture2D(DiffuseSampler, texCoord).a);
|
||||
}
|
||||
20
assets/minecraft/shaders/program/blur.json
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"blend": {
|
||||
"func": "add",
|
||||
"srcrgb": "one",
|
||||
"dstrgb": "zero"
|
||||
},
|
||||
"vertex": "sobel",
|
||||
"fragment": "blur",
|
||||
"attributes": [ "Position" ],
|
||||
"samplers": [
|
||||
{ "name": "DiffuseSampler" }
|
||||
],
|
||||
"uniforms": [
|
||||
{ "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] },
|
||||
{ "name": "InSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] },
|
||||
{ "name": "OutSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] },
|
||||
{ "name": "BlurDir", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] },
|
||||
{ "name": "Radius", "type": "float", "count": 1, "values": [ 5.0 ] }
|
||||
]
|
||||
}
|
||||
34
assets/minecraft/shaders/program/bumpy.fsh
Normal file
@@ -0,0 +1,34 @@
|
||||
#version 120
|
||||
|
||||
uniform sampler2D DiffuseSampler;
|
||||
|
||||
varying vec2 texCoord;
|
||||
varying vec2 oneTexel;
|
||||
|
||||
void main(){
|
||||
vec4 c = texture2D(DiffuseSampler, texCoord);
|
||||
vec4 u = texture2D(DiffuseSampler, texCoord + vec2( 0.0, -oneTexel.y));
|
||||
vec4 d = texture2D(DiffuseSampler, texCoord + vec2( 0.0, oneTexel.y));
|
||||
vec4 l = texture2D(DiffuseSampler, texCoord + vec2(-oneTexel.x, 0.0));
|
||||
vec4 r = texture2D(DiffuseSampler, texCoord + vec2( oneTexel.x, 0.0));
|
||||
|
||||
vec4 nc = normalize(c);
|
||||
vec4 nu = normalize(u);
|
||||
vec4 nd = normalize(d);
|
||||
vec4 nl = normalize(l);
|
||||
vec4 nr = normalize(r);
|
||||
|
||||
float du = dot(nc, nu);
|
||||
float dd = dot(nc, nd);
|
||||
float dl = dot(nc, nl);
|
||||
float dr = dot(nc, nr);
|
||||
|
||||
float i = 64.0;
|
||||
|
||||
float f = 1.0;
|
||||
f += (du * i) - (dd * i);
|
||||
f += (dr * i) - (dl * i);
|
||||
|
||||
vec4 color = c * clamp(f, 0.5, 2);
|
||||
gl_FragColor = vec4(color.rgb, c.a);
|
||||
}
|
||||
18
assets/minecraft/shaders/program/bumpy.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"blend": {
|
||||
"func": "add",
|
||||
"srcrgb": "one",
|
||||
"dstrgb": "zero"
|
||||
},
|
||||
"vertex": "bumpy",
|
||||
"fragment": "bumpy",
|
||||
"attributes": [ "Position" ],
|
||||
"samplers": [
|
||||
{ "name": "DiffuseSampler" }
|
||||
],
|
||||
"uniforms": [
|
||||
{ "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] },
|
||||
{ "name": "InSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] },
|
||||
{ "name": "OutSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] }
|
||||
]
|
||||
}
|
||||
17
assets/minecraft/shaders/program/bumpy.vsh
Normal file
@@ -0,0 +1,17 @@
|
||||
#version 120
|
||||
|
||||
attribute vec4 Position;
|
||||
|
||||
uniform mat4 ProjMat;
|
||||
uniform vec2 InSize;
|
||||
|
||||
varying vec2 texCoord;
|
||||
varying vec2 oneTexel;
|
||||
|
||||
void main(){
|
||||
vec4 outPos = ProjMat * vec4(Position.xy, 0.0, 1.0);
|
||||
gl_Position = vec4(outPos.xy, 0.2, 1.0);
|
||||
|
||||
oneTexel = 1.0 / InSize;
|
||||
texCoord = outPos.xy * 0.5 + 0.5;
|
||||
}
|
||||
36
assets/minecraft/shaders/program/color_convolve.fsh
Normal file
@@ -0,0 +1,36 @@
|
||||
#version 120
|
||||
|
||||
uniform sampler2D DiffuseSampler;
|
||||
|
||||
varying vec2 texCoord;
|
||||
varying vec2 oneTexel;
|
||||
|
||||
uniform vec2 InSize;
|
||||
|
||||
uniform vec3 Gray = vec3(0.3, 0.59, 0.11);
|
||||
uniform vec3 RedMatrix = vec3(1.0, 0.0, 0.0);
|
||||
uniform vec3 GreenMatrix = vec3(0.0, 1.0, 0.0);
|
||||
uniform vec3 BlueMatrix = vec3(0.0, 0.0, 1.0);
|
||||
uniform vec3 Offset = vec3(0.0, 0.0, 0.0);
|
||||
uniform vec3 ColorScale = vec3(1.0, 1.0, 1.0);
|
||||
uniform float Saturation = 1.8;
|
||||
|
||||
void main() {
|
||||
vec4 InTexel = texture2D(DiffuseSampler, texCoord);
|
||||
|
||||
// Color Matrix
|
||||
float RedValue = dot(InTexel.rgb, RedMatrix);
|
||||
float GreenValue = dot(InTexel.rgb, GreenMatrix);
|
||||
float BlueValue = dot(InTexel.rgb, BlueMatrix);
|
||||
vec3 OutColor = vec3(RedValue, GreenValue, BlueValue);
|
||||
|
||||
// Offset & Scale
|
||||
OutColor = (OutColor * ColorScale) + Offset;
|
||||
|
||||
// Saturation
|
||||
float Luma = dot(OutColor, Gray);
|
||||
vec3 Chroma = OutColor - Luma;
|
||||
OutColor = (Chroma * Saturation) + Luma;
|
||||
|
||||
gl_FragColor = vec4(OutColor, InTexel.a);
|
||||
}
|
||||
25
assets/minecraft/shaders/program/color_convolve.json
Normal file
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"blend": {
|
||||
"func": "add",
|
||||
"srcrgb": "one",
|
||||
"dstrgb": "zero"
|
||||
},
|
||||
"vertex": "sobel",
|
||||
"fragment": "color_convolve",
|
||||
"attributes": [ "Position" ],
|
||||
"samplers": [
|
||||
{ "name": "DiffuseSampler" }
|
||||
],
|
||||
"uniforms": [
|
||||
{ "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] },
|
||||
{ "name": "InSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] },
|
||||
{ "name": "OutSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] },
|
||||
{ "name": "Gray", "type": "float", "count": 3, "values": [ 0.3, 0.59, 0.11 ] },
|
||||
{ "name": "RedMatrix", "type": "float", "count": 3, "values": [ 1.0, 0.0, 0.0 ] },
|
||||
{ "name": "GreenMatrix", "type": "float", "count": 3, "values": [ 0.0, 1.0, 0.0 ] },
|
||||
{ "name": "BlueMatrix", "type": "float", "count": 3, "values": [ 0.0, 0.0, 1.0 ] },
|
||||
{ "name": "Offset", "type": "float", "count": 3, "values": [ 0.0, 0.0, 0.0 ] },
|
||||
{ "name": "ColorScale", "type": "float", "count": 3, "values": [ 1.0, 1.0, 1.0 ] },
|
||||
{ "name": "Saturation", "type": "float", "count": 1, "values": [ 1.8 ] }
|
||||
]
|
||||
}
|
||||
28
assets/minecraft/shaders/program/deconverge.fsh
Normal file
@@ -0,0 +1,28 @@
|
||||
#version 120
|
||||
|
||||
uniform sampler2D DiffuseSampler;
|
||||
|
||||
varying vec2 texCoord;
|
||||
varying vec2 oneTexel;
|
||||
|
||||
uniform vec2 InSize;
|
||||
|
||||
uniform vec3 ConvergeX = vec3(-1.0, 0.0, 0.5);
|
||||
uniform vec3 ConvergeY = vec3( 0.0, -1.0, 0.5);
|
||||
uniform vec3 RadialConvergeX = vec3(1.0, 1.0, 1.0);
|
||||
uniform vec3 RadialConvergeY = vec3(1.0, 1.0, 1.0);
|
||||
|
||||
void main() {
|
||||
vec3 CoordX = texCoord.x * RadialConvergeX;
|
||||
vec3 CoordY = texCoord.y * RadialConvergeY;
|
||||
|
||||
CoordX += ConvergeX * oneTexel.x - (RadialConvergeX - 1.0) * 0.5;
|
||||
CoordY += ConvergeY * oneTexel.y - (RadialConvergeY - 1.0) * 0.5;
|
||||
|
||||
float RedValue = texture2D(DiffuseSampler, vec2(CoordX.x, CoordY.x)).r;
|
||||
float GreenValue = texture2D(DiffuseSampler, vec2(CoordX.y, CoordY.y)).g;
|
||||
float BlueValue = texture2D(DiffuseSampler, vec2(CoordX.z, CoordY.z)).b;
|
||||
float AlphaValue = texture2D(DiffuseSampler, texCoord).a;
|
||||
|
||||
gl_FragColor = vec4(RedValue, GreenValue, BlueValue, AlphaValue);
|
||||
}
|
||||
22
assets/minecraft/shaders/program/deconverge.json
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"blend": {
|
||||
"func": "add",
|
||||
"srcrgb": "one",
|
||||
"dstrgb": "zero"
|
||||
},
|
||||
"vertex": "sobel",
|
||||
"fragment": "deconverge",
|
||||
"attributes": [ "Position" ],
|
||||
"samplers": [
|
||||
{ "name": "DiffuseSampler" }
|
||||
],
|
||||
"uniforms": [
|
||||
{ "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] },
|
||||
{ "name": "InSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] },
|
||||
{ "name": "OutSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] },
|
||||
{ "name": "ConvergeX", "type": "float", "count": 3, "values": [ -4.0, 0.0, 2.0 ] },
|
||||
{ "name": "ConvergeY", "type": "float", "count": 3, "values": [ 0.0, -4.0, 2.0 ] },
|
||||
{ "name": "RadialConvergeX", "type": "float", "count": 3, "values": [ 1.0, 1.0, 1.0 ] },
|
||||
{ "name": "RadialConvergeY", "type": "float", "count": 3, "values": [ 1.0, 1.0, 1.0 ] }
|
||||
]
|
||||
}
|
||||
17
assets/minecraft/shaders/program/downscale.fsh
Normal file
@@ -0,0 +1,17 @@
|
||||
#version 120
|
||||
|
||||
uniform sampler2D DiffuseSampler;
|
||||
|
||||
varying vec2 texCoord;
|
||||
varying vec2 oneTexel;
|
||||
|
||||
uniform vec2 InSize;
|
||||
|
||||
void main() {
|
||||
vec3 Texel0 = texture2D(DiffuseSampler, texCoord).rgb;
|
||||
vec3 Texel1 = texture2D(DiffuseSampler, texCoord + vec2(oneTexel.x, 0.0)).rgb;
|
||||
vec3 Texel2 = texture2D(DiffuseSampler, texCoord + vec2(0.0, oneTexel.y)).rgb;
|
||||
vec3 Texel3 = texture2D(DiffuseSampler, texCoord + oneTexel).rgb;
|
||||
|
||||
gl_FragColor = vec4((Texel0 + Texel1 + Texel2 + Texel3) * 0.25, Texel0.a);
|
||||
}
|
||||
18
assets/minecraft/shaders/program/downscale.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"blend": {
|
||||
"func": "add",
|
||||
"srcrgb": "one",
|
||||
"dstrgb": "zero"
|
||||
},
|
||||
"vertex": "downscale",
|
||||
"fragment": "downscale",
|
||||
"attributes": [ "Position" ],
|
||||
"samplers": [
|
||||
{ "name": "DiffuseSampler" }
|
||||
],
|
||||
"uniforms": [
|
||||
{ "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] },
|
||||
{ "name": "InSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] },
|
||||
{ "name": "OutSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] }
|
||||
]
|
||||
}
|
||||
19
assets/minecraft/shaders/program/downscale.vsh
Normal file
@@ -0,0 +1,19 @@
|
||||
#version 120
|
||||
|
||||
attribute vec4 Position;
|
||||
|
||||
uniform mat4 ProjMat;
|
||||
uniform vec2 InSize;
|
||||
uniform vec2 OutSize;
|
||||
|
||||
varying vec2 texCoord;
|
||||
varying vec2 oneTexel;
|
||||
|
||||
void main(){
|
||||
vec4 outPos = ProjMat * vec4(Position.xy, 0.0, 1.0);
|
||||
gl_Position = vec4(outPos.xy, 0.2, 1.0);
|
||||
|
||||
oneTexel = 1.0 / InSize;
|
||||
texCoord = outPos.xy * 0.5 + 0.5;
|
||||
texCoord.y = 1.0 - texCoord.y;
|
||||
}
|
||||
19
assets/minecraft/shaders/program/flip.json
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"blend": {
|
||||
"func": "add",
|
||||
"srcrgb": "one",
|
||||
"dstrgb": "zero"
|
||||
},
|
||||
"vertex": "flip",
|
||||
"fragment": "blit",
|
||||
"attributes": [ "Position" ],
|
||||
"samplers": [
|
||||
{ "name": "DiffuseSampler" }
|
||||
],
|
||||
"uniforms": [
|
||||
{ "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] },
|
||||
{ "name": "InSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] },
|
||||
{ "name": "OutSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] },
|
||||
{ "name": "ScreenSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] }
|
||||
]
|
||||
}
|
||||
22
assets/minecraft/shaders/program/flip.vsh
Normal file
@@ -0,0 +1,22 @@
|
||||
#version 120
|
||||
|
||||
attribute vec4 Position;
|
||||
|
||||
uniform mat4 ProjMat;
|
||||
uniform vec2 InSize;
|
||||
uniform vec2 OutSize;
|
||||
uniform vec2 ScreenSize;
|
||||
|
||||
varying vec2 texCoord;
|
||||
|
||||
void main(){
|
||||
vec4 outPos = ProjMat * vec4(Position.xy, 0.0, 1.0);
|
||||
gl_Position = vec4(outPos.xy, 0.2, 1.0);
|
||||
|
||||
vec2 inOutRatio = OutSize / InSize;
|
||||
vec2 inScreenRatio = ScreenSize / InSize;
|
||||
texCoord = Position.xy / OutSize;
|
||||
texCoord.x = texCoord.x * inOutRatio.x;
|
||||
texCoord.y = texCoord.y * inOutRatio.y;
|
||||
texCoord.y -= 1.0 - inScreenRatio.y;
|
||||
}
|
||||
84
assets/minecraft/shaders/program/fxaa.fsh
Normal file
@@ -0,0 +1,84 @@
|
||||
#extension GL_EXT_gpu_shader4 : enable
|
||||
|
||||
uniform sampler2D DiffuseSampler;
|
||||
uniform vec2 OutSize;
|
||||
|
||||
uniform float VxOffset;
|
||||
uniform float SpanMax;
|
||||
uniform float ReduceMul;
|
||||
|
||||
varying vec2 texCoord;
|
||||
varying vec4 posPos;
|
||||
|
||||
#define FxaaTex(t, p) texture2D(t, p)
|
||||
|
||||
#if __VERSION__ >= 130
|
||||
#define OffsetVec(a, b) ivec2(a, b)
|
||||
#define FxaaTexOff(t, p, o, r) textureOffset(t, p, o)
|
||||
#elif defined(GL_EXT_gpu_shader4)
|
||||
#define OffsetVec(a, b) ivec2(a, b)
|
||||
#define FxaaTexOff(t, p, o, r) texture2DLodOffset(t, p, 0.0, o)
|
||||
#else
|
||||
#define OffsetVec(a, b) vec2(a, b)
|
||||
#define FxaaTexOff(t, p, o, r) texture2D(t, p + o * r)
|
||||
#endif
|
||||
|
||||
vec3 FxaaPixelShader(
|
||||
vec4 posPos, // Output of FxaaVertexShader interpolated across screen.
|
||||
sampler2D tex, // Input texture.
|
||||
vec2 rcpFrame) // Constant {1.0/frameWidth, 1.0/frameHeight}.
|
||||
{
|
||||
|
||||
#define FXAA_REDUCE_MIN (1.0/128.0)
|
||||
//#define FXAA_REDUCE_MUL (1.0/8.0)
|
||||
//#define FXAA_SPAN_MAX 8.0
|
||||
|
||||
vec3 rgbNW = FxaaTex(tex, posPos.zw).xyz;
|
||||
vec3 rgbNE = FxaaTexOff(tex, posPos.zw, OffsetVec(1,0), rcpFrame.xy).xyz;
|
||||
vec3 rgbSW = FxaaTexOff(tex, posPos.zw, OffsetVec(0,1), rcpFrame.xy).xyz;
|
||||
vec3 rgbSE = FxaaTexOff(tex, posPos.zw, OffsetVec(1,1), rcpFrame.xy).xyz;
|
||||
|
||||
vec3 rgbM = FxaaTex(tex, posPos.xy).xyz;
|
||||
|
||||
vec3 luma = vec3(0.299, 0.587, 0.114);
|
||||
float lumaNW = dot(rgbNW, luma);
|
||||
float lumaNE = dot(rgbNE, luma);
|
||||
float lumaSW = dot(rgbSW, luma);
|
||||
float lumaSE = dot(rgbSE, luma);
|
||||
float lumaM = dot(rgbM, luma);
|
||||
|
||||
float lumaMin = min(lumaM, min(min(lumaNW, lumaNE), min(lumaSW, lumaSE)));
|
||||
float lumaMax = max(lumaM, max(max(lumaNW, lumaNE), max(lumaSW, lumaSE)));
|
||||
|
||||
vec2 dir;
|
||||
dir.x = -((lumaNW + lumaNE) - (lumaSW + lumaSE));
|
||||
dir.y = ((lumaNW + lumaSW) - (lumaNE + lumaSE));
|
||||
|
||||
float dirReduce = max(
|
||||
(lumaNW + lumaNE + lumaSW + lumaSE) * (0.25 * ReduceMul),
|
||||
FXAA_REDUCE_MIN);
|
||||
float rcpDirMin = 1.0/(min(abs(dir.x), abs(dir.y)) + dirReduce);
|
||||
dir = min(vec2( SpanMax, SpanMax),
|
||||
max(vec2(-SpanMax, -SpanMax),
|
||||
dir * rcpDirMin)) * rcpFrame.xy;
|
||||
|
||||
vec3 rgbA = (1.0/2.0) * (
|
||||
FxaaTex(tex, posPos.xy + dir * vec2(1.0/3.0 - 0.5)).xyz +
|
||||
FxaaTex(tex, posPos.xy + dir * vec2(2.0/3.0 - 0.5)).xyz);
|
||||
vec3 rgbB = rgbA * (1.0/2.0) + (1.0/4.0) * (
|
||||
FxaaTex(tex, posPos.xy + dir * vec2(0.0/3.0 - 0.5)).xyz +
|
||||
FxaaTex(tex, posPos.xy + dir * vec2(3.0/3.0 - 0.5)).xyz);
|
||||
|
||||
float lumaB = dot(rgbB, luma);
|
||||
|
||||
if ((lumaB < lumaMin) || (lumaB > lumaMax)) {
|
||||
return rgbA;
|
||||
} else {
|
||||
return rgbB;
|
||||
}
|
||||
}
|
||||
|
||||
void main() {
|
||||
vec4 baseTexel = texture2D(DiffuseSampler, posPos.xy);
|
||||
gl_FragColor = vec4(FxaaPixelShader(posPos, DiffuseSampler, 1.0 / OutSize), baseTexel.a);
|
||||
}
|
||||
20
assets/minecraft/shaders/program/fxaa.json
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"blend": {
|
||||
"func": "add",
|
||||
"srcrgb": "one",
|
||||
"dstrgb": "zero"
|
||||
},
|
||||
"vertex": "fxaa",
|
||||
"fragment": "fxaa",
|
||||
"attributes": [ "Position" ],
|
||||
"samplers": [
|
||||
{ "name": "DiffuseSampler" }
|
||||
],
|
||||
"uniforms": [
|
||||
{ "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] },
|
||||
{ "name": "OutSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] },
|
||||
{ "name": "SpanMax", "type": "float", "count": 1, "values": [ 8.0 ] },
|
||||
{ "name": "SubPixelShift", "type": "float", "count": 1, "values": [ 0.25 ] },
|
||||
{ "name": "ReduceMul", "type": "float", "count": 1, "values": [ 0.125 ] }
|
||||
]
|
||||
}
|
||||
21
assets/minecraft/shaders/program/fxaa.vsh
Normal file
@@ -0,0 +1,21 @@
|
||||
#version 120
|
||||
|
||||
attribute vec4 Position;
|
||||
|
||||
uniform mat4 ProjMat;
|
||||
uniform vec2 OutSize;
|
||||
|
||||
uniform float SubPixelShift;
|
||||
|
||||
varying vec2 texCoord;
|
||||
varying vec4 posPos;
|
||||
|
||||
void main() {
|
||||
vec4 outPos = ProjMat * vec4(Position.xy, 0.0, 1.0);
|
||||
gl_Position = vec4(outPos.xy, 0.2, 1.0);
|
||||
|
||||
texCoord = Position.xy / OutSize;
|
||||
texCoord.y = 1.0 - texCoord.y;
|
||||
posPos.xy = texCoord.xy;
|
||||
posPos.zw = texCoord.xy - (1.0/OutSize * vec2(0.5 + SubPixelShift));
|
||||
}
|
||||
14
assets/minecraft/shaders/program/invert.fsh
Normal file
@@ -0,0 +1,14 @@
|
||||
#version 120
|
||||
|
||||
uniform sampler2D DiffuseSampler;
|
||||
|
||||
varying vec2 texCoord;
|
||||
|
||||
uniform float InverseAmount;
|
||||
|
||||
void main(){
|
||||
vec4 diffuseColor = texture2D(DiffuseSampler, texCoord);
|
||||
vec4 invertColor = 1.0 - diffuseColor;
|
||||
vec4 outColor = mix(diffuseColor, invertColor, InverseAmount);
|
||||
gl_FragColor = vec4(outColor.rgb, diffuseColor.a);
|
||||
}
|
||||
19
assets/minecraft/shaders/program/invert.json
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"blend": {
|
||||
"func": "add",
|
||||
"srcrgb": "one",
|
||||
"dstrgb": "zero"
|
||||
},
|
||||
"vertex": "blit",
|
||||
"fragment": "invert",
|
||||
"attributes": [ "Position" ],
|
||||
"samplers": [
|
||||
{ "name": "DiffuseSampler" }
|
||||
],
|
||||
"uniforms": [
|
||||
{ "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] },
|
||||
{ "name": "InSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] },
|
||||
{ "name": "OutSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] },
|
||||
{ "name": "InverseAmount", "type": "float", "count": 1, "values": [ 0.0 ] }
|
||||
]
|
||||
}
|
||||
20
assets/minecraft/shaders/program/invert.vsh
Normal file
@@ -0,0 +1,20 @@
|
||||
#version 120
|
||||
|
||||
attribute vec4 Position;
|
||||
|
||||
uniform mat4 ProjMat;
|
||||
uniform vec2 InSize;
|
||||
uniform vec2 OutSize;
|
||||
|
||||
varying vec2 texCoord;
|
||||
|
||||
void main(){
|
||||
vec4 outPos = ProjMat * vec4(Position.xy, 0.0, 1.0);
|
||||
gl_Position = vec4(outPos.xy, 0.2, 1.0);
|
||||
|
||||
vec2 sizeRatio = OutSize / InSize;
|
||||
texCoord = Position.xy / OutSize;
|
||||
texCoord.x = texCoord.x * sizeRatio.x;
|
||||
texCoord.y = texCoord.y * sizeRatio.y;
|
||||
texCoord.y = sizeRatio.y - texCoord.y;
|
||||
}
|
||||
23
assets/minecraft/shaders/program/notch.fsh
Normal file
@@ -0,0 +1,23 @@
|
||||
#version 120
|
||||
|
||||
uniform sampler2D DiffuseSampler;
|
||||
uniform sampler2D DitherSampler;
|
||||
|
||||
varying vec2 texCoord;
|
||||
|
||||
uniform vec2 InSize;
|
||||
|
||||
void main() {
|
||||
vec2 halfSize = InSize * 0.5;
|
||||
|
||||
vec2 steppedCoord = texCoord;
|
||||
steppedCoord.x = float(int(steppedCoord.x*halfSize.x)) / halfSize.x;
|
||||
steppedCoord.y = float(int(steppedCoord.y*halfSize.y)) / halfSize.y;
|
||||
|
||||
vec4 noise = texture2D(DitherSampler, steppedCoord * halfSize / 4.0);
|
||||
vec4 col = texture2D(DiffuseSampler, steppedCoord) + noise * vec4(1.0/12.0, 1.0/12.0, 1.0/6.0, 1.0);
|
||||
float r = float(int(col.r*8.0))/8.0;
|
||||
float g = float(int(col.g*8.0))/8.0;
|
||||
float b = float(int(col.b*4.0))/4.0;
|
||||
gl_FragColor = vec4(r, g, b, col.a);
|
||||
}
|
||||
19
assets/minecraft/shaders/program/notch.json
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"blend": {
|
||||
"func": "add",
|
||||
"srcrgb": "one",
|
||||
"dstrgb": "zero"
|
||||
},
|
||||
"vertex": "sobel",
|
||||
"fragment": "notch",
|
||||
"attributes": [ "Position" ],
|
||||
"samplers": [
|
||||
{ "name": "DiffuseSampler" },
|
||||
{ "name": "DitherSampler" }
|
||||
],
|
||||
"uniforms": [
|
||||
{ "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] },
|
||||
{ "name": "InSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] },
|
||||
{ "name": "OutSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] }
|
||||
]
|
||||
}
|
||||
132
assets/minecraft/shaders/program/ntsc_decode.fsh
Normal file
@@ -0,0 +1,132 @@
|
||||
#version 120
|
||||
|
||||
uniform sampler2D DiffuseSampler;
|
||||
uniform sampler2D BaseSampler;
|
||||
|
||||
varying vec2 texCoord;
|
||||
varying vec2 oneTexel;
|
||||
|
||||
uniform vec2 InSize;
|
||||
|
||||
const vec4 Zero = vec4(0.0);
|
||||
const vec4 One = vec4(1.0);
|
||||
|
||||
const float Pi = 3.1415926535;
|
||||
const float Pi2 = 6.283185307;
|
||||
|
||||
const vec4 A2 = vec4(1.0);
|
||||
const vec4 B = vec4(0.5);
|
||||
const float P = 1.0;
|
||||
const float CCFrequency = 3.59754545;
|
||||
const float NotchWidth = 2.0;
|
||||
const float NotchUpperFrequency = 3.59754545 + NotchWidth;
|
||||
const float NotchLowerFrequency = 3.59754545 - NotchWidth;
|
||||
const float YFrequency = 6.0;
|
||||
const float IFrequency = 1.2;
|
||||
const float QFrequency = 0.6;
|
||||
const float ScanTime = 52.6;
|
||||
const vec3 YIQ2R = vec3(1.0, 0.956, 0.621);
|
||||
const vec3 YIQ2G = vec3(1.0, -0.272, -0.647);
|
||||
const vec3 YIQ2B = vec3(1.0, -1.106, 1.703);
|
||||
const vec4 MinC = vec4(-1.1183);
|
||||
const vec4 CRange = vec4(3.2366);
|
||||
const float Pi2Length = Pi2 / 83.0;
|
||||
const vec4 NotchOffset = vec4(0.0, 1.0, 2.0, 3.0);
|
||||
const vec4 W = vec4(Pi2 * CCFrequency * ScanTime);
|
||||
|
||||
void main() {
|
||||
vec4 YAccum = Zero;
|
||||
vec4 IAccum = Zero;
|
||||
vec4 QAccum = Zero;
|
||||
float QuadXSize = InSize.x * 4.0;
|
||||
float TimePerSample = ScanTime / QuadXSize;
|
||||
|
||||
// Frequency cutoffs for the individual portions of the signal that we extract.
|
||||
// Y1 and Y2 are the positive and negative frequency limits of the notch filter on Y.
|
||||
// Y3 is the center of the frequency response of the Y filter.
|
||||
// I is the center of the frequency response of the I filter.
|
||||
// Q is the center of the frequency response of the Q filter.
|
||||
float Fc_y1 = NotchLowerFrequency * TimePerSample;
|
||||
float Fc_y2 = NotchUpperFrequency * TimePerSample;
|
||||
float Fc_y3 = YFrequency * TimePerSample;
|
||||
float Fc_i = IFrequency * TimePerSample;
|
||||
float Fc_q = QFrequency * TimePerSample;
|
||||
float Pi2Fc_y1 = Fc_y1 * Pi2;
|
||||
float Pi2Fc_y2 = Fc_y2 * Pi2;
|
||||
float Pi2Fc_y3 = Fc_y3 * Pi2;
|
||||
float Pi2Fc_i = Fc_i * Pi2;
|
||||
float Pi2Fc_q = Fc_q * Pi2;
|
||||
float Fc_y1_2 = Fc_y1 * 2.0;
|
||||
float Fc_y2_2 = Fc_y2 * 2.0;
|
||||
float Fc_y3_2 = Fc_y3 * 2.0;
|
||||
float Fc_i_2 = Fc_i * 2.0;
|
||||
float Fc_q_2 = Fc_q * 2.0;
|
||||
vec4 CoordY = vec4(texCoord.y);
|
||||
|
||||
vec4 BaseTexel = texture2D(DiffuseSampler, texCoord);
|
||||
// 83 composite samples wide, 4 composite pixels per texel
|
||||
for (float n = -41.0; n < 42.0; n += 4.0)
|
||||
{
|
||||
vec4 n4 = n + NotchOffset;
|
||||
vec4 CoordX = texCoord.x + oneTexel.x * n4 * 0.25;
|
||||
vec2 TexCoord = vec2(CoordX.x, CoordY.y);
|
||||
vec4 C = texture2D(DiffuseSampler, TexCoord) * CRange + MinC;
|
||||
vec4 WT = W * (CoordX + A2 * CoordY * InSize.y + B);
|
||||
vec4 Cosine = 0.54 + 0.46 * cos(Pi2Length * n4);
|
||||
|
||||
vec4 SincYIn1 = Pi2Fc_y1 * n4;
|
||||
vec4 SincYIn2 = Pi2Fc_y2 * n4;
|
||||
vec4 SincYIn3 = Pi2Fc_y3 * n4;
|
||||
vec4 SincY1 = sin(SincYIn1) / SincYIn1;
|
||||
vec4 SincY2 = sin(SincYIn2) / SincYIn2;
|
||||
vec4 SincY3 = sin(SincYIn3) / SincYIn3;
|
||||
|
||||
// These zero-checks could be made more efficient, but we are trying to support
|
||||
// downlevel GLSL
|
||||
if(SincYIn1.x == 0.0) SincY1.x = 1.0;
|
||||
if(SincYIn1.y == 0.0) SincY1.y = 1.0;
|
||||
if(SincYIn1.z == 0.0) SincY1.z = 1.0;
|
||||
if(SincYIn1.w == 0.0) SincY1.w = 1.0;
|
||||
if(SincYIn2.x == 0.0) SincY2.x = 1.0;
|
||||
if(SincYIn2.y == 0.0) SincY2.y = 1.0;
|
||||
if(SincYIn2.z == 0.0) SincY2.z = 1.0;
|
||||
if(SincYIn2.w == 0.0) SincY2.w = 1.0;
|
||||
if(SincYIn3.x == 0.0) SincY3.x = 1.0;
|
||||
if(SincYIn3.y == 0.0) SincY3.y = 1.0;
|
||||
if(SincYIn3.z == 0.0) SincY3.z = 1.0;
|
||||
if(SincYIn3.w == 0.0) SincY3.w = 1.0;
|
||||
vec4 IdealY = (Fc_y1_2 * SincY1 - Fc_y2_2 * SincY2) + Fc_y3_2 * SincY3;
|
||||
vec4 FilterY = Cosine * IdealY;
|
||||
|
||||
vec4 SincIIn = Pi2Fc_i * n4;
|
||||
vec4 SincI = sin(SincIIn) / SincIIn;
|
||||
if(SincIIn.x == 0.0) SincI.x = 1.0;
|
||||
if(SincIIn.y == 0.0) SincI.y = 1.0;
|
||||
if(SincIIn.z == 0.0) SincI.z = 1.0;
|
||||
if(SincIIn.w == 0.0) SincI.w = 1.0;
|
||||
vec4 IdealI = Fc_i_2 * SincI;
|
||||
vec4 FilterI = Cosine * IdealI;
|
||||
|
||||
vec4 SincQIn = Pi2Fc_q * n4;
|
||||
vec4 SincQ = sin(SincQIn) / SincQIn;
|
||||
if(SincQIn.x == 0.0) SincQ.x = 1.0;
|
||||
if(SincQIn.y == 0.0) SincQ.y = 1.0;
|
||||
if(SincQIn.z == 0.0) SincQ.z = 1.0;
|
||||
if(SincQIn.w == 0.0) SincQ.w = 1.0;
|
||||
vec4 IdealQ = Fc_q_2 * SincQ;
|
||||
vec4 FilterQ = Cosine * IdealQ;
|
||||
|
||||
YAccum += C * FilterY;
|
||||
IAccum += C * cos(WT) * FilterI;
|
||||
QAccum += C * sin(WT) * FilterQ;
|
||||
}
|
||||
|
||||
float Y = dot(YAccum, One);
|
||||
float I = dot(IAccum, One) * 2.0;
|
||||
float Q = dot(QAccum, One) * 2.0;
|
||||
|
||||
vec3 YIQ = vec3(Y, I, Q);
|
||||
vec3 OutRGB = vec3(dot(YIQ, YIQ2R), dot(YIQ, YIQ2G), dot(YIQ, YIQ2B));
|
||||
|
||||
gl_FragColor = vec4(OutRGB, BaseTexel.a);
|
||||
}
|
||||
19
assets/minecraft/shaders/program/ntsc_decode.json
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"blend": {
|
||||
"func": "add",
|
||||
"srcrgb": "one",
|
||||
"dstrgb": "zero"
|
||||
},
|
||||
"vertex": "sobel",
|
||||
"fragment": "ntsc_decode",
|
||||
"attributes": [ "Position" ],
|
||||
"samplers": [
|
||||
{ "name": "DiffuseSampler" },
|
||||
{ "name": "BaseSampler" }
|
||||
],
|
||||
"uniforms": [
|
||||
{ "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] },
|
||||
{ "name": "InSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] },
|
||||
{ "name": "OutSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] }
|
||||
]
|
||||
}
|
||||
50
assets/minecraft/shaders/program/ntsc_encode.fsh
Normal file
@@ -0,0 +1,50 @@
|
||||
#version 120
|
||||
|
||||
uniform sampler2D DiffuseSampler;
|
||||
|
||||
varying vec2 texCoord;
|
||||
varying vec2 oneTexel;
|
||||
|
||||
uniform vec2 InSize;
|
||||
|
||||
const float Pi2 = 6.283185307;
|
||||
|
||||
const vec4 A2 = vec4(1.0);
|
||||
const vec4 B = vec4(0.5);
|
||||
const float P = 1.0;
|
||||
const float CCFrequency = 3.59754545;
|
||||
const float ScanTime = 52.6;
|
||||
const float Pi2ScanTime = Pi2 * ScanTime;
|
||||
const vec4 YTransform = vec4(0.299, 0.587, 0.114, 0.0);
|
||||
const vec4 ITransform = vec4(0.595716, -0.274453, -0.321263, 0.0);
|
||||
const vec4 QTransform = vec4(0.211456, -0.522591, 0.31135, 0.0);
|
||||
const vec4 MinC = vec4(-1.1183);
|
||||
const vec4 InvCRange = vec4(1.0 / 3.2366);
|
||||
|
||||
void main() {
|
||||
vec2 InverseP = vec2(P, 0.0) * oneTexel;
|
||||
|
||||
// UVs for four linearly-interpolated samples spread 0.25 texels apart
|
||||
vec2 C0 = texCoord;
|
||||
vec2 C1 = texCoord + InverseP * 0.25;
|
||||
vec2 C2 = texCoord + InverseP * 0.50;
|
||||
vec2 C3 = texCoord + InverseP * 0.75;
|
||||
vec4 Cx = vec4(C0.x, C1.x, C2.x, C3.x);
|
||||
vec4 Cy = vec4(C0.y, C1.y, C2.y, C3.y);
|
||||
|
||||
vec4 Texel0 = texture2D(DiffuseSampler, C0);
|
||||
vec4 Texel1 = texture2D(DiffuseSampler, C1);
|
||||
vec4 Texel2 = texture2D(DiffuseSampler, C2);
|
||||
vec4 Texel3 = texture2D(DiffuseSampler, C3);
|
||||
|
||||
// Calculate the expected time of the sample.
|
||||
vec4 T = A2 * Cy * vec4(InSize.y) + B + Cx;
|
||||
vec4 W = vec4(Pi2ScanTime * CCFrequency);
|
||||
vec4 TW = T * W;
|
||||
vec4 Y = vec4(dot(Texel0, YTransform), dot(Texel1, YTransform), dot(Texel2, YTransform), dot(Texel3, YTransform));
|
||||
vec4 I = vec4(dot(Texel0, ITransform), dot(Texel1, ITransform), dot(Texel2, ITransform), dot(Texel3, ITransform));
|
||||
vec4 Q = vec4(dot(Texel0, QTransform), dot(Texel1, QTransform), dot(Texel2, QTransform), dot(Texel3, QTransform));
|
||||
|
||||
vec4 Encoded = Y + I * cos(TW) + Q * sin(TW);
|
||||
gl_FragColor = (Encoded - MinC) * InvCRange;
|
||||
}
|
||||
18
assets/minecraft/shaders/program/ntsc_encode.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"blend": {
|
||||
"func": "add",
|
||||
"srcrgb": "one",
|
||||
"dstrgb": "zero"
|
||||
},
|
||||
"vertex": "sobel",
|
||||
"fragment": "ntsc_encode",
|
||||
"attributes": [ "Position" ],
|
||||
"samplers": [
|
||||
{ "name": "DiffuseSampler" }
|
||||
],
|
||||
"uniforms": [
|
||||
{ "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] },
|
||||
{ "name": "InSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] },
|
||||
{ "name": "OutSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] }
|
||||
]
|
||||
}
|
||||
21
assets/minecraft/shaders/program/outline.fsh
Normal file
@@ -0,0 +1,21 @@
|
||||
#version 120
|
||||
|
||||
uniform sampler2D DiffuseSampler;
|
||||
|
||||
varying vec2 texCoord;
|
||||
varying vec2 oneTexel;
|
||||
|
||||
void main(){
|
||||
vec4 center = texture2D(DiffuseSampler, texCoord);
|
||||
vec4 up = texture2D(DiffuseSampler, texCoord + vec2( 0.0, -oneTexel.y));
|
||||
vec4 down = texture2D(DiffuseSampler, texCoord + vec2( oneTexel.x, 0.0));
|
||||
vec4 left = texture2D(DiffuseSampler, texCoord + vec2(-oneTexel.x, 0.0));
|
||||
vec4 right = texture2D(DiffuseSampler, texCoord + vec2( 0.0, oneTexel.y));
|
||||
vec4 uDiff = center - up;
|
||||
vec4 dDiff = center - down;
|
||||
vec4 lDiff = center - left;
|
||||
vec4 rDiff = center - right;
|
||||
vec4 sum = uDiff + dDiff + lDiff + rDiff;
|
||||
vec3 clamped = clamp(center.rgb - sum.rgb, 0.0, 1.0);
|
||||
gl_FragColor = vec4(clamped, center.a);
|
||||
}
|
||||
18
assets/minecraft/shaders/program/outline.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"blend": {
|
||||
"func": "add",
|
||||
"srcrgb": "one",
|
||||
"dstrgb": "zero"
|
||||
},
|
||||
"vertex": "sobel",
|
||||
"fragment": "outline",
|
||||
"attributes": [ "Position" ],
|
||||
"samplers": [
|
||||
{ "name": "DiffuseSampler" }
|
||||
],
|
||||
"uniforms": [
|
||||
{ "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] },
|
||||
{ "name": "InSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] },
|
||||
{ "name": "OutSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] }
|
||||
]
|
||||
}
|
||||
13
assets/minecraft/shaders/program/outline_combine.fsh
Normal file
@@ -0,0 +1,13 @@
|
||||
#version 120
|
||||
|
||||
uniform sampler2D DiffuseSampler;
|
||||
uniform sampler2D OutlineSampler;
|
||||
|
||||
varying vec2 texCoord;
|
||||
varying vec2 oneTexel;
|
||||
|
||||
void main(){
|
||||
vec4 diffuseTexel = texture2D(DiffuseSampler, texCoord);
|
||||
vec4 outlineTexel = texture2D(OutlineSampler, texCoord);
|
||||
gl_FragColor = vec4(diffuseTexel.rgb + diffuseTexel.rgb * outlineTexel.rgb * vec3(0.75), diffuseTexel.a);
|
||||
}
|
||||
19
assets/minecraft/shaders/program/outline_combine.json
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"blend": {
|
||||
"func": "add",
|
||||
"srcrgb": "one",
|
||||
"dstrgb": "zero"
|
||||
},
|
||||
"vertex": "sobel",
|
||||
"fragment": "outline_combine",
|
||||
"attributes": [ "Position" ],
|
||||
"samplers": [
|
||||
{ "name": "DiffuseSampler" },
|
||||
{ "name": "OutlineSampler" }
|
||||
],
|
||||
"uniforms": [
|
||||
{ "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] },
|
||||
{ "name": "InSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] },
|
||||
{ "name": "OutSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] }
|
||||
]
|
||||
}
|
||||
46
assets/minecraft/shaders/program/outline_soft.fsh
Normal file
@@ -0,0 +1,46 @@
|
||||
#version 120
|
||||
|
||||
uniform sampler2D DiffuseSampler;
|
||||
|
||||
varying vec2 texCoord;
|
||||
varying vec2 oneTexel;
|
||||
|
||||
uniform float LumaRamp;
|
||||
uniform float LumaLevel;
|
||||
|
||||
void main(){
|
||||
vec4 center = texture2D(DiffuseSampler, texCoord);
|
||||
vec4 up = texture2D(DiffuseSampler, texCoord + vec2( 0.0, -oneTexel.y));
|
||||
vec4 up2 = texture2D(DiffuseSampler, texCoord + vec2( 0.0, -oneTexel.y) * 2.0);
|
||||
vec4 down = texture2D(DiffuseSampler, texCoord + vec2( oneTexel.x, 0.0));
|
||||
vec4 down2 = texture2D(DiffuseSampler, texCoord + vec2( oneTexel.x, 0.0) * 2.0);
|
||||
vec4 left = texture2D(DiffuseSampler, texCoord + vec2(-oneTexel.x, 0.0));
|
||||
vec4 left2 = texture2D(DiffuseSampler, texCoord + vec2(-oneTexel.x, 0.0) * 2.0);
|
||||
vec4 right = texture2D(DiffuseSampler, texCoord + vec2( 0.0, oneTexel.y));
|
||||
vec4 right2 = texture2D(DiffuseSampler, texCoord + vec2( 0.0, oneTexel.y) * 2.0);
|
||||
vec4 uDiff = abs(center - up);
|
||||
vec4 dDiff = abs(center - down);
|
||||
vec4 lDiff = abs(center - left);
|
||||
vec4 rDiff = abs(center - right);
|
||||
vec4 u2Diff = abs(center - up2);
|
||||
vec4 d2Diff = abs(center - down2);
|
||||
vec4 l2Diff = abs(center - left2);
|
||||
vec4 r2Diff = abs(center - right2);
|
||||
vec4 sum = uDiff + dDiff + lDiff + rDiff + u2Diff + d2Diff + l2Diff + r2Diff;
|
||||
vec4 gray = vec4(0.3, 0.59, 0.11, 0.0);
|
||||
float sumLuma = 1.0 - dot(clamp(sum, 0.0, 1.0), gray);
|
||||
|
||||
// Get luminance of center pixel and adjust
|
||||
float centerLuma = dot(center + (center - pow(center, vec4(LumaRamp))), gray);
|
||||
|
||||
// Quantize the luma value
|
||||
centerLuma = centerLuma - fract(centerLuma * LumaLevel) / LumaLevel;
|
||||
|
||||
// Re-scale to full range
|
||||
centerLuma = centerLuma * (LumaLevel / (LumaLevel - 1.0));
|
||||
|
||||
// Blend with outline
|
||||
centerLuma = centerLuma * sumLuma;
|
||||
|
||||
gl_FragColor = vec4(centerLuma, centerLuma, centerLuma, center.a);
|
||||
}
|
||||
20
assets/minecraft/shaders/program/outline_soft.json
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"blend": {
|
||||
"func": "add",
|
||||
"srcrgb": "one",
|
||||
"dstrgb": "zero"
|
||||
},
|
||||
"vertex": "sobel",
|
||||
"fragment": "outline_soft",
|
||||
"attributes": [ "Position" ],
|
||||
"samplers": [
|
||||
{ "name": "DiffuseSampler" }
|
||||
],
|
||||
"uniforms": [
|
||||
{ "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] },
|
||||
{ "name": "InSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] },
|
||||
{ "name": "OutSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] },
|
||||
{ "name": "LumaRamp", "type": "float", "count": 1, "values": [ 16.0 ] },
|
||||
{ "name": "LumaLevel", "type": "float", "count": 1, "values": [ 4.0 ] }
|
||||
]
|
||||
}
|
||||
41
assets/minecraft/shaders/program/outline_watercolor.fsh
Normal file
@@ -0,0 +1,41 @@
|
||||
#version 120
|
||||
|
||||
uniform sampler2D DiffuseSampler;
|
||||
|
||||
varying vec2 texCoord;
|
||||
varying vec2 oneTexel;
|
||||
|
||||
uniform float LumaRamp;
|
||||
|
||||
void main(){
|
||||
vec4 center = texture2D(DiffuseSampler, texCoord);
|
||||
vec4 up = texture2D(DiffuseSampler, texCoord + vec2( 0.0, -oneTexel.y));
|
||||
vec4 up2 = texture2D(DiffuseSampler, texCoord + vec2( 0.0, -oneTexel.y) * 2.0);
|
||||
vec4 down = texture2D(DiffuseSampler, texCoord + vec2( oneTexel.x, 0.0));
|
||||
vec4 down2 = texture2D(DiffuseSampler, texCoord + vec2( oneTexel.x, 0.0) * 2.0);
|
||||
vec4 left = texture2D(DiffuseSampler, texCoord + vec2(-oneTexel.x, 0.0));
|
||||
vec4 left2 = texture2D(DiffuseSampler, texCoord + vec2(-oneTexel.x, 0.0) * 2.0);
|
||||
vec4 right = texture2D(DiffuseSampler, texCoord + vec2( 0.0, oneTexel.y));
|
||||
vec4 right2 = texture2D(DiffuseSampler, texCoord + vec2( 0.0, oneTexel.y) * 2.0);
|
||||
vec4 ul = texture2D(DiffuseSampler, texCoord + vec2(-oneTexel.x, -oneTexel.y));
|
||||
vec4 ur = texture2D(DiffuseSampler, texCoord + vec2( oneTexel.x, -oneTexel.y));
|
||||
vec4 bl = texture2D(DiffuseSampler, texCoord + vec2(-oneTexel.x, oneTexel.y));
|
||||
vec4 br = texture2D(DiffuseSampler, texCoord + vec2( oneTexel.x, oneTexel.y));
|
||||
vec4 gray = vec4(0.3, 0.59, 0.11, 0.0);
|
||||
float uDiff = dot(abs(center - up), gray);
|
||||
float dDiff = dot(abs(center - down), gray);
|
||||
float lDiff = dot(abs(center - left), gray);
|
||||
float rDiff = dot(abs(center - right), gray);
|
||||
float u2Diff = dot(abs(center - up2), gray);
|
||||
float d2Diff = dot(abs(center - down2), gray);
|
||||
float l2Diff = dot(abs(center - left2), gray);
|
||||
float r2Diff = dot(abs(center - right2), gray);
|
||||
float ulDiff = dot(abs(center - ul), gray);
|
||||
float urDiff = dot(abs(center - ur), gray);
|
||||
float blDiff = dot(abs(center - bl), gray);
|
||||
float brDiff = dot(abs(center - br), gray);
|
||||
float sum = uDiff + dDiff + lDiff + rDiff + u2Diff + d2Diff + l2Diff + r2Diff + ulDiff + urDiff + blDiff + brDiff;
|
||||
float sumLuma = clamp(sum, 0.0, 1.0);
|
||||
|
||||
gl_FragColor = vec4(sumLuma, sumLuma, sumLuma, center.a);
|
||||
}
|
||||
19
assets/minecraft/shaders/program/outline_watercolor.json
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"blend": {
|
||||
"func": "add",
|
||||
"srcrgb": "one",
|
||||
"dstrgb": "zero"
|
||||
},
|
||||
"vertex": "sobel",
|
||||
"fragment": "outline_watercolor",
|
||||
"attributes": [ "Position" ],
|
||||
"samplers": [
|
||||
{ "name": "DiffuseSampler" }
|
||||
],
|
||||
"uniforms": [
|
||||
{ "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] },
|
||||
{ "name": "InSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] },
|
||||
{ "name": "OutSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] },
|
||||
{ "name": "LumaRamp", "type": "float", "count": 1, "values": [ 16.0 ] }
|
||||
]
|
||||
}
|
||||
26
assets/minecraft/shaders/program/overlay.fsh
Normal file
@@ -0,0 +1,26 @@
|
||||
#version 120
|
||||
|
||||
uniform sampler2D DiffuseSampler;
|
||||
uniform sampler2D OverlaySampler;
|
||||
|
||||
uniform vec2 InSize;
|
||||
|
||||
varying vec2 texCoord;
|
||||
|
||||
uniform float MosaicSize = 1.0;
|
||||
uniform vec3 RedMatrix = vec3(1.0, 0.0, 0.0);
|
||||
uniform vec3 GreenMatrix = vec3(0.0, 1.0, 0.0);
|
||||
uniform vec3 BlueMatrix = vec3(0.0, 0.0, 1.0);
|
||||
|
||||
void main(){
|
||||
vec2 mosaicInSize = InSize / MosaicSize;
|
||||
vec2 fractPix = fract(texCoord * mosaicInSize) / mosaicInSize;
|
||||
|
||||
vec4 baseTexel = texture2D(DiffuseSampler, texCoord - fractPix);
|
||||
float red = dot(baseTexel.rgb, RedMatrix);
|
||||
float green = dot(baseTexel.rgb, GreenMatrix);
|
||||
float blue = dot(baseTexel.rgb, BlueMatrix);
|
||||
|
||||
vec4 overlayTexel = texture2D(OverlaySampler, vec2(texCoord.x, 1.0 - texCoord.y));
|
||||
gl_FragColor = mix(vec4(red, green, blue, baseTexel.a), overlayTexel, overlayTexel.a);
|
||||
}
|
||||
23
assets/minecraft/shaders/program/overlay.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"blend": {
|
||||
"func": "add",
|
||||
"srcrgb": "one",
|
||||
"dstrgb": "zero"
|
||||
},
|
||||
"vertex": "blit",
|
||||
"fragment": "overlay",
|
||||
"attributes": [ "Position" ],
|
||||
"samplers": [
|
||||
{ "name": "OverlaySampler" },
|
||||
{ "name": "DiffuseSampler" }
|
||||
],
|
||||
"uniforms": [
|
||||
{ "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] },
|
||||
{ "name": "InSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] },
|
||||
{ "name": "OutSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] },
|
||||
{ "name": "MosaicSize", "type": "float", "count": 1, "values": [ 1.0 ] },
|
||||
{ "name": "RedMatrix", "type": "float", "count": 3, "values": [ 1.0, 0.0, 0.0 ] },
|
||||
{ "name": "GreenMatrix", "type": "float", "count": 3, "values": [ 0.0, 1.0, 1.0 ] },
|
||||
{ "name": "BlueMatrix", "type": "float", "count": 3, "values": [ 0.0, 0.0, 1.0 ] }
|
||||
]
|
||||
}
|
||||
19
assets/minecraft/shaders/program/phosphor.fsh
Normal file
@@ -0,0 +1,19 @@
|
||||
#version 120
|
||||
|
||||
uniform sampler2D DiffuseSampler;
|
||||
uniform sampler2D PrevSampler;
|
||||
|
||||
varying vec2 texCoord;
|
||||
varying vec2 oneTexel;
|
||||
|
||||
uniform vec2 InSize;
|
||||
|
||||
uniform vec3 Phosphor = vec3(0.7, 0.7, 0.7);
|
||||
uniform float LerpFactor = 1.0;
|
||||
|
||||
void main() {
|
||||
vec4 CurrTexel = texture2D(DiffuseSampler, texCoord);
|
||||
vec4 PrevTexel = texture2D(PrevSampler, texCoord);
|
||||
|
||||
gl_FragColor = vec4(max(PrevTexel.rgb * Phosphor, CurrTexel.rgb), CurrTexel.a);
|
||||
}
|
||||
20
assets/minecraft/shaders/program/phosphor.json
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"blend": {
|
||||
"func": "add",
|
||||
"srcrgb": "one",
|
||||
"dstrgb": "zero"
|
||||
},
|
||||
"vertex": "sobel",
|
||||
"fragment": "phosphor",
|
||||
"attributes": [ "Position" ],
|
||||
"samplers": [
|
||||
{ "name": "DiffuseSampler" },
|
||||
{ "name": "PrevSampler" }
|
||||
],
|
||||
"uniforms": [
|
||||
{ "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] },
|
||||
{ "name": "InSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] },
|
||||
{ "name": "OutSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] },
|
||||
{ "name": "Phosphor", "type": "float", "count": 3, "values": [ 0.3, 0.3, 0.3 ] }
|
||||
]
|
||||
}
|
||||
64
assets/minecraft/shaders/program/scan_pincushion.fsh
Normal file
@@ -0,0 +1,64 @@
|
||||
#version 120
|
||||
|
||||
uniform sampler2D DiffuseSampler;
|
||||
|
||||
varying vec2 texCoord;
|
||||
varying vec2 oneTexel;
|
||||
|
||||
uniform vec2 InSize;
|
||||
|
||||
const vec4 Zero = vec4(0.0);
|
||||
const vec4 Half = vec4(0.5);
|
||||
const vec4 One = vec4(1.0);
|
||||
const vec4 Two = vec4(2.0);
|
||||
|
||||
const float Pi = 3.1415926535;
|
||||
const float PincushionAmount = 0.02;
|
||||
const float CurvatureAmount = 0.02;
|
||||
const float ScanlineAmount = 0.8;
|
||||
const float ScanlineScale = 1.0;
|
||||
const float ScanlineHeight = 1.0;
|
||||
const float ScanlineBrightScale = 1.0;
|
||||
const float ScanlineBrightOffset = 0.0;
|
||||
const float ScanlineOffset = 0.0;
|
||||
const vec3 Floor = vec3(0.05, 0.05, 0.05);
|
||||
const vec3 Power = vec3(0.8, 0.8, 0.8);
|
||||
|
||||
void main() {
|
||||
vec4 InTexel = texture2D(DiffuseSampler, texCoord);
|
||||
|
||||
vec2 PinUnitCoord = texCoord * Two.xy - One.xy;
|
||||
float PincushionR2 = pow(length(PinUnitCoord), 2.0);
|
||||
vec2 PincushionCurve = PinUnitCoord * PincushionAmount * PincushionR2;
|
||||
vec2 ScanCoord = texCoord;
|
||||
|
||||
ScanCoord *= One.xy - PincushionAmount * 0.2;
|
||||
ScanCoord += PincushionAmount * 0.1;
|
||||
ScanCoord += PincushionCurve;
|
||||
|
||||
vec2 CurvatureClipCurve = PinUnitCoord * CurvatureAmount * PincushionR2;
|
||||
vec2 ScreenClipCoord = texCoord;
|
||||
ScreenClipCoord -= Half.xy;
|
||||
ScreenClipCoord *= One.xy - CurvatureAmount * 0.2;
|
||||
ScreenClipCoord += Half.xy;
|
||||
ScreenClipCoord += CurvatureClipCurve;
|
||||
|
||||
// -- Alpha Clipping --
|
||||
if (ScanCoord.x < 0.0) discard;
|
||||
if (ScanCoord.y < 0.0) discard;
|
||||
if (ScanCoord.x > 1.0) discard;
|
||||
if (ScanCoord.y > 1.0) discard;
|
||||
|
||||
// -- Scanline Simulation --
|
||||
float InnerSine = ScanCoord.y * InSize.y * ScanlineScale * 0.25;
|
||||
float ScanBrightMod = sin(InnerSine * Pi + ScanlineOffset * InSize.y * 0.25);
|
||||
float ScanBrightness = mix(1.0, (pow(ScanBrightMod * ScanBrightMod, ScanlineHeight) * ScanlineBrightScale + 1.0) * 0.5, ScanlineAmount);
|
||||
vec3 ScanlineTexel = InTexel.rgb * ScanBrightness;
|
||||
|
||||
// -- Color Compression (increasing the floor of the signal without affecting the ceiling) --
|
||||
ScanlineTexel = Floor + (One.xyz - Floor) * ScanlineTexel;
|
||||
|
||||
ScanlineTexel.rgb = pow(ScanlineTexel.rgb, Power);
|
||||
|
||||
gl_FragColor = vec4(ScanlineTexel.rgb, InTexel.a);
|
||||
}
|
||||
18
assets/minecraft/shaders/program/scan_pincushion.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"blend": {
|
||||
"func": "add",
|
||||
"srcrgb": "one",
|
||||
"dstrgb": "zero"
|
||||
},
|
||||
"vertex": "sobel",
|
||||
"fragment": "scan_pincushion",
|
||||
"attributes": [ "Position" ],
|
||||
"samplers": [
|
||||
{ "name": "DiffuseSampler" }
|
||||
],
|
||||
"uniforms": [
|
||||
{ "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] },
|
||||
{ "name": "InSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] },
|
||||
{ "name": "OutSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] }
|
||||
]
|
||||
}
|
||||
20
assets/minecraft/shaders/program/sobel.fsh
Normal file
@@ -0,0 +1,20 @@
|
||||
#version 120
|
||||
|
||||
uniform sampler2D DiffuseSampler;
|
||||
|
||||
varying vec2 texCoord;
|
||||
varying vec2 oneTexel;
|
||||
|
||||
void main(){
|
||||
vec4 center = texture2D(DiffuseSampler, texCoord);
|
||||
vec4 left = texture2D(DiffuseSampler, texCoord - vec2(oneTexel.x, 0.0));
|
||||
vec4 right = texture2D(DiffuseSampler, texCoord + vec2(oneTexel.x, 0.0));
|
||||
vec4 up = texture2D(DiffuseSampler, texCoord - vec2(0.0, oneTexel.y));
|
||||
vec4 down = texture2D(DiffuseSampler, texCoord + vec2(0.0, oneTexel.y));
|
||||
vec4 leftDiff = center - left;
|
||||
vec4 rightDiff = center - right;
|
||||
vec4 upDiff = center - up;
|
||||
vec4 downDiff = center - down;
|
||||
vec4 total = clamp(leftDiff + rightDiff + upDiff + downDiff, 0.0, 1.0);
|
||||
gl_FragColor = vec4(total.rgb, center.a);
|
||||
}
|
||||
18
assets/minecraft/shaders/program/sobel.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"blend": {
|
||||
"func": "add",
|
||||
"srcrgb": "one",
|
||||
"dstrgb": "zero"
|
||||
},
|
||||
"vertex": "sobel",
|
||||
"fragment": "sobel",
|
||||
"attributes": [ "Position" ],
|
||||
"samplers": [
|
||||
{ "name": "DiffuseSampler" }
|
||||
],
|
||||
"uniforms": [
|
||||
{ "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] },
|
||||
{ "name": "InSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] },
|
||||
{ "name": "OutSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] }
|
||||
]
|
||||
}
|
||||
20
assets/minecraft/shaders/program/sobel.vsh
Normal file
@@ -0,0 +1,20 @@
|
||||
#version 120
|
||||
|
||||
attribute vec4 Position;
|
||||
|
||||
uniform mat4 ProjMat;
|
||||
uniform vec2 InSize;
|
||||
uniform vec2 OutSize;
|
||||
|
||||
varying vec2 texCoord;
|
||||
varying vec2 oneTexel;
|
||||
|
||||
void main(){
|
||||
vec4 outPos = ProjMat * vec4(Position.xy, 0.0, 1.0);
|
||||
gl_Position = vec4(outPos.xy, 0.2, 1.0);
|
||||
|
||||
oneTexel = 1.0 / InSize;
|
||||
|
||||
texCoord = Position.xy / OutSize;
|
||||
texCoord.y = 1.0 - texCoord.y;
|
||||
}
|
||||
58
assets/minecraft/shaders/program/wobble.fsh
Normal file
@@ -0,0 +1,58 @@
|
||||
#version 120
|
||||
|
||||
uniform sampler2D DiffuseSampler;
|
||||
|
||||
varying vec2 texCoord;
|
||||
varying vec2 oneTexel;
|
||||
|
||||
uniform vec2 InSize;
|
||||
|
||||
uniform float Time;
|
||||
uniform vec2 Frequency;
|
||||
uniform vec2 WobbleAmount;
|
||||
|
||||
vec3 hue(float h)
|
||||
{
|
||||
float r = abs(h * 6.0 - 3.0) - 1.0;
|
||||
float g = 2 - abs(h * 6.0 - 2.0);
|
||||
float b = 2 - abs(h * 6.0 - 4.0);
|
||||
return clamp(vec3(r,g,b), 0.0, 1.0);
|
||||
}
|
||||
|
||||
vec3 HSVtoRGB(vec3 hsv) {
|
||||
return ((hue(hsv.x) - 1.0) * hsv.y + 1.0) * hsv.z;
|
||||
}
|
||||
|
||||
vec3 RGBtoHSV(vec3 rgb) {
|
||||
vec3 hsv = vec3(0.0);
|
||||
hsv.z = max(rgb.r, max(rgb.g, rgb.b));
|
||||
float min = min(rgb.r, min(rgb.g, rgb.b));
|
||||
float c = hsv.z - min;
|
||||
|
||||
if (c != 0)
|
||||
{
|
||||
hsv.y = c / hsv.z;
|
||||
vec3 delta = (hsv.z - rgb) / c;
|
||||
delta.rgb -= delta.brg;
|
||||
delta.rg += vec2(2.0, 4.0);
|
||||
if (rgb.r >= hsv.z) {
|
||||
hsv.x = delta.b;
|
||||
} else if (rgb.g >= hsv.z) {
|
||||
hsv.x = delta.r;
|
||||
} else {
|
||||
hsv.x = delta.g;
|
||||
}
|
||||
hsv.x = fract(hsv.x / 6.0);
|
||||
}
|
||||
return hsv;
|
||||
}
|
||||
|
||||
void main() {
|
||||
float xOffset = sin(texCoord.y * Frequency.x + Time * 3.1415926535 * 2.0) * WobbleAmount.x;
|
||||
float yOffset = cos(texCoord.x * Frequency.y + Time * 3.1415926535 * 2.0) * WobbleAmount.y;
|
||||
vec2 offset = vec2(xOffset, yOffset);
|
||||
vec4 rgb = texture2D(DiffuseSampler, texCoord + offset);
|
||||
vec3 hsv = RGBtoHSV(rgb.rgb);
|
||||
hsv.x = fract(hsv.x + Time);
|
||||
gl_FragColor = vec4(HSVtoRGB(hsv), rgb.a);
|
||||
}
|
||||
21
assets/minecraft/shaders/program/wobble.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"blend": {
|
||||
"func": "add",
|
||||
"srcrgb": "one",
|
||||
"dstrgb": "zero"
|
||||
},
|
||||
"vertex": "sobel",
|
||||
"fragment": "wobble",
|
||||
"attributes": [ "Position" ],
|
||||
"samplers": [
|
||||
{ "name": "DiffuseSampler" }
|
||||
],
|
||||
"uniforms": [
|
||||
{ "name": "ProjMat", "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] },
|
||||
{ "name": "InSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] },
|
||||
{ "name": "OutSize", "type": "float", "count": 2, "values": [ 1.0, 1.0 ] },
|
||||
{ "name": "Time", "type": "float", "count": 1, "values": [ 0.0 ] },
|
||||
{ "name": "Frequency", "type": "float", "count": 2, "values": [ 512.0, 288.0 ] },
|
||||
{ "name": "WobbleAmount", "type": "float", "count": 2, "values": [ 0.002, 0.002 ] }
|
||||
]
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
{"directories":[],"files":["credits.txt","end.txt","splashes.txt"]}
|
||||
@@ -224,6 +224,7 @@ It's groundbreaking!
|
||||
Let our battle's begin!
|
||||
The sky is the limit!
|
||||
Jeb has amazing hair!
|
||||
Ryan also has amazing hair!
|
||||
Casual gaming!
|
||||
Undefeated!
|
||||
Kinda like Lemmings!
|
||||
@@ -317,4 +318,5 @@ Now with extra hugs!
|
||||
Now java 6!
|
||||
Woah.
|
||||
HURNERJSGER?
|
||||
What's up, Doc?
|
||||
What's up, Doc?
|
||||
Now contains 32 random daily cats!
|
||||
@@ -1 +0,0 @@
|
||||
{"directories":["blocks","colormap","entity","environment","font","gui","items","map","misc","models","painting","particle"],"files":[]}
|
||||
|
Before Width: | Height: | Size: 706 B After Width: | Height: | Size: 706 B |
|
Before Width: | Height: | Size: 670 B After Width: | Height: | Size: 670 B |
|
Before Width: | Height: | Size: 668 B After Width: | Height: | Size: 668 B |
|
Before Width: | Height: | Size: 674 B After Width: | Height: | Size: 674 B |
|
Before Width: | Height: | Size: 665 B After Width: | Height: | Size: 665 B |