Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0cfbb49c20 |
@@ -82,7 +82,7 @@ gameMode.adventure=Adventure Mode
|
|||||||
gameMode.hardcore=Hardcore Mode!
|
gameMode.hardcore=Hardcore Mode!
|
||||||
gameMode.changed=Your game mode has been updated
|
gameMode.changed=Your game mode has been updated
|
||||||
|
|
||||||
selectWorld.gameMode=Game Mode:
|
selectWorld.gameMode=Game Mode
|
||||||
selectWorld.gameMode.survival=Survival
|
selectWorld.gameMode.survival=Survival
|
||||||
selectWorld.gameMode.survival.line1=Search for resources, crafting, gain
|
selectWorld.gameMode.survival.line1=Search for resources, crafting, gain
|
||||||
selectWorld.gameMode.survival.line2=levels, health and hunger
|
selectWorld.gameMode.survival.line2=levels, health and hunger
|
||||||
@@ -109,6 +109,9 @@ selectWorld.bonusItems=Bonus Chest:
|
|||||||
generator.default=Default
|
generator.default=Default
|
||||||
generator.flat=Superflat
|
generator.flat=Superflat
|
||||||
generator.largeBiomes=Large Biomes
|
generator.largeBiomes=Large Biomes
|
||||||
|
generator.amplified=AMPLIFIED
|
||||||
|
|
||||||
|
generator.amplified.info=Notice: Just for fun, requires beefy computer
|
||||||
|
|
||||||
selectServer.title=Select Server
|
selectServer.title=Select Server
|
||||||
selectServer.empty=empty
|
selectServer.empty=empty
|
||||||
@@ -142,6 +145,7 @@ multiplayer.ipinfo=Enter the IP of a server to connect to it:
|
|||||||
multiplayer.texturePrompt.line1=This server recommends the use of a custom resource pack.
|
multiplayer.texturePrompt.line1=This server recommends the use of a custom resource pack.
|
||||||
multiplayer.texturePrompt.line2=Would you like to download and install it automagically?
|
multiplayer.texturePrompt.line2=Would you like to download and install it automagically?
|
||||||
multiplayer.downloadingTerrain=Downloading terrain
|
multiplayer.downloadingTerrain=Downloading terrain
|
||||||
|
multiplayer.downloadingStats=Downloading statistics & achievements...
|
||||||
multiplayer.stopSleeping=Leave Bed
|
multiplayer.stopSleeping=Leave Bed
|
||||||
multiplayer.player.joined=%s joined the game
|
multiplayer.player.joined=%s joined the game
|
||||||
multiplayer.player.left=%s left the game
|
multiplayer.player.left=%s left the game
|
||||||
@@ -151,11 +155,14 @@ chat.type.text=<%s> %s
|
|||||||
chat.type.emote=* %s %s
|
chat.type.emote=* %s %s
|
||||||
chat.type.announcement=[%s] %s
|
chat.type.announcement=[%s] %s
|
||||||
chat.type.admin=[%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.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.link.warning=Never open links from people that you don't trust!
|
||||||
chat.copy=Copy to Clipboard
|
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
|
||||||
|
|
||||||
menu.playdemo=Play Demo World
|
$o=Play Demo World
|
||||||
menu.resetdemo=Reset Demo World
|
menu.resetdemo=Reset Demo World
|
||||||
|
|
||||||
demo.day.1=This demo will last five game days, do your best!
|
demo.day.1=This demo will last five game days, do your best!
|
||||||
@@ -190,11 +197,23 @@ disconnect.timeout=Timed out
|
|||||||
disconnect.closed=Connection closed
|
disconnect.closed=Connection closed
|
||||||
disconnect.loginFailed=Failed to login
|
disconnect.loginFailed=Failed to login
|
||||||
disconnect.loginFailedInfo=Failed to login: %s
|
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.quitting=Quitting
|
||||||
disconnect.endOfStream=End of stream
|
disconnect.endOfStream=End of stream
|
||||||
disconnect.overflow=Buffer overflow
|
disconnect.overflow=Buffer overflow
|
||||||
disconnect.spam=Kicked for spamming
|
disconnect.spam=Kicked for spamming
|
||||||
|
|
||||||
|
soundCategory.master=Master Volume
|
||||||
|
soundCategory.music=Music
|
||||||
|
soundCategory.record=Jukebox/Noteblocks
|
||||||
|
soundCategory.weather=Weather
|
||||||
|
soundCategory.hostile=Hostile Creatures
|
||||||
|
soundCategory.neutral=Friendly Creatures
|
||||||
|
soundCategory.player=Players
|
||||||
|
soundCategory.block=Blocks
|
||||||
|
soundCategory.ambient=Ambient/Environment
|
||||||
|
|
||||||
options.off=OFF
|
options.off=OFF
|
||||||
options.on=ON
|
options.on=ON
|
||||||
options.visible=Shown
|
options.visible=Shown
|
||||||
@@ -203,7 +222,9 @@ options.title=Options
|
|||||||
options.controls=Controls...
|
options.controls=Controls...
|
||||||
options.video=Video Settings...
|
options.video=Video Settings...
|
||||||
options.language=Language...
|
options.language=Language...
|
||||||
options.languageWarning=Language translations may not be 100% accurate
|
options.sounds=Music & Sounds...
|
||||||
|
options.sounds.title=Music & Sound Options
|
||||||
|
options.languageWarning=Language translations may not be 100%% accurate
|
||||||
options.videoTitle=Video Settings
|
options.videoTitle=Video Settings
|
||||||
options.music=Music
|
options.music=Music
|
||||||
options.sound=Sound
|
options.sound=Sound
|
||||||
@@ -211,6 +232,7 @@ options.invertMouse=Invert Mouse
|
|||||||
options.fov=FOV
|
options.fov=FOV
|
||||||
options.fov.min=Normal
|
options.fov.min=Normal
|
||||||
options.fov.max=Quake Pro
|
options.fov.max=Quake Pro
|
||||||
|
options.saturation=Saturation
|
||||||
options.gamma=Brightness
|
options.gamma=Brightness
|
||||||
options.gamma.min=Moody
|
options.gamma.min=Moody
|
||||||
options.gamma.max=Bright
|
options.gamma.max=Bright
|
||||||
@@ -224,11 +246,12 @@ options.renderDistance.normal=Normal
|
|||||||
options.renderDistance.far=Far
|
options.renderDistance.far=Far
|
||||||
options.viewBobbing=View Bobbing
|
options.viewBobbing=View Bobbing
|
||||||
options.ao=Smooth Lighting
|
options.ao=Smooth Lighting
|
||||||
options.ao.off=Off
|
options.ao.off=OFF
|
||||||
options.ao.min=Minimum
|
options.ao.min=Minimum
|
||||||
options.ao.max=Maximum
|
options.ao.max=Maximum
|
||||||
options.anaglyph=3D Anaglyph
|
options.anaglyph=3D Anaglyph
|
||||||
options.framerateLimit=Performance
|
options.framerateLimit=Max Framerate
|
||||||
|
options.framerateLimit.max=Unlimited
|
||||||
options.difficulty=Difficulty
|
options.difficulty=Difficulty
|
||||||
options.difficulty.peaceful=Peaceful
|
options.difficulty.peaceful=Peaceful
|
||||||
options.difficulty.easy=Easy
|
options.difficulty.easy=Easy
|
||||||
@@ -244,7 +267,37 @@ options.guiScale.small=Small
|
|||||||
options.guiScale.normal=Normal
|
options.guiScale.normal=Normal
|
||||||
options.guiScale.large=Large
|
options.guiScale.large=Large
|
||||||
options.advancedOpengl=Advanced OpenGL
|
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.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.farWarning1=A 64 bit Java installation is recommended
|
||||||
options.farWarning2=for 'Far' render distance (you have 32 bit)
|
options.farWarning2=for 'Far' render distance (you have 32 bit)
|
||||||
options.particles=Particles
|
options.particles=Particles
|
||||||
@@ -271,36 +324,58 @@ options.snooper=Allow Snooper
|
|||||||
options.snooper.view=Snooper Settings...
|
options.snooper.view=Snooper Settings...
|
||||||
options.snooper.title=Machine Specs Collection
|
options.snooper.title=Machine Specs Collection
|
||||||
options.snooper.desc=We want to collect information about your machine to help improve Minecraft by knowing what we can support and where the biggest problems are. All of this information is completely anonymous and viewable below. We promise we won't do anything bad with this data, but if you want to opt out then feel free to toggle it off!
|
options.snooper.desc=We want to collect information about your machine to help improve Minecraft by knowing what we can support and where the biggest problems are. All of this information is completely anonymous and viewable below. We promise we won't do anything bad with this data, but if you want to opt out then feel free to toggle it off!
|
||||||
options.resourcepack=Resource Packs
|
options.resourcepack=Resource Packs...
|
||||||
options.fullscreen=Fullscreen
|
options.fullscreen=Fullscreen
|
||||||
options.vsync=Use VSync
|
options.vsync=Use VSync
|
||||||
options.touchscreen=Touchscreen Mode
|
options.touchscreen=Touchscreen Mode
|
||||||
|
options.mipmapLevels=Mipmap Levels
|
||||||
performance.max=Max FPS
|
options.anisotropicFiltering=Anisotropic Filtering
|
||||||
performance.balanced=Balanced
|
options.forceUnicodeFont=Force Unicode Font
|
||||||
performance.powersaver=Power saver
|
|
||||||
|
|
||||||
controls.title=Controls
|
controls.title=Controls
|
||||||
|
controls.reset=Reset
|
||||||
|
controls.resetAll=Reset Keys
|
||||||
|
|
||||||
key.forward=Forward
|
key.sprint=Sprint
|
||||||
key.left=Left
|
key.forward=Walk Forwards
|
||||||
key.back=Back
|
key.left=Strafe Left
|
||||||
key.right=Right
|
key.back=Walk Backwards
|
||||||
|
key.right=Strafe Right
|
||||||
key.jump=Jump
|
key.jump=Jump
|
||||||
key.inventory=Inventory
|
key.inventory=Inventory
|
||||||
key.drop=Drop
|
key.drop=Drop Item
|
||||||
key.chat=Chat
|
key.chat=Open Chat
|
||||||
key.fog=Toggle Fog
|
|
||||||
key.sneak=Sneak
|
key.sneak=Sneak
|
||||||
key.playerlist=List Players
|
key.playerlist=List Players
|
||||||
key.attack=Attack
|
key.attack=Attack/Destroy
|
||||||
key.use=Use Item
|
key.use=Use Item/Place Block
|
||||||
key.pickItem=Pick Block
|
key.pickItem=Pick Block
|
||||||
key.mouseButton=Button %1$s
|
key.mouseButton=Button %1$s
|
||||||
key.command=Command
|
key.command=Open Command
|
||||||
|
key.screenshot=Take Screenshot
|
||||||
|
key.togglePerspective=Toggle Perspective
|
||||||
|
key.smoothCamera=Toggle Cinematic Camera
|
||||||
|
key.hotbar.1=Hotbar Slot 1
|
||||||
|
key.hotbar.2=Hotbar Slot 2
|
||||||
|
key.hotbar.3=Hotbar Slot 3
|
||||||
|
key.hotbar.4=Hotbar Slot 4
|
||||||
|
key.hotbar.5=Hotbar Slot 5
|
||||||
|
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.categories.movement=Movement
|
||||||
|
key.categories.misc=Miscellaneous
|
||||||
|
key.categories.multiplayer=Multiplayer
|
||||||
|
key.categories.gameplay=Gameplay
|
||||||
|
key.categories.ui=Game Interface
|
||||||
|
key.categories.inventory=Inventory
|
||||||
|
|
||||||
resourcePack.openFolder=Open resource pack folder
|
resourcePack.openFolder=Open resource pack folder
|
||||||
resourcePack.title=Select Resource Pack
|
resourcePack.title=Select Resource Packs
|
||||||
|
resourcePack.available.title=Available Resource Packs
|
||||||
|
resourcePack.selected.title=Selected Resource Packs
|
||||||
resourcePack.folderInfo=(Place resource pack files here)
|
resourcePack.folderInfo=(Place resource pack files here)
|
||||||
|
|
||||||
book.pageIndicator=Page %1$s of %2$s
|
book.pageIndicator=Page %1$s of %2$s
|
||||||
@@ -313,22 +388,28 @@ book.finalizeWarning=Note! When you sign the book, it will no longer be editable
|
|||||||
tile.stone.name=Stone
|
tile.stone.name=Stone
|
||||||
tile.hayBlock.name=Hay Bale
|
tile.hayBlock.name=Hay Bale
|
||||||
tile.grass.name=Grass Block
|
tile.grass.name=Grass Block
|
||||||
tile.dirt.name=Dirt
|
tile.dirt.default.name=Dirt
|
||||||
|
tile.dirt.podzol.name=Podzol
|
||||||
tile.stonebrick.name=Cobblestone
|
tile.stonebrick.name=Cobblestone
|
||||||
tile.wood.name=Wooden Planks
|
tile.wood.name=Wooden Planks
|
||||||
tile.wood.oak.name=Oak Wood Planks
|
tile.wood.oak.name=Oak Wood Planks
|
||||||
tile.wood.spruce.name=Spruce Wood Planks
|
tile.wood.spruce.name=Spruce Wood Planks
|
||||||
tile.wood.birch.name=Birch Wood Planks
|
tile.wood.birch.name=Birch Wood Planks
|
||||||
tile.wood.jungle.name=Jungle 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.oak.name=Oak Sapling
|
||||||
tile.sapling.spruce.name=Spruce Sapling
|
tile.sapling.spruce.name=Spruce Sapling
|
||||||
tile.sapling.birch.name=Birch Sapling
|
tile.sapling.birch.name=Birch Sapling
|
||||||
tile.sapling.jungle.name=Jungle 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.deadbush.name=Dead Bush
|
||||||
tile.bedrock.name=Bedrock
|
tile.bedrock.name=Bedrock
|
||||||
tile.water.name=Water
|
tile.water.name=Water
|
||||||
tile.lava.name=Lava
|
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.name=Sandstone
|
||||||
tile.sandStone.default.name=Sandstone
|
tile.sandStone.default.name=Sandstone
|
||||||
tile.sandStone.chiseled.name=Chiseled Sandstone
|
tile.sandStone.chiseled.name=Chiseled Sandstone
|
||||||
@@ -342,21 +423,73 @@ tile.log.oak.name=Oak Wood
|
|||||||
tile.log.spruce.name=Spruce Wood
|
tile.log.spruce.name=Spruce Wood
|
||||||
tile.log.birch.name=Birch Wood
|
tile.log.birch.name=Birch Wood
|
||||||
tile.log.jungle.name=Jungle 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.name=Leaves
|
||||||
tile.leaves.oak.name=Oak Leaves
|
tile.leaves.oak.name=Oak Leaves
|
||||||
tile.leaves.spruce.name=Spruce Leaves
|
tile.leaves.spruce.name=Spruce Leaves
|
||||||
tile.leaves.birch.name=Birch Leaves
|
tile.leaves.birch.name=Birch Leaves
|
||||||
tile.leaves.jungle.name=Jungle 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.name=Grass
|
||||||
tile.tallgrass.shrub.name=Shrub
|
tile.tallgrass.shrub.name=Shrub
|
||||||
tile.tallgrass.grass.name=Grass
|
tile.tallgrass.grass.name=Grass
|
||||||
tile.tallgrass.fern.name=Fern
|
tile.tallgrass.fern.name=Fern
|
||||||
tile.sponge.name=Sponge
|
tile.sponge.name=Sponge
|
||||||
tile.glass.name=Glass
|
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.thinGlass.name=Glass Pane
|
||||||
tile.cloth.name=Wool
|
tile.cloth.name=Wool
|
||||||
tile.flower.name=Flower
|
tile.flower1.dandelion.name=Dandelion
|
||||||
tile.rose.name=Rose
|
tile.flower2.poppy.name=Poppy
|
||||||
|
tile.flower2.blueOrchid.name=Blue Orchid
|
||||||
|
tile.flower2.allium.name=Allium
|
||||||
|
tile.flower2.houstonia.name=Azure Bluet
|
||||||
|
tile.flower2.tulipRed.name=Red Tulip
|
||||||
|
tile.flower2.tulipOrange.name=Orange Tulip
|
||||||
|
tile.flower2.tulipWhite.name=White Tulip
|
||||||
|
tile.flower2.tulipPink.name=Pink Tulip
|
||||||
|
tile.flower2.oxeyeDaisy.name=Oxeye Daisy
|
||||||
|
tile.doublePlant.sunflower.name=Sunflower
|
||||||
|
tile.doublePlant.syringa.name=Lilac
|
||||||
|
tile.doublePlant.grass.name=Double Tallgrass
|
||||||
|
tile.doublePlant.fern.name=Large Fern
|
||||||
|
tile.doublePlant.rose.name=Rose Bush
|
||||||
|
tile.doublePlant.paeonia.name=Peony
|
||||||
tile.mushroom.name=Mushroom
|
tile.mushroom.name=Mushroom
|
||||||
tile.blockGold.name=Block of Gold
|
tile.blockGold.name=Block of Gold
|
||||||
tile.blockIron.name=Block of Iron
|
tile.blockIron.name=Block of Iron
|
||||||
@@ -372,6 +505,8 @@ tile.woodSlab.oak.name=Oak Wood Slab
|
|||||||
tile.woodSlab.spruce.name=Spruce Wood Slab
|
tile.woodSlab.spruce.name=Spruce Wood Slab
|
||||||
tile.woodSlab.birch.name=Birch Wood Slab
|
tile.woodSlab.birch.name=Birch Wood Slab
|
||||||
tile.woodSlab.jungle.name=Jungle 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.brick.name=Bricks
|
||||||
tile.tnt.name=TNT
|
tile.tnt.name=TNT
|
||||||
tile.bookshelf.name=Bookshelf
|
tile.bookshelf.name=Bookshelf
|
||||||
@@ -384,6 +519,8 @@ tile.stairsWood.name=Oak Wood Stairs
|
|||||||
tile.stairsWoodSpruce.name=Spruce Wood Stairs
|
tile.stairsWoodSpruce.name=Spruce Wood Stairs
|
||||||
tile.stairsWoodBirch.name=Birch Wood Stairs
|
tile.stairsWoodBirch.name=Birch Wood Stairs
|
||||||
tile.stairsWoodJungle.name=Jungle 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.chest.name=Chest
|
||||||
tile.chestTrap.name=Trapped Chest
|
tile.chestTrap.name=Trapped Chest
|
||||||
tile.redstoneDust.name=Redstone Dust
|
tile.redstoneDust.name=Redstone Dust
|
||||||
@@ -429,6 +566,7 @@ tile.woolCarpet.magenta.name=Magenta Carpet
|
|||||||
tile.woolCarpet.orange.name=Orange Carpet
|
tile.woolCarpet.orange.name=Orange Carpet
|
||||||
tile.woolCarpet.white.name=Carpet
|
tile.woolCarpet.white.name=Carpet
|
||||||
tile.ice.name=Ice
|
tile.ice.name=Ice
|
||||||
|
tile.icePacked.name=Packed Ice
|
||||||
tile.cactus.name=Cactus
|
tile.cactus.name=Cactus
|
||||||
tile.clay.name=Clay
|
tile.clay.name=Clay
|
||||||
tile.clayHardenedStained.black.name=Black Stained Clay
|
tile.clayHardenedStained.black.name=Black Stained Clay
|
||||||
@@ -496,6 +634,9 @@ tile.stonebricksmooth.chiseled.name=Chiseled Stone Bricks
|
|||||||
tile.monsterStoneEgg.stone.name=Stone Monster Egg
|
tile.monsterStoneEgg.stone.name=Stone Monster Egg
|
||||||
tile.monsterStoneEgg.cobble.name=Cobblestone Monster Egg
|
tile.monsterStoneEgg.cobble.name=Cobblestone Monster Egg
|
||||||
tile.monsterStoneEgg.brick.name=Stone Brick Monster Egg
|
tile.monsterStoneEgg.brick.name=Stone Brick Monster Egg
|
||||||
|
tile.monsterStoneEgg.mossybrick.name=Mossy Stone Brick Monster Egg
|
||||||
|
tile.monsterStoneEgg.crackedbrick.name=Cracked Stone Brick Monster Egg
|
||||||
|
tile.monsterStoneEgg.chiseledbrick.name=Chiseled Stone Brick Monster Egg
|
||||||
tile.pistonBase.name=Piston
|
tile.pistonBase.name=Piston
|
||||||
tile.pistonStickyBase.name=Sticky Piston
|
tile.pistonStickyBase.name=Sticky Piston
|
||||||
tile.fenceIron.name=Iron Bars
|
tile.fenceIron.name=Iron Bars
|
||||||
@@ -646,14 +787,31 @@ item.minecartChest.name=Minecart with Chest
|
|||||||
item.minecartFurnace.name=Minecart with Furnace
|
item.minecartFurnace.name=Minecart with Furnace
|
||||||
item.minecartTnt.name=Minecart with TNT
|
item.minecartTnt.name=Minecart with TNT
|
||||||
item.minecartHopper.name=Minecart with Hopper
|
item.minecartHopper.name=Minecart with Hopper
|
||||||
|
item.minecartCommandBlock.name=Minecart with Command Block
|
||||||
item.egg.name=Egg
|
item.egg.name=Egg
|
||||||
item.compass.name=Compass
|
item.compass.name=Compass
|
||||||
item.fishingRod.name=Fishing Rod
|
item.fishingRod.name=Fishing Rod
|
||||||
item.clock.name=Clock
|
item.clock.name=Clock
|
||||||
item.yellowDust.name=Glowstone Dust
|
item.yellowDust.name=Glowstone Dust
|
||||||
item.fishRaw.name=Raw Fish
|
item.fish.cod.raw.name=Raw Fish
|
||||||
item.fishCooked.name=Cooked Fish
|
item.fish.salmon.raw.name=Raw Salmon
|
||||||
|
item.fish.pufferfish.raw.name=Pufferfish
|
||||||
|
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.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.bone.name=Bone
|
||||||
item.dyePowder.black.name=Ink Sac
|
item.dyePowder.black.name=Ink Sac
|
||||||
item.dyePowder.red.name=Rose Red
|
item.dyePowder.red.name=Rose Red
|
||||||
@@ -772,6 +930,7 @@ container.minecart=Minecart
|
|||||||
container.enderchest=Ender Chest
|
container.enderchest=Ender Chest
|
||||||
|
|
||||||
item.dyed=Dyed
|
item.dyed=Dyed
|
||||||
|
item.unbreakable=Unbreakable
|
||||||
|
|
||||||
entity.Item.name=Item
|
entity.Item.name=Item
|
||||||
entity.XPOrb.name=Experience Orb
|
entity.XPOrb.name=Experience Orb
|
||||||
@@ -883,6 +1042,7 @@ deathScreen.title.hardcore=Game over!
|
|||||||
deathScreen.hardcoreInfo=You cannot respawn in hardcore mode!
|
deathScreen.hardcoreInfo=You cannot respawn in hardcore mode!
|
||||||
deathScreen.title=You died!
|
deathScreen.title=You died!
|
||||||
deathScreen.leaveServer=Leave server
|
deathScreen.leaveServer=Leave server
|
||||||
|
deathScreen.quit.confirm=Are you sure you want to quit?
|
||||||
|
|
||||||
potion.effects.whenDrank=When Applied:
|
potion.effects.whenDrank=When Applied:
|
||||||
potion.empty=No Effects
|
potion.empty=No Effects
|
||||||
@@ -990,6 +1150,8 @@ enchantment.untouching=Silk Touch
|
|||||||
enchantment.durability=Unbreaking
|
enchantment.durability=Unbreaking
|
||||||
enchantment.lootBonus=Looting
|
enchantment.lootBonus=Looting
|
||||||
enchantment.lootBonusDigger=Fortune
|
enchantment.lootBonusDigger=Fortune
|
||||||
|
enchantment.lootBonusFishing=Luck of the Sea
|
||||||
|
enchantment.fishingSpeed=Lure
|
||||||
enchantment.arrowDamage=Power
|
enchantment.arrowDamage=Power
|
||||||
enchantment.arrowFire=Flame
|
enchantment.arrowFire=Flame
|
||||||
enchantment.arrowKnockback=Punch
|
enchantment.arrowKnockback=Punch
|
||||||
@@ -1010,14 +1172,21 @@ enchantment.level.10=X
|
|||||||
gui.achievements=Achievements
|
gui.achievements=Achievements
|
||||||
gui.stats=Statistics
|
gui.stats=Statistics
|
||||||
|
|
||||||
|
stats.tooltip.type.achievement=Achievement
|
||||||
|
stats.tooltip.type.statistic=Statistic
|
||||||
stat.generalButton=General
|
stat.generalButton=General
|
||||||
stat.blocksButton=Blocks
|
stat.blocksButton=Blocks
|
||||||
stat.itemsButton=Items
|
stat.itemsButton=Items
|
||||||
|
stat.mobsButton=Mobs
|
||||||
|
|
||||||
stat.used=Times Used
|
stat.used=Times Used
|
||||||
stat.mined=Times Mined
|
stat.mined=Times Mined
|
||||||
stat.depleted=Times Depleted
|
stat.depleted=Times Depleted
|
||||||
stat.crafted=Times Crafted
|
stat.crafted=Times Crafted
|
||||||
|
stat.entityKills=You killed %d %s
|
||||||
|
stat.entityKilledBy=%s killed you %d time(s)
|
||||||
|
stat.entityKills.none=You have never killed %s
|
||||||
|
stat.entityKilledBy.none=You have never been killed by %s
|
||||||
|
|
||||||
stat.startGame=Times played
|
stat.startGame=Times played
|
||||||
stat.createWorld=Worlds created
|
stat.createWorld=Worlds created
|
||||||
@@ -1036,6 +1205,7 @@ stat.diveOneCm=Distance Dove
|
|||||||
stat.minecartOneCm=Distance by Minecart
|
stat.minecartOneCm=Distance by Minecart
|
||||||
stat.boatOneCm=Distance by Boat
|
stat.boatOneCm=Distance by Boat
|
||||||
stat.pigOneCm=Distance by Pig
|
stat.pigOneCm=Distance by Pig
|
||||||
|
stat.horseOneCm=Distance by Horse
|
||||||
stat.jump=Jumps
|
stat.jump=Jumps
|
||||||
stat.drop=Items Dropped
|
stat.drop=Items Dropped
|
||||||
|
|
||||||
@@ -1043,8 +1213,11 @@ stat.damageDealt=Damage Dealt
|
|||||||
stat.damageTaken=Damage Taken
|
stat.damageTaken=Damage Taken
|
||||||
stat.deaths=Number of Deaths
|
stat.deaths=Number of Deaths
|
||||||
stat.mobKills=Mob Kills
|
stat.mobKills=Mob Kills
|
||||||
|
stat.animalsBred=Animals Bred
|
||||||
stat.playerKills=Player Kills
|
stat.playerKills=Player Kills
|
||||||
stat.fishCaught=Fish Caught
|
stat.fishCaught=Fish Caught
|
||||||
|
stat.treasureFished=Treasure Fished
|
||||||
|
stat.junkFished=Junk Fished
|
||||||
|
|
||||||
stat.mineBlock=%1$s Mined
|
stat.mineBlock=%1$s Mined
|
||||||
stat.craftItem=%1$s Crafted
|
stat.craftItem=%1$s Crafted
|
||||||
@@ -1054,6 +1227,7 @@ stat.breakItem=%1$s Depleted
|
|||||||
achievement.get=Achievement get!
|
achievement.get=Achievement get!
|
||||||
|
|
||||||
achievement.taken=Taken!
|
achievement.taken=Taken!
|
||||||
|
achievement.unknown=???
|
||||||
|
|
||||||
achievement.requires=Requires '%1$s'
|
achievement.requires=Requires '%1$s'
|
||||||
achievement.openInventory=Taking Inventory
|
achievement.openInventory=Taking Inventory
|
||||||
@@ -1086,12 +1260,16 @@ achievement.killEnemy=Monster Hunter
|
|||||||
achievement.killEnemy.desc=Attack and destroy a monster
|
achievement.killEnemy.desc=Attack and destroy a monster
|
||||||
achievement.killCow=Cow Tipper
|
achievement.killCow=Cow Tipper
|
||||||
achievement.killCow.desc=Harvest some leather
|
achievement.killCow.desc=Harvest some leather
|
||||||
|
achievement.breedCow=Repopulation
|
||||||
|
achievement.breedCow.desc=Breed two cows with wheat
|
||||||
achievement.flyPig=When Pigs Fly
|
achievement.flyPig=When Pigs Fly
|
||||||
achievement.flyPig.desc=Fly a pig off a cliff
|
achievement.flyPig.desc=Fly a pig off a cliff
|
||||||
achievement.snipeSkeleton=Sniper Duel
|
achievement.snipeSkeleton=Sniper Duel
|
||||||
achievement.snipeSkeleton.desc=Kill a skeleton with an arrow from more than 50 meters
|
achievement.snipeSkeleton.desc=Kill a skeleton with an arrow from more than 50 meters
|
||||||
achievement.diamonds=DIAMONDS!
|
achievement.diamonds=DIAMONDS!
|
||||||
achievement.diamonds.desc=Acquire diamonds with your iron tools
|
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=We Need to Go Deeper
|
||||||
achievement.portal.desc=Build a portal to the Nether
|
achievement.portal.desc=Build a portal to the Nether
|
||||||
achievement.ghast=Return to Sender
|
achievement.ghast=Return to Sender
|
||||||
@@ -1104,6 +1282,14 @@ achievement.theEnd=The End?
|
|||||||
achievement.theEnd.desc=Locate the End
|
achievement.theEnd.desc=Locate the End
|
||||||
achievement.theEnd2=The End.
|
achievement.theEnd2=The End.
|
||||||
achievement.theEnd2.desc=Defeat the Ender Dragon
|
achievement.theEnd2.desc=Defeat the Ender Dragon
|
||||||
|
achievement.spawnWither=The Beginning?
|
||||||
|
achievement.spawnWither.desc=Spawn the Wither
|
||||||
|
achievement.killWither=The Beginning.
|
||||||
|
achievement.killWither.desc=Kill the Wither
|
||||||
|
achievement.fullBeacon=Beaconator
|
||||||
|
achievement.fullBeacon.desc=Create a full beacon
|
||||||
|
achievement.exploreAllBiomes=Adventuring Time
|
||||||
|
achievement.exploreAllBiomes.desc=Discover all biomes
|
||||||
achievement.enchantments=Enchanter
|
achievement.enchantments=Enchanter
|
||||||
achievement.enchantments.desc=Use a book, obsidian and diamonds to construct an enchantment table
|
achievement.enchantments.desc=Use a book, obsidian and diamonds to construct an enchantment table
|
||||||
achievement.overkill=Overkill
|
achievement.overkill=Overkill
|
||||||
@@ -1123,7 +1309,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.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.double.tooBig=The number you have entered (%.2f) is too big, it must be at most %.2f
|
||||||
commands.generic.usage=Usage: %s
|
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.failure.widthdrawXp=Cannot give player negative experience points
|
||||||
commands.xp.success=Given %d experience to %s
|
commands.xp.success=Given %d experience to %s
|
||||||
commands.xp.success.levels=Given %d levels to %s
|
commands.xp.success.levels=Given %d levels to %s
|
||||||
@@ -1132,9 +1321,29 @@ commands.xp.usage=/xp <amount> [player] OR /xp <amount>L [player]
|
|||||||
commands.playsound.usage=/playsound <sound> <player> [x] [y] [z] [volume] [pitch] [minimumVolume]
|
commands.playsound.usage=/playsound <sound> <player> [x] [y] [z] [volume] [pitch] [minimumVolume]
|
||||||
commands.playsound.success=Played sound '%s' to %s
|
commands.playsound.success=Played sound '%s' to %s
|
||||||
commands.playsound.playerTooFar=Player %s is too far away to hear the sound
|
commands.playsound.playerTooFar=Player %s is too far away to hear the sound
|
||||||
commands.give.usage=/give <player> <item> [amount] [data]
|
commands.give.usage=/give <player> <item> [amount] [data] [dataTag]
|
||||||
commands.give.notFound=There is no such item with ID %d
|
commands.give.notFound=There is no such item with ID %d
|
||||||
commands.give.success=Given %s (ID %d) * %d to %s
|
commands.give.success=Given %s * %d to %s
|
||||||
|
commands.give.tagError=Data tag parsing failed: %s
|
||||||
|
commands.summon.usage=/summon <EntityName> [x] [y] [z] [dataTag]
|
||||||
|
commands.summon.success=Object successfully summoned
|
||||||
|
commands.summon.failed=Unable to summon object
|
||||||
|
commands.summon.tagError=Data tag parsing failed: %s
|
||||||
|
commands.summon.outOfWorld=Cannot summon the object out of the world
|
||||||
|
commands.testforblock.usage=/testforblock <x> <y> <z> <TileName> [dataValue] [dataTag]
|
||||||
|
commands.testforblock.failed.tile=The block at %d,%d,%d is %s (expected: %s).
|
||||||
|
commands.testforblock.failed.data=The block at %d,%d,%d had the data value of %s (expected: %s).
|
||||||
|
commands.testforblock.failed.nbt=The block at %d,%d,%d did not have the required NBT keys.
|
||||||
|
commands.testforblock.failed.tileEntity=The block at %d,%d,%d is not a tile entity and cannot support tag matching.
|
||||||
|
commands.testforblock.success=Successfully found the block at %d,%d,%d.
|
||||||
|
commands.testforblock.outOfWorld=Cannot test for block outside of the world
|
||||||
|
commands.setblock.usage=/setblock <x> <y> <z> <TileName> [dataValue] [oldBlockHandling] [dataTag]
|
||||||
|
commands.setblock.success=Block placed
|
||||||
|
commands.setblock.failed=Unable to place block
|
||||||
|
commands.setblock.tagError=Data tag parsing failed: %s
|
||||||
|
commands.setblock.outOfWorld=Cannot place block outside of the world
|
||||||
|
commands.setblock.notFound=There is no such block with ID/name %s
|
||||||
|
commands.setblock.noChange=The block couldn't be placed
|
||||||
commands.effect.usage=/effect <player> <effect> [seconds] [amplifier]
|
commands.effect.usage=/effect <player> <effect> [seconds] [amplifier]
|
||||||
commands.effect.notFound=There is no such mob effect with ID %d
|
commands.effect.notFound=There is no such mob effect with ID %d
|
||||||
commands.effect.success=Given %1$s (ID %2$d) * %3$d to %4$s for %5$d seconds
|
commands.effect.success=Given %1$s (ID %2$d) * %3$d to %4$s for %5$d seconds
|
||||||
@@ -1217,14 +1426,14 @@ commands.scoreboard.objectives.setdisplay.invalidSlot=No such display slot '%s'
|
|||||||
commands.scoreboard.objectives.setdisplay.successCleared=Cleared objective 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.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.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.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.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
|
commands.scoreboard.objectives.add.displayTooLong=The display name '%s' is too long for an objective, it can be at most %d characters long
|
||||||
commands.scoreboard.objectives.add.success=Added new objective '%s' successfully
|
commands.scoreboard.objectives.add.success=Added new objective '%s' successfully
|
||||||
commands.scoreboard.objectives.remove.usage=/scoreboard objectives remove <name>
|
commands.scoreboard.objectives.remove.usage=/scoreboard objectives remove <name>
|
||||||
commands.scoreboard.objectives.remove.success=Removed objective '%s' successfully
|
commands.scoreboard.objectives.remove.success=Removed objective '%s' successfully
|
||||||
commands.scoreboard.objectives.list.count=Showing %d objective(s) on scoreboard
|
commands.scoreboard.objectives.list.count=Showing %d objective(s) on scoreboard:
|
||||||
commands.scoreboard.objectives.list.entry=- %s: displays as '%s' and is type '%s'
|
commands.scoreboard.objectives.list.entry=- %s: displays as '%s' and is type '%s'
|
||||||
commands.scoreboard.objectives.list.empty=There are no objectives on the scoreboard
|
commands.scoreboard.objectives.list.empty=There are no objectives on the scoreboard
|
||||||
commands.scoreboard.players.usage=/scoreboard players <set|add|remove|reset|list>
|
commands.scoreboard.players.usage=/scoreboard players <set|add|remove|reset|list>
|
||||||
@@ -1234,9 +1443,10 @@ commands.scoreboard.players.add.usage=/scoreboard players add <player> <objectiv
|
|||||||
commands.scoreboard.players.remove.usage=/scoreboard players remove <player> <objective> <count>
|
commands.scoreboard.players.remove.usage=/scoreboard players remove <player> <objective> <count>
|
||||||
commands.scoreboard.players.reset.usage=/scoreboard players reset <player>
|
commands.scoreboard.players.reset.usage=/scoreboard players reset <player>
|
||||||
commands.scoreboard.players.reset.success=Reset all scores of player %s
|
commands.scoreboard.players.reset.success=Reset all scores of player %s
|
||||||
commands.scoreboard.players.list.count=Showing %d tracked players on the scoreboard
|
commands.scoreboard.players.list.usage=/scoreboard players list [name]
|
||||||
|
commands.scoreboard.players.list.count=Showing %d tracked players on the scoreboard:
|
||||||
commands.scoreboard.players.list.empty=There are no tracked players on the scoreboard
|
commands.scoreboard.players.list.empty=There are no tracked players on the scoreboard
|
||||||
commands.scoreboard.players.list.player.count=Showing %d tracked objective(s) for %s
|
commands.scoreboard.players.list.player.count=Showing %d tracked objective(s) for %s:
|
||||||
commands.scoreboard.players.list.player.entry=- %2$s: %1$d (%3$s)
|
commands.scoreboard.players.list.player.entry=- %2$s: %1$d (%3$s)
|
||||||
commands.scoreboard.players.list.player.empty=Player %s has no scores recorded
|
commands.scoreboard.players.list.player.empty=Player %s has no scores recorded
|
||||||
commands.scoreboard.teams.usage=/scoreboard teams <list|add|remove|empty|join|leave|option>
|
commands.scoreboard.teams.usage=/scoreboard teams <list|add|remove|empty|join|leave|option>
|
||||||
@@ -1246,13 +1456,13 @@ commands.scoreboard.teams.add.tooLong=The name '%s' is too long for a team, it c
|
|||||||
commands.scoreboard.teams.add.displayTooLong=The display name '%s' is too long for a team, it can be at most %d characters long
|
commands.scoreboard.teams.add.displayTooLong=The display name '%s' is too long for a team, it can be at most %d characters long
|
||||||
commands.scoreboard.teams.add.success=Added new team '%s' successfully
|
commands.scoreboard.teams.add.success=Added new team '%s' successfully
|
||||||
commands.scoreboard.teams.list.usage=/scoreboard teams list [name]
|
commands.scoreboard.teams.list.usage=/scoreboard teams list [name]
|
||||||
commands.scoreboard.teams.list.count=Showing %d teams on the scoreboard
|
commands.scoreboard.teams.list.count=Showing %d teams on the scoreboard:
|
||||||
commands.scoreboard.teams.list.entry=- %1$s: '%2$s' has %3$d players
|
commands.scoreboard.teams.list.entry=- %1$s: '%2$s' has %3$d players
|
||||||
commands.scoreboard.teams.list.empty=There are no teams registered on the scoreboard
|
commands.scoreboard.teams.list.empty=There are no teams registered on the scoreboard
|
||||||
commands.scoreboard.teams.list.player.count=Showing %d player(s) in team %s
|
commands.scoreboard.teams.list.player.count=Showing %d player(s) in team %s:
|
||||||
commands.scoreboard.teams.list.player.entry=- %2$s: %1$d (%3$s)
|
commands.scoreboard.teams.list.player.entry=- %2$s: %1$d (%3$s)
|
||||||
commands.scoreboard.teams.list.player.empty=Team %s has no players
|
commands.scoreboard.teams.list.player.empty=Team %s has no players
|
||||||
commands.scoreboard.teams.empty.usage=/scoreboard teams clear <name>
|
commands.scoreboard.teams.empty.usage=/scoreboard teams empty
|
||||||
commands.scoreboard.teams.empty.alreadyEmpty=Team %s is already empty, cannot remove nonexistant players
|
commands.scoreboard.teams.empty.alreadyEmpty=Team %s is already empty, cannot remove nonexistant players
|
||||||
commands.scoreboard.teams.empty.success=Removed all %d player(s) from team %s
|
commands.scoreboard.teams.empty.success=Removed all %d player(s) from team %s
|
||||||
commands.scoreboard.teams.remove.usage=/scoreboard teams remove <name>
|
commands.scoreboard.teams.remove.usage=/scoreboard teams remove <name>
|
||||||
@@ -1264,7 +1474,7 @@ commands.scoreboard.teams.leave.usage=/scoreboard teams leave [player]
|
|||||||
commands.scoreboard.teams.leave.success=Removed %d player(s) from their teams: %s
|
commands.scoreboard.teams.leave.success=Removed %d player(s) from their teams: %s
|
||||||
commands.scoreboard.teams.leave.failure=Could not remove %d player(s) from their teams: %s
|
commands.scoreboard.teams.leave.failure=Could not remove %d player(s) from their teams: %s
|
||||||
commands.scoreboard.teams.leave.noTeam=You are not in a team
|
commands.scoreboard.teams.leave.noTeam=You are not in a team
|
||||||
commands.scoreboard.teams.option.usage=/scoreboard teams option <team> <friendlyfire|color> <value>
|
commands.scoreboard.teams.option.usage=/scoreboard teams option <team> <friendlyfire|color|seeFriendlyInvisibles> <value>
|
||||||
commands.scoreboard.teams.option.noValue=Valid values for option %s are: %s
|
commands.scoreboard.teams.option.noValue=Valid values for option %s are: %s
|
||||||
commands.scoreboard.teams.option.success=Set option %s for team %s to %s
|
commands.scoreboard.teams.option.success=Set option %s for team %s to %s
|
||||||
commands.gamemode.success.self=Set own game mode to %s
|
commands.gamemode.success.self=Set own game mode to %s
|
||||||
@@ -1283,6 +1493,8 @@ commands.debug.start=Started debug profiling
|
|||||||
commands.debug.stop=Stopped debug profiling after %.2f seconds (%d ticks)
|
commands.debug.stop=Stopped debug profiling after %.2f seconds (%d ticks)
|
||||||
commands.debug.notStarted=Can't stop profiling when we haven't started yet!
|
commands.debug.notStarted=Can't stop profiling when we haven't started yet!
|
||||||
commands.debug.usage=/debug <start|stop>
|
commands.debug.usage=/debug <start|stop>
|
||||||
|
commands.tellraw.usage=/tellraw <player> <raw json message>
|
||||||
|
commands.tellraw.jsonException=Invalid json: %s
|
||||||
commands.message.usage=/tell <player> <private message ...>
|
commands.message.usage=/tell <player> <private message ...>
|
||||||
commands.message.sameTarget=You can't send a private message to yourself!
|
commands.message.sameTarget=You can't send a private message to yourself!
|
||||||
commands.message.display.outgoing=You whisper to %s: %s
|
commands.message.display.outgoing=You whisper to %s: %s
|
||||||
@@ -1291,10 +1503,12 @@ commands.difficulty.usage=/difficulty <new difficulty>
|
|||||||
commands.difficulty.success=Set game difficulty to %s
|
commands.difficulty.success=Set game difficulty to %s
|
||||||
commands.spawnpoint.usage=/spawnpoint OR /spawnpoint <player> OR /spawnpoint <player> <x> <y> <z>
|
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.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.usage=/gamerule <rule name> <value> OR /gamerule <rule name>
|
||||||
commands.gamerule.success=Game rule has been updated
|
commands.gamerule.success=Game rule has been updated
|
||||||
commands.gamerule.norule=No game rule called '%s' is available
|
commands.gamerule.norule=No game rule called '%s' is available
|
||||||
commands.weather.usage=/weather <clear/rain/thunder> [duration in seconds]
|
commands.weather.usage=/weather <clear|rain|thunder> [duration in seconds]
|
||||||
commands.weather.clear=Changing to clear weather
|
commands.weather.clear=Changing to clear weather
|
||||||
commands.weather.rain=Changing to rainy weather
|
commands.weather.rain=Changing to rainy weather
|
||||||
commands.weather.thunder=Changing to rain and thunder
|
commands.weather.thunder=Changing to rain and thunder
|
||||||
@@ -1311,6 +1525,11 @@ commands.spreadplayers.info.teams=(Average distance between teams is %s blocks a
|
|||||||
commands.spreadplayers.info.players=(Average distance between players is %s blocks apart after %s iterations)
|
commands.spreadplayers.info.players=(Average distance between players is %s blocks apart after %s iterations)
|
||||||
commands.spreadplayers.failure.teams=Could not spread %s teams around %s,%s (too many players for space - try using spread of at most %s)
|
commands.spreadplayers.failure.teams=Could not spread %s teams around %s,%s (too many players for space - try using spread of at most %s)
|
||||||
commands.spreadplayers.failure.players=Could not spread %s players around %s,%s (too many players for space - try using spread of at most %s)
|
commands.spreadplayers.failure.players=Could not spread %s players around %s,%s (too many players for space - try using spread of at most %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.statTooLow=Player %s does not have the stat %s
|
||||||
|
|
||||||
itemGroup.buildingBlocks=Building Blocks
|
itemGroup.buildingBlocks=Building Blocks
|
||||||
itemGroup.decorations=Decoration Blocks
|
itemGroup.decorations=Decoration Blocks
|
||||||
@@ -1333,6 +1552,7 @@ advMode.command=Console Command
|
|||||||
advMode.nearestPlayer=Use "@p" to target nearest player
|
advMode.nearestPlayer=Use "@p" to target nearest player
|
||||||
advMode.randomPlayer=Use "@r" to target random player
|
advMode.randomPlayer=Use "@r" to target random player
|
||||||
advMode.allPlayers=Use "@a" to target all players
|
advMode.allPlayers=Use "@a" to target all players
|
||||||
|
advMode.previousOutput=Previous Output
|
||||||
|
|
||||||
advMode.notEnabled=Command blocks are not enabled on this server
|
advMode.notEnabled=Command blocks are not enabled on this server
|
||||||
advMode.notAllowed=Must be an opped player in creative mode
|
advMode.notAllowed=Must be an opped player in creative mode
|
||||||
@@ -1340,15 +1560,26 @@ advMode.notAllowed=Must be an opped player in creative mode
|
|||||||
mco.title=Minecraft Realms
|
mco.title=Minecraft Realms
|
||||||
mount.onboard=Press %1$s to dismount
|
mount.onboard=Press %1$s to dismount
|
||||||
|
|
||||||
|
mco.terms.buttons.agree=Agree
|
||||||
|
mco.terms.buttons.disagree=Don't Agree
|
||||||
|
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.play=Play
|
||||||
mco.selectServer.configure=Configure
|
mco.selectServer.configure=Configure
|
||||||
mco.selectServer.leave=Leave Realm
|
mco.selectServer.leave=Leave Realm
|
||||||
mco.selectServer.create=Create Realm
|
mco.selectServer.create=Create Realm
|
||||||
|
mco.selectServer.buy=Buy Realm
|
||||||
mco.selectServer.moreinfo=More Info
|
mco.selectServer.moreinfo=More Info
|
||||||
|
|
||||||
mco.selectServer.expired=Expired Server
|
mco.selectServer.expired=Expired Server
|
||||||
mco.selectServer.open=Open Server
|
mco.selectServer.open=Open Server
|
||||||
mco.selectServer.closed=Closed Server
|
mco.selectServer.closed=Closed Server
|
||||||
|
mco.selectServer.locked=Locked Server
|
||||||
|
|
||||||
mco.selectServer.expires.days=Expires in %s days
|
mco.selectServer.expires.days=Expires in %s days
|
||||||
mco.selectServer.expires.day=Expires in a day
|
mco.selectServer.expires.day=Expires in a day
|
||||||
@@ -1378,7 +1609,7 @@ mco.configure.world.status=Status
|
|||||||
mco.configure.world.subscription.title=Subscription Info
|
mco.configure.world.subscription.title=Subscription Info
|
||||||
mco.configure.world.subscription.daysleft=Days Left
|
mco.configure.world.subscription.daysleft=Days Left
|
||||||
mco.configure.world.subscription.start=Start Date
|
mco.configure.world.subscription.start=Start Date
|
||||||
mco.configure.world.subscription.extend=Extend
|
mco.configure.world.subscription.extend=Extend Subscription
|
||||||
|
|
||||||
mco.create.world.location.title=Locations
|
mco.create.world.location.title=Locations
|
||||||
mco.create.world.location.warning=You may not get the exact location you select
|
mco.create.world.location.warning=You may not get the exact location you select
|
||||||
@@ -1399,9 +1630,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.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.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.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.connecting=Connecting to the online server...
|
||||||
mco.connect.authorizing=Logging in...
|
mco.connect.authorizing=Logging in...
|
||||||
mco.connect.failed=Failed to connect to the online server
|
mco.connect.failed=Failed to connect to the online server
|
||||||
@@ -1414,6 +1651,7 @@ mco.client.outdated.msg=Your client is outdated, please consider updating it to
|
|||||||
mco.backup.title=Backups
|
mco.backup.title=Backups
|
||||||
mco.backup.button.restore=Restore
|
mco.backup.button.restore=Restore
|
||||||
mco.backup.restoring=Restoring your realm
|
mco.backup.restoring=Restoring your realm
|
||||||
|
mco.backup.button.download=Download Latest
|
||||||
|
|
||||||
mco.template.title=Realm Templates
|
mco.template.title=Realm Templates
|
||||||
mco.template.button.select=Select
|
mco.template.button.select=Select
|
||||||
@@ -1424,6 +1662,7 @@ mco.invites.button.accept=Accept
|
|||||||
mco.invites.button.reject=Reject
|
mco.invites.button.reject=Reject
|
||||||
mco.invites.title=Pending Invitations
|
mco.invites.title=Pending Invitations
|
||||||
mco.invites.pending=New invitations!
|
mco.invites.pending=New invitations!
|
||||||
|
mco.invites.nopending=No pending invitations!
|
||||||
|
|
||||||
build.tooHigh=Height limit for building is %s blocks
|
build.tooHigh=Height limit for building is %s blocks
|
||||||
|
|
||||||
@@ -1440,4 +1679,7 @@ attribute.name.generic.maxHealth=Max Health
|
|||||||
attribute.name.generic.followRange=Mob Follow Range
|
attribute.name.generic.followRange=Mob Follow Range
|
||||||
attribute.name.generic.knockbackResistance=Knockback Resistance
|
attribute.name.generic.knockbackResistance=Knockback Resistance
|
||||||
attribute.name.generic.movementSpeed=Speed
|
attribute.name.generic.movementSpeed=Speed
|
||||||
attribute.name.generic.attackDamage=Attack Damage
|
attribute.name.generic.attackDamage=Attack Damage
|
||||||
|
|
||||||
|
screenshot.success=Saved screenshot as %s
|
||||||
|
screenshot.failure=Couldn't save screenshot: %s
|
||||||
|
|||||||
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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
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;
|
||||||
|
}
|
||||||
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 ] }
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -314,7 +314,8 @@ Put that cookie down!
|
|||||||
Pretty scary!
|
Pretty scary!
|
||||||
I have a suggestion.
|
I have a suggestion.
|
||||||
Now with extra hugs!
|
Now with extra hugs!
|
||||||
Almost java 6!
|
Now java 6!
|
||||||
Woah.
|
Woah.
|
||||||
HURNERJSGER?
|
HURNERJSGER?
|
||||||
What's up, Doc?
|
What's up, Doc?
|
||||||
|
Now contains 32 random daily cats!
|
||||||
BIN
assets/minecraft/textures/blocks/dirt_podzol_side.png
Normal file
|
After Width: | Height: | Size: 740 B |
BIN
assets/minecraft/textures/blocks/dirt_podzol_top.png
Normal file
|
After Width: | Height: | Size: 823 B |
BIN
assets/minecraft/textures/blocks/double_plant_fern_bottom.png
Normal file
|
After Width: | Height: | Size: 706 B |
BIN
assets/minecraft/textures/blocks/double_plant_fern_top.png
Normal file
|
After Width: | Height: | Size: 670 B |
BIN
assets/minecraft/textures/blocks/double_plant_grass_bottom.png
Normal file
|
After Width: | Height: | Size: 668 B |
BIN
assets/minecraft/textures/blocks/double_plant_grass_top.png
Normal file
|
After Width: | Height: | Size: 674 B |
BIN
assets/minecraft/textures/blocks/double_plant_paeonia_bottom.png
Normal file
|
After Width: | Height: | Size: 665 B |
BIN
assets/minecraft/textures/blocks/double_plant_paeonia_top.png
Normal file
|
After Width: | Height: | Size: 727 B |
BIN
assets/minecraft/textures/blocks/double_plant_rose_bottom.png
Normal file
|
After Width: | Height: | Size: 698 B |
BIN
assets/minecraft/textures/blocks/double_plant_rose_top.png
Normal file
|
After Width: | Height: | Size: 637 B |
BIN
assets/minecraft/textures/blocks/double_plant_sunflower_back.png
Normal file
|
After Width: | Height: | Size: 427 B |
|
After Width: | Height: | Size: 592 B |
|
After Width: | Height: | Size: 466 B |
BIN
assets/minecraft/textures/blocks/double_plant_sunflower_top.png
Normal file
|
After Width: | Height: | Size: 576 B |
BIN
assets/minecraft/textures/blocks/double_plant_syringa_bottom.png
Normal file
|
After Width: | Height: | Size: 695 B |
BIN
assets/minecraft/textures/blocks/double_plant_syringa_top.png
Normal file
|
After Width: | Height: | Size: 671 B |
BIN
assets/minecraft/textures/blocks/flower_allium.png
Normal file
|
After Width: | Height: | Size: 482 B |
BIN
assets/minecraft/textures/blocks/flower_blue_orchid.png
Normal file
|
After Width: | Height: | Size: 545 B |
BIN
assets/minecraft/textures/blocks/flower_houstonia.png
Normal file
|
After Width: | Height: | Size: 530 B |
BIN
assets/minecraft/textures/blocks/flower_oxeye_daisy.png
Normal file
|
After Width: | Height: | Size: 556 B |
BIN
assets/minecraft/textures/blocks/flower_paeonia.png
Normal file
|
After Width: | Height: | Size: 503 B |