Compare commits

..

1 Commits
1.6.2 ... 1.7.2

Author SHA1 Message Date
InventiveBot
0cfbb49c20 Create/Update assets for version 1.7.2 2017-02-18 13:40:56 +00:00
168 changed files with 2347 additions and 48 deletions

View File

@@ -82,7 +82,7 @@ gameMode.adventure=Adventure Mode
gameMode.hardcore=Hardcore Mode!
gameMode.changed=Your game mode has been updated
selectWorld.gameMode=Game Mode:
selectWorld.gameMode=Game Mode
selectWorld.gameMode.survival=Survival
selectWorld.gameMode.survival.line1=Search for resources, crafting, gain
selectWorld.gameMode.survival.line2=levels, health and hunger
@@ -109,6 +109,9 @@ selectWorld.bonusItems=Bonus Chest:
generator.default=Default
generator.flat=Superflat
generator.largeBiomes=Large Biomes
generator.amplified=AMPLIFIED
generator.amplified.info=Notice: Just for fun, requires beefy computer
selectServer.title=Select Server
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.line2=Would you like to download and install it automagically?
multiplayer.downloadingTerrain=Downloading terrain
multiplayer.downloadingStats=Downloading statistics & achievements...
multiplayer.stopSleeping=Leave Bed
multiplayer.player.joined=%s joined 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.announcement=[%s] %s
chat.type.admin=[%s: %s]
chat.type.achievement=%s has just earned the achievement %s
chat.link.confirm=Are you sure you want to open the following website?
chat.link.warning=Never open links from people that you don't trust!
chat.copy=Copy to Clipboard
chat.link.confirmTrusted=Do you want to open this link or copy it to your clipboard?
chat.link.open=Open in browser
menu.playdemo=Play Demo World
$o=Play Demo World
menu.resetdemo=Reset Demo World
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.loginFailed=Failed to login
disconnect.loginFailedInfo=Failed to login: %s
disconnect.loginFailedInfo.serversUnavailable=The authentication are currently down for maintenance.
disconnect.loginFailedInfo.invalidSession=Invalid session (Try restarting your game)
disconnect.quitting=Quitting
disconnect.endOfStream=End of stream
disconnect.overflow=Buffer overflow
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.on=ON
options.visible=Shown
@@ -203,7 +222,9 @@ options.title=Options
options.controls=Controls...
options.video=Video Settings...
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.music=Music
options.sound=Sound
@@ -211,6 +232,7 @@ options.invertMouse=Invert Mouse
options.fov=FOV
options.fov.min=Normal
options.fov.max=Quake Pro
options.saturation=Saturation
options.gamma=Brightness
options.gamma.min=Moody
options.gamma.max=Bright
@@ -224,11 +246,12 @@ options.renderDistance.normal=Normal
options.renderDistance.far=Far
options.viewBobbing=View Bobbing
options.ao=Smooth Lighting
options.ao.off=Off
options.ao.off=OFF
options.ao.min=Minimum
options.ao.max=Maximum
options.anaglyph=3D Anaglyph
options.framerateLimit=Performance
options.framerateLimit=Max Framerate
options.framerateLimit.max=Unlimited
options.difficulty=Difficulty
options.difficulty.peaceful=Peaceful
options.difficulty.easy=Easy
@@ -244,7 +267,37 @@ options.guiScale.small=Small
options.guiScale.normal=Normal
options.guiScale.large=Large
options.advancedOpengl=Advanced OpenGL
options.fboEnable=Enable FBOs
options.postProcessEnable=Enable Post-Processing
options.aoDesc0=Enable faux ambient occlusion on blocks.
options.aoDesc1=
options.framerateLimitDesc0=Selects the maximum frame rate:
options.framerateLimitDesc1=35fps, 120fps, or 200+fps.
options.viewBobbingDesc0=Enables view-bob when moving.
options.viewBobbingDesc1=
options.renderCloudsDesc0=Enables the rendering of clouds.
options.renderCloudsDesc1=
options.graphicsDesc0='Fancy': Enables extra transparency.
options.graphicsDesc1='Fast': Suggested for lower-end hardware.
options.renderDistanceDesc0=Maximum render distance. Smaller values
options.renderDistanceDesc1=run better on lower-end hardware.
options.particlesDesc0=Selects the overall amount of particles.
options.particlesDesc1=On lower-end hardware, less is better.
options.advancedOpenglDesc0=Enables occlusion queries. On AMD and Intel
options.advancedOpenglDesc1=hardware, this may decrease performance.
options.fboEnableDesc0=Enables the use of Framebuffer Objects.
options.fboEnableDesc1=Necessary for certain Minecraft features.
options.postProcessEnableDesc0=Enables post-processing. Disabling will
options.postProcessEnableDesc1=result in reduction in Awesome Levels.
options.renderClouds=Clouds
options.qualityButton=Video Quality Settings...
options.qualityVideoTitle=Video Quality Settings
options.performanceButton=Video Performance Settings...
options.performanceVideoTitle=Video Performance Settings
options.advancedButton=Advanced Video Settings...
options.advancedVideoTitle=Advanced Video Settings
options.postButton=Post-Processing Settings...
options.postVideoTitle=Post-Processing Settings
options.farWarning1=A 64 bit Java installation is recommended
options.farWarning2=for 'Far' render distance (you have 32 bit)
options.particles=Particles
@@ -271,36 +324,58 @@ options.snooper=Allow Snooper
options.snooper.view=Snooper Settings...
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.resourcepack=Resource Packs
options.resourcepack=Resource Packs...
options.fullscreen=Fullscreen
options.vsync=Use VSync
options.touchscreen=Touchscreen Mode
performance.max=Max FPS
performance.balanced=Balanced
performance.powersaver=Power saver
options.mipmapLevels=Mipmap Levels
options.anisotropicFiltering=Anisotropic Filtering
options.forceUnicodeFont=Force Unicode Font
controls.title=Controls
controls.reset=Reset
controls.resetAll=Reset Keys
key.forward=Forward
key.left=Left
key.back=Back
key.right=Right
key.sprint=Sprint
key.forward=Walk Forwards
key.left=Strafe Left
key.back=Walk Backwards
key.right=Strafe Right
key.jump=Jump
key.inventory=Inventory
key.drop=Drop
key.chat=Chat
key.fog=Toggle Fog
key.drop=Drop Item
key.chat=Open Chat
key.sneak=Sneak
key.playerlist=List Players
key.attack=Attack
key.use=Use Item
key.attack=Attack/Destroy
key.use=Use Item/Place Block
key.pickItem=Pick Block
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.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)
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.hayBlock.name=Hay Bale
tile.grass.name=Grass Block
tile.dirt.name=Dirt
tile.dirt.default.name=Dirt
tile.dirt.podzol.name=Podzol
tile.stonebrick.name=Cobblestone
tile.wood.name=Wooden Planks
tile.wood.oak.name=Oak Wood Planks
tile.wood.spruce.name=Spruce Wood Planks
tile.wood.birch.name=Birch Wood Planks
tile.wood.jungle.name=Jungle Wood Planks
tile.wood.acacia.name=Acacia Wood Planks
tile.wood.big_oak.name=Dark Oak Wood Planks
tile.sapling.oak.name=Oak Sapling
tile.sapling.spruce.name=Spruce Sapling
tile.sapling.birch.name=Birch Sapling
tile.sapling.jungle.name=Jungle Sapling
tile.sapling.acacia.name=Acacia Sapling
tile.sapling.roofed_oak.name=Dark Oak Sapling
tile.deadbush.name=Dead Bush
tile.bedrock.name=Bedrock
tile.water.name=Water
tile.lava.name=Lava
tile.sand.name=Sand
tile.sand.default.name=Sand
tile.sand.red.name=Red Sand
tile.sandStone.name=Sandstone
tile.sandStone.default.name=Sandstone
tile.sandStone.chiseled.name=Chiseled Sandstone
@@ -342,21 +423,73 @@ tile.log.oak.name=Oak Wood
tile.log.spruce.name=Spruce Wood
tile.log.birch.name=Birch Wood
tile.log.jungle.name=Jungle Wood
tile.log.acacia.name=Acacia Wood
tile.log.big_oak.name=Dark Oak Wood
tile.leaves.name=Leaves
tile.leaves.oak.name=Oak Leaves
tile.leaves.spruce.name=Spruce Leaves
tile.leaves.birch.name=Birch Leaves
tile.leaves.jungle.name=Jungle Leaves
tile.leaves.acacia.name=Acacia Leaves
tile.leaves.big_oak.name=Dark Oak Leaves
tile.tallgrass.name=Grass
tile.tallgrass.shrub.name=Shrub
tile.tallgrass.grass.name=Grass
tile.tallgrass.fern.name=Fern
tile.sponge.name=Sponge
tile.glass.name=Glass
tile.stainedGlass.name=Stained Glass
tile.stainedGlass.black.name=Black Stained Glass
tile.stainedGlass.red.name=Red Stained Glass
tile.stainedGlass.green.name=Green Stained Glass
tile.stainedGlass.brown.name=Brown Stained Glass
tile.stainedGlass.blue.name=Blue Stained Glass
tile.stainedGlass.purple.name=Purple Stained Glass
tile.stainedGlass.cyan.name=Cyan Stained Glass
tile.stainedGlass.silver.name=Light Gray Stained Glass
tile.stainedGlass.gray.name=Gray Stained Glass
tile.stainedGlass.pink.name=Pink Stained Glass
tile.stainedGlass.lime.name=Lime Stained Glass
tile.stainedGlass.yellow.name=Yellow Stained Glass
tile.stainedGlass.lightBlue.name=Light Blue Stained Glass
tile.stainedGlass.magenta.name=Magenta Stained Glass
tile.stainedGlass.orange.name=Orange Stained Glass
tile.stainedGlass.white.name=White Stained Glass
tile.thinStainedGlass.name=Stained Glass Pane
tile.thinStainedGlass.black.name=Black Stained Glass Pane
tile.thinStainedGlass.red.name=Red Stained Glass Pane
tile.thinStainedGlass.green.name=Green Stained Glass Pane
tile.thinStainedGlass.brown.name=Brown Stained Glass Pane
tile.thinStainedGlass.blue.name=Blue Stained Glass Pane
tile.thinStainedGlass.purple.name=Purple Stained Glass Pane
tile.thinStainedGlass.cyan.name=Cyan Stained Glass Pane
tile.thinStainedGlass.silver.name=Light Gray Stained Glass Pane
tile.thinStainedGlass.gray.name=Gray Stained Glass Pane
tile.thinStainedGlass.pink.name=Pink Stained Glass Pane
tile.thinStainedGlass.lime.name=Lime Stained Glass Pane
tile.thinStainedGlass.yellow.name=Yellow Stained Glass Pane
tile.thinStainedGlass.lightBlue.name=Light Blue Stained Glass Pane
tile.thinStainedGlass.magenta.name=Magenta Stained Glass Pane
tile.thinStainedGlass.orange.name=Orange Stained Glass Pane
tile.thinStainedGlass.white.name=White Stained Glass Pane
tile.thinGlass.name=Glass Pane
tile.cloth.name=Wool
tile.flower.name=Flower
tile.rose.name=Rose
tile.flower1.dandelion.name=Dandelion
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.blockGold.name=Block of Gold
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.birch.name=Birch Wood Slab
tile.woodSlab.jungle.name=Jungle Wood Slab
tile.woodSlab.acacia.name=Acacia Wood Slab
tile.woodSlab.big_oak.name=Dark Oak Wood Slab
tile.brick.name=Bricks
tile.tnt.name=TNT
tile.bookshelf.name=Bookshelf
@@ -384,6 +519,8 @@ tile.stairsWood.name=Oak Wood Stairs
tile.stairsWoodSpruce.name=Spruce Wood Stairs
tile.stairsWoodBirch.name=Birch Wood Stairs
tile.stairsWoodJungle.name=Jungle Wood Stairs
tile.stairsWoodAcacia.name=Acacia Wood Stairs
tile.stairsWoodDarkOak.name=Dark Oak Wood Stairs
tile.chest.name=Chest
tile.chestTrap.name=Trapped Chest
tile.redstoneDust.name=Redstone Dust
@@ -429,6 +566,7 @@ tile.woolCarpet.magenta.name=Magenta Carpet
tile.woolCarpet.orange.name=Orange Carpet
tile.woolCarpet.white.name=Carpet
tile.ice.name=Ice
tile.icePacked.name=Packed Ice
tile.cactus.name=Cactus
tile.clay.name=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.cobble.name=Cobblestone 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.pistonStickyBase.name=Sticky Piston
tile.fenceIron.name=Iron Bars
@@ -646,14 +787,31 @@ item.minecartChest.name=Minecart with Chest
item.minecartFurnace.name=Minecart with Furnace
item.minecartTnt.name=Minecart with TNT
item.minecartHopper.name=Minecart with Hopper
item.minecartCommandBlock.name=Minecart with Command Block
item.egg.name=Egg
item.compass.name=Compass
item.fishingRod.name=Fishing Rod
item.clock.name=Clock
item.yellowDust.name=Glowstone Dust
item.fishRaw.name=Raw Fish
item.fishCooked.name=Cooked Fish
item.fish.cod.raw.name=Raw 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.13.desc=C418 - 13
item.record.cat.desc=C418 - cat
item.record.blocks.desc=C418 - blocks
item.record.chirp.desc=C418 - chirp
item.record.far.desc=C418 - far
item.record.mall.desc=C418 - mall
item.record.mellohi.desc=C418 - mellohi
item.record.stal.desc=C418 - stal
item.record.strad.desc=C418 - strad
item.record.ward.desc=C418 - ward
item.record.11.desc=C418 - 11
item.record.wait.desc=C418 - wait
item.bone.name=Bone
item.dyePowder.black.name=Ink Sac
item.dyePowder.red.name=Rose Red
@@ -772,6 +930,7 @@ container.minecart=Minecart
container.enderchest=Ender Chest
item.dyed=Dyed
item.unbreakable=Unbreakable
entity.Item.name=Item
entity.XPOrb.name=Experience Orb
@@ -883,6 +1042,7 @@ deathScreen.title.hardcore=Game over!
deathScreen.hardcoreInfo=You cannot respawn in hardcore mode!
deathScreen.title=You died!
deathScreen.leaveServer=Leave server
deathScreen.quit.confirm=Are you sure you want to quit?
potion.effects.whenDrank=When Applied:
potion.empty=No Effects
@@ -990,6 +1150,8 @@ enchantment.untouching=Silk Touch
enchantment.durability=Unbreaking
enchantment.lootBonus=Looting
enchantment.lootBonusDigger=Fortune
enchantment.lootBonusFishing=Luck of the Sea
enchantment.fishingSpeed=Lure
enchantment.arrowDamage=Power
enchantment.arrowFire=Flame
enchantment.arrowKnockback=Punch
@@ -1010,14 +1172,21 @@ enchantment.level.10=X
gui.achievements=Achievements
gui.stats=Statistics
stats.tooltip.type.achievement=Achievement
stats.tooltip.type.statistic=Statistic
stat.generalButton=General
stat.blocksButton=Blocks
stat.itemsButton=Items
stat.mobsButton=Mobs
stat.used=Times Used
stat.mined=Times Mined
stat.depleted=Times Depleted
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.createWorld=Worlds created
@@ -1036,6 +1205,7 @@ stat.diveOneCm=Distance Dove
stat.minecartOneCm=Distance by Minecart
stat.boatOneCm=Distance by Boat
stat.pigOneCm=Distance by Pig
stat.horseOneCm=Distance by Horse
stat.jump=Jumps
stat.drop=Items Dropped
@@ -1043,8 +1213,11 @@ stat.damageDealt=Damage Dealt
stat.damageTaken=Damage Taken
stat.deaths=Number of Deaths
stat.mobKills=Mob Kills
stat.animalsBred=Animals Bred
stat.playerKills=Player Kills
stat.fishCaught=Fish Caught
stat.treasureFished=Treasure Fished
stat.junkFished=Junk Fished
stat.mineBlock=%1$s Mined
stat.craftItem=%1$s Crafted
@@ -1054,6 +1227,7 @@ stat.breakItem=%1$s Depleted
achievement.get=Achievement get!
achievement.taken=Taken!
achievement.unknown=???
achievement.requires=Requires '%1$s'
achievement.openInventory=Taking Inventory
@@ -1086,12 +1260,16 @@ achievement.killEnemy=Monster Hunter
achievement.killEnemy.desc=Attack and destroy a monster
achievement.killCow=Cow Tipper
achievement.killCow.desc=Harvest some leather
achievement.breedCow=Repopulation
achievement.breedCow.desc=Breed two cows with wheat
achievement.flyPig=When Pigs Fly
achievement.flyPig.desc=Fly a pig off a cliff
achievement.snipeSkeleton=Sniper Duel
achievement.snipeSkeleton.desc=Kill a skeleton with an arrow from more than 50 meters
achievement.diamonds=DIAMONDS!
achievement.diamonds.desc=Acquire diamonds with your iron tools
achievement.diamondsToYou=Diamonds to you!
achievement.diamondsToYou.desc=Throw diamonds at another player.
achievement.portal=We Need to Go Deeper
achievement.portal.desc=Build a portal to the Nether
achievement.ghast=Return to Sender
@@ -1104,6 +1282,14 @@ achievement.theEnd=The End?
achievement.theEnd.desc=Locate the End
achievement.theEnd2=The End.
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.desc=Use a book, obsidian and diamonds to construct an enchantment table
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.tooBig=The number you have entered (%.2f) is too big, it must be at most %.2f
commands.generic.usage=Usage: %s
commands.generic.deprecatedId=Warning: Using numeric IDs will not be supported in the future. Please use names, such as '%s'
commands.setidletimeout.usage=/setidletimeout <Minutes until kick>
commands.setidletimeout.success=Successfully set the idle timeout to %d minutes.
commands.xp.failure.widthdrawXp=Cannot give player negative experience points
commands.xp.success=Given %d experience to %s
commands.xp.success.levels=Given %d levels to %s
@@ -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.success=Played sound '%s' to %s
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.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.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
@@ -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.successSet=Set the display objective in slot '%s' to '%s'
commands.scoreboard.objectives.add.usage=/scoreboard objectives add <name> <criteriaType> [display name ...]
commands.scoreboard.objectives.add.wrongType=Invalid objective criteria type. Valid types are: %s
commands.scoreboard.objectives.add.wrongType=Invalid objective criteria type '%s'
commands.scoreboard.objectives.add.alreadyExists=An objective with the name '%s' already exists
commands.scoreboard.objectives.add.tooLong=The name '%s' is too long for an objective, it can be at most %d characters long
commands.scoreboard.objectives.add.displayTooLong=The display name '%s' is too long for an objective, it can be at most %d characters long
commands.scoreboard.objectives.add.success=Added new objective '%s' successfully
commands.scoreboard.objectives.remove.usage=/scoreboard objectives remove <name>
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.empty=There are no objectives on the scoreboard
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.reset.usage=/scoreboard players reset <player>
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.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.empty=Player %s has no scores recorded
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.success=Added new team '%s' successfully
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.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.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.success=Removed all %d player(s) from team %s
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.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.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.success=Set option %s for team %s 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.notStarted=Can't stop profiling when we haven't started yet!
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.sameTarget=You can't send a private message to yourself!
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.spawnpoint.usage=/spawnpoint OR /spawnpoint <player> OR /spawnpoint <player> <x> <y> <z>
commands.spawnpoint.success=Set %s's spawn point to (%d, %d, %d)
commands.setworldspawn.usage=/setworldspawn OR /setworldspawn <x> <y> <z>
commands.setworldspawn.success=Set the world spawn point to (%d, %d, %d)
commands.gamerule.usage=/gamerule <rule name> <value> OR /gamerule <rule name>
commands.gamerule.success=Game rule has been updated
commands.gamerule.norule=No game rule called '%s' is available
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.rain=Changing to rainy weather
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.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.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.decorations=Decoration Blocks
@@ -1333,6 +1552,7 @@ advMode.command=Console Command
advMode.nearestPlayer=Use "@p" to target nearest player
advMode.randomPlayer=Use "@r" to target random player
advMode.allPlayers=Use "@a" to target all players
advMode.previousOutput=Previous Output
advMode.notEnabled=Command blocks are not enabled on this server
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
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.configure=Configure
mco.selectServer.leave=Leave Realm
mco.selectServer.create=Create Realm
mco.selectServer.buy=Buy Realm
mco.selectServer.moreinfo=More Info
mco.selectServer.expired=Expired Server
mco.selectServer.open=Open Server
mco.selectServer.closed=Closed Server
mco.selectServer.locked=Locked Server
mco.selectServer.expires.days=Expires in %s days
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.daysleft=Days Left
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.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.line2=Are you sure you want to do that?
mco.configure.world.restore.question.line1=Your realm will be restored to a previous version
mco.configure.world.restore.question.line1=Your realm will be restored to date
mco.configure.world.restore.question.line2=Are you sure you want to do that?
mco.configure.world.restore.download.question.line1=You will be redirected to your default browser to download your world map.
mco.configure.world.restore.download.question.line2=Do you want to continue?
mco.more.info.question.line1=You will be redirected to your default browser to see the page.
mco.more.info.question.line2=Do you want to continue?
mco.connect.connecting=Connecting to the online server...
mco.connect.authorizing=Logging in...
mco.connect.failed=Failed to connect to the online server
@@ -1414,6 +1651,7 @@ mco.client.outdated.msg=Your client is outdated, please consider updating it to
mco.backup.title=Backups
mco.backup.button.restore=Restore
mco.backup.restoring=Restoring your realm
mco.backup.button.download=Download Latest
mco.template.title=Realm Templates
mco.template.button.select=Select
@@ -1424,6 +1662,7 @@ mco.invites.button.accept=Accept
mco.invites.button.reject=Reject
mco.invites.title=Pending Invitations
mco.invites.pending=New invitations!
mco.invites.nopending=No pending invitations!
build.tooHigh=Height limit for building is %s blocks
@@ -1440,4 +1679,7 @@ attribute.name.generic.maxHealth=Max Health
attribute.name.generic.followRange=Mob Follow Range
attribute.name.generic.knockbackResistance=Knockback Resistance
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

View File

@@ -0,0 +1,17 @@
{
"targets": [
"swap"
],
"passes": [
{
"name": "antialias",
"intarget": "minecraft:main",
"outtarget": "swap"
},
{
"name": "blit",
"intarget": "swap",
"outtarget": "minecraft:main"
}
]
}

View 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"
}
]
}

View File

@@ -0,0 +1,17 @@
{
"targets": [
"swap"
],
"passes": [
{
"name": "bits",
"intarget": "minecraft:main",
"outtarget": "swap"
},
{
"name": "blit",
"intarget": "swap",
"outtarget": "minecraft:main"
}
]
}

View File

@@ -0,0 +1,17 @@
{
"targets": [
"swap"
],
"passes": [
{
"name": "blobs",
"intarget": "minecraft:main",
"outtarget": "swap"
},
{
"name": "blit",
"intarget": "swap",
"outtarget": "minecraft:main"
}
]
}

View File

@@ -0,0 +1,17 @@
{
"targets": [
"swap"
],
"passes": [
{
"name": "blobs2",
"intarget": "minecraft:main",
"outtarget": "swap"
},
{
"name": "blit",
"intarget": "swap",
"outtarget": "minecraft:main"
}
]
}

View 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 ]
}
]
}
]
}

View File

@@ -0,0 +1,17 @@
{
"targets": [
"swap"
],
"passes": [
{
"name": "bumpy",
"intarget": "minecraft:main",
"outtarget": "swap"
},
{
"name": "blit",
"intarget": "swap",
"outtarget": "minecraft:main"
}
]
}

View 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"
}
]
}

View File

@@ -0,0 +1,17 @@
{
"targets": [
"swap"
],
"passes": [
{
"name": "deconverge",
"intarget": "minecraft:main",
"outtarget": "swap"
},
{
"name": "blit",
"intarget": "swap",
"outtarget": "minecraft:main"
}
]
}

View 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"
}
]
}

View File

@@ -0,0 +1,17 @@
{
"targets": [
"swap"
],
"passes": [
{
"name": "flip",
"intarget": "minecraft:main",
"outtarget": "swap"
},
{
"name": "blit",
"intarget": "swap",
"outtarget": "minecraft:main"
}
]
}

View File

@@ -0,0 +1,17 @@
{
"targets": [
"swap"
],
"passes": [
{
"name": "fxaa",
"intarget": "minecraft:main",
"outtarget": "swap"
},
{
"name": "blit",
"intarget": "swap",
"outtarget": "minecraft:main"
}
]
}

View 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"
}
]
}

View 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"
}
]
}

View 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"
}
]
}

View File

@@ -0,0 +1,17 @@
{
"targets": [
"swap"
],
"passes": [
{
"name": "outline",
"intarget": "minecraft:main",
"outtarget": "swap"
},
{
"name": "blit",
"intarget": "swap",
"outtarget": "minecraft:main"
}
]
}

View File

@@ -0,0 +1,17 @@
{
"targets": [
"swap"
],
"passes": [
{
"name": "outline_soft",
"intarget": "minecraft:main",
"outtarget": "swap"
},
{
"name": "blit",
"intarget": "swap",
"outtarget": "minecraft:main"
}
]
}

View 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"
}
]
}

View File

@@ -0,0 +1,17 @@
{
"targets": [
"swap"
],
"passes": [
{
"name": "scan_pincushion",
"intarget": "minecraft:main",
"outtarget": "swap"
},
{
"name": "blit",
"intarget": "swap",
"outtarget": "minecraft:main"
}
]
}

View File

@@ -0,0 +1,17 @@
{
"targets": [
"swap"
],
"passes": [
{
"name": "sobel",
"intarget": "minecraft:main",
"outtarget": "swap"
},
{
"name": "blit",
"intarget": "swap",
"outtarget": "minecraft:main"
}
]
}

View File

@@ -0,0 +1,17 @@
{
"targets": [
"swap"
],
"passes": [
{
"name": "wobble",
"intarget": "minecraft:main",
"outtarget": "swap"
},
{
"name": "blit",
"intarget": "swap",
"outtarget": "minecraft:main"
}
]
}

View 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);
}

View 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 ] }
]
}

View 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;
}

View 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 ] }
]
}

View File

@@ -0,0 +1,9 @@
#version 120
uniform sampler2D DiffuseSampler;
varying vec2 texCoord;
void main(){
gl_FragColor = texture2D(DiffuseSampler, texCoord);
}

View 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 ] }
]
}

View 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;
}

View 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);
}

View 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 ] }
]
}

View 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;
}

View 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);
}

View 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 ] }
]
}

View 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 ] }
]
}

View 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);
}

View 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 ] }
]
}

View 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);
}

View 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 ] }
]
}

View 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;
}

View 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);
}

View 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 ] }
]
}

View 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);
}

View 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 ] }
]
}

View 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);
}

View 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 ] }
]
}

View 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;
}

View 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 ] }
]
}

View 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;
}

View 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);
}

View 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 ] }
]
}

View 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));
}

View 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);
}

View 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 ] }
]
}

View 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;
}

View 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);
}

View 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 ] }
]
}

View 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;
}

View 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 ] }
]
}

View 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);
}

View 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 ] }
]
}

View 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);
}

View 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 ] }
]
}

View 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);
}

View 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 ] }
]
}

View 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);
}

View 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 ] }
]
}

View 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);
}

View 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 ] }
]
}

View 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);
}

View 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 ] }
]
}

View 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);
}

View 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 ] }
]
}

View 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);
}

View 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 ] }
]
}

View 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;
}

View 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);
}

View 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 ] }
]
}

View File

@@ -314,7 +314,8 @@ Put that cookie down!
Pretty scary!
I have a suggestion.
Now with extra hugs!
Almost java 6!
Now java 6!
Woah.
HURNERJSGER?
What's up, Doc?
What's up, Doc?
Now contains 32 random daily cats!

Binary file not shown.

After

Width:  |  Height:  |  Size: 740 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 823 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 706 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 670 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 668 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 674 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 665 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 727 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 698 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 637 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 427 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 592 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 466 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 576 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 695 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 671 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 482 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 545 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 530 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 556 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 503 B

Some files were not shown because too many files have changed in this diff Show More