Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7d288ce9bc |
@@ -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,9 +109,6 @@ 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
|
||||
@@ -145,7 +142,6 @@ 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
|
||||
@@ -155,14 +151,11 @@ 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
|
||||
|
||||
$o=Play Demo World
|
||||
menu.playdemo=Play Demo World
|
||||
menu.resetdemo=Reset Demo World
|
||||
|
||||
demo.day.1=This demo will last five game days, do your best!
|
||||
@@ -197,23 +190,11 @@ 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
|
||||
@@ -222,9 +203,7 @@ options.title=Options
|
||||
options.controls=Controls...
|
||||
options.video=Video Settings...
|
||||
options.language=Language...
|
||||
options.sounds=Music & Sounds...
|
||||
options.sounds.title=Music & Sound Options
|
||||
options.languageWarning=Language translations may not be 100%% accurate
|
||||
options.languageWarning=Language translations may not be 100% accurate
|
||||
options.videoTitle=Video Settings
|
||||
options.music=Music
|
||||
options.sound=Sound
|
||||
@@ -232,7 +211,6 @@ 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
|
||||
@@ -246,12 +224,11 @@ 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=Max Framerate
|
||||
options.framerateLimit.max=Unlimited
|
||||
options.framerateLimit=Performance
|
||||
options.difficulty=Difficulty
|
||||
options.difficulty.peaceful=Peaceful
|
||||
options.difficulty.easy=Easy
|
||||
@@ -267,37 +244,7 @@ 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
|
||||
@@ -324,58 +271,36 @@ 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
|
||||
options.mipmapLevels=Mipmap Levels
|
||||
options.anisotropicFiltering=Anisotropic Filtering
|
||||
options.forceUnicodeFont=Force Unicode Font
|
||||
|
||||
performance.max=Max FPS
|
||||
performance.balanced=Balanced
|
||||
performance.powersaver=Power saver
|
||||
|
||||
controls.title=Controls
|
||||
controls.reset=Reset
|
||||
controls.resetAll=Reset Keys
|
||||
|
||||
key.sprint=Sprint
|
||||
key.forward=Walk Forwards
|
||||
key.left=Strafe Left
|
||||
key.back=Walk Backwards
|
||||
key.right=Strafe Right
|
||||
key.forward=Forward
|
||||
key.left=Left
|
||||
key.back=Back
|
||||
key.right=Right
|
||||
key.jump=Jump
|
||||
key.inventory=Inventory
|
||||
key.drop=Drop Item
|
||||
key.chat=Open Chat
|
||||
key.drop=Drop
|
||||
key.chat=Chat
|
||||
key.fog=Toggle Fog
|
||||
key.sneak=Sneak
|
||||
key.playerlist=List Players
|
||||
key.attack=Attack/Destroy
|
||||
key.use=Use Item/Place Block
|
||||
key.attack=Attack
|
||||
key.use=Use Item
|
||||
key.pickItem=Pick Block
|
||||
key.mouseButton=Button %1$s
|
||||
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
|
||||
key.command=Command
|
||||
|
||||
resourcePack.openFolder=Open resource pack folder
|
||||
resourcePack.title=Select Resource Packs
|
||||
resourcePack.available.title=Available Resource Packs
|
||||
resourcePack.selected.title=Selected Resource Packs
|
||||
resourcePack.title=Select Resource Pack
|
||||
resourcePack.folderInfo=(Place resource pack files here)
|
||||
|
||||
book.pageIndicator=Page %1$s of %2$s
|
||||
@@ -388,28 +313,22 @@ 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.default.name=Dirt
|
||||
tile.dirt.podzol.name=Podzol
|
||||
tile.dirt.name=Dirt
|
||||
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.default.name=Sand
|
||||
tile.sand.red.name=Red Sand
|
||||
tile.sand.name=Sand
|
||||
tile.sandStone.name=Sandstone
|
||||
tile.sandStone.default.name=Sandstone
|
||||
tile.sandStone.chiseled.name=Chiseled Sandstone
|
||||
@@ -423,73 +342,21 @@ tile.log.oak.name=Oak Wood
|
||||
tile.log.spruce.name=Spruce Wood
|
||||
tile.log.birch.name=Birch Wood
|
||||
tile.log.jungle.name=Jungle Wood
|
||||
tile.log.acacia.name=Acacia Wood
|
||||
tile.log.big_oak.name=Dark Oak Wood
|
||||
tile.leaves.name=Leaves
|
||||
tile.leaves.oak.name=Oak Leaves
|
||||
tile.leaves.spruce.name=Spruce Leaves
|
||||
tile.leaves.birch.name=Birch Leaves
|
||||
tile.leaves.jungle.name=Jungle Leaves
|
||||
tile.leaves.acacia.name=Acacia Leaves
|
||||
tile.leaves.big_oak.name=Dark Oak Leaves
|
||||
tile.tallgrass.name=Grass
|
||||
tile.tallgrass.shrub.name=Shrub
|
||||
tile.tallgrass.grass.name=Grass
|
||||
tile.tallgrass.fern.name=Fern
|
||||
tile.sponge.name=Sponge
|
||||
tile.glass.name=Glass
|
||||
tile.stainedGlass.name=Stained Glass
|
||||
tile.stainedGlass.black.name=Black Stained Glass
|
||||
tile.stainedGlass.red.name=Red Stained Glass
|
||||
tile.stainedGlass.green.name=Green Stained Glass
|
||||
tile.stainedGlass.brown.name=Brown Stained Glass
|
||||
tile.stainedGlass.blue.name=Blue Stained Glass
|
||||
tile.stainedGlass.purple.name=Purple Stained Glass
|
||||
tile.stainedGlass.cyan.name=Cyan Stained Glass
|
||||
tile.stainedGlass.silver.name=Light Gray Stained Glass
|
||||
tile.stainedGlass.gray.name=Gray Stained Glass
|
||||
tile.stainedGlass.pink.name=Pink Stained Glass
|
||||
tile.stainedGlass.lime.name=Lime Stained Glass
|
||||
tile.stainedGlass.yellow.name=Yellow Stained Glass
|
||||
tile.stainedGlass.lightBlue.name=Light Blue Stained Glass
|
||||
tile.stainedGlass.magenta.name=Magenta Stained Glass
|
||||
tile.stainedGlass.orange.name=Orange Stained Glass
|
||||
tile.stainedGlass.white.name=White Stained Glass
|
||||
tile.thinStainedGlass.name=Stained Glass Pane
|
||||
tile.thinStainedGlass.black.name=Black Stained Glass Pane
|
||||
tile.thinStainedGlass.red.name=Red Stained Glass Pane
|
||||
tile.thinStainedGlass.green.name=Green Stained Glass Pane
|
||||
tile.thinStainedGlass.brown.name=Brown Stained Glass Pane
|
||||
tile.thinStainedGlass.blue.name=Blue Stained Glass Pane
|
||||
tile.thinStainedGlass.purple.name=Purple Stained Glass Pane
|
||||
tile.thinStainedGlass.cyan.name=Cyan Stained Glass Pane
|
||||
tile.thinStainedGlass.silver.name=Light Gray Stained Glass Pane
|
||||
tile.thinStainedGlass.gray.name=Gray Stained Glass Pane
|
||||
tile.thinStainedGlass.pink.name=Pink Stained Glass Pane
|
||||
tile.thinStainedGlass.lime.name=Lime Stained Glass Pane
|
||||
tile.thinStainedGlass.yellow.name=Yellow Stained Glass Pane
|
||||
tile.thinStainedGlass.lightBlue.name=Light Blue Stained Glass Pane
|
||||
tile.thinStainedGlass.magenta.name=Magenta Stained Glass Pane
|
||||
tile.thinStainedGlass.orange.name=Orange Stained Glass Pane
|
||||
tile.thinStainedGlass.white.name=White Stained Glass Pane
|
||||
tile.thinGlass.name=Glass Pane
|
||||
tile.cloth.name=Wool
|
||||
tile.flower1.dandelion.name=Dandelion
|
||||
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.flower.name=Flower
|
||||
tile.rose.name=Rose
|
||||
tile.mushroom.name=Mushroom
|
||||
tile.blockGold.name=Block of Gold
|
||||
tile.blockIron.name=Block of Iron
|
||||
@@ -505,8 +372,6 @@ 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
|
||||
@@ -519,8 +384,6 @@ 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
|
||||
@@ -566,7 +429,6 @@ 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
|
||||
@@ -634,9 +496,6 @@ 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
|
||||
@@ -787,31 +646,14 @@ 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.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.fishRaw.name=Raw Fish
|
||||
item.fishCooked.name=Cooked Fish
|
||||
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
|
||||
@@ -930,7 +772,6 @@ container.minecart=Minecart
|
||||
container.enderchest=Ender Chest
|
||||
|
||||
item.dyed=Dyed
|
||||
item.unbreakable=Unbreakable
|
||||
|
||||
entity.Item.name=Item
|
||||
entity.XPOrb.name=Experience Orb
|
||||
@@ -1042,7 +883,6 @@ 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
|
||||
@@ -1150,8 +990,6 @@ 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
|
||||
@@ -1172,21 +1010,14 @@ 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
|
||||
@@ -1205,7 +1036,6 @@ 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
|
||||
|
||||
@@ -1213,11 +1043,8 @@ 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
|
||||
@@ -1227,7 +1054,6 @@ stat.breakItem=%1$s Depleted
|
||||
achievement.get=Achievement get!
|
||||
|
||||
achievement.taken=Taken!
|
||||
achievement.unknown=???
|
||||
|
||||
achievement.requires=Requires '%1$s'
|
||||
achievement.openInventory=Taking Inventory
|
||||
@@ -1260,16 +1086,12 @@ 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
|
||||
@@ -1282,14 +1104,6 @@ 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
|
||||
@@ -1309,10 +1123,7 @@ 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
|
||||
@@ -1321,29 +1132,9 @@ 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] [dataTag]
|
||||
commands.give.usage=/give <player> <item> [amount] [data]
|
||||
commands.give.notFound=There is no such item with ID %d
|
||||
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.give.success=Given %s (ID %d) * %d to %s
|
||||
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
|
||||
@@ -1426,14 +1217,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 '%s'
|
||||
commands.scoreboard.objectives.add.wrongType=Invalid objective criteria type. Valid types are: %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>
|
||||
@@ -1443,10 +1234,9 @@ 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.usage=/scoreboard players list [name]
|
||||
commands.scoreboard.players.list.count=Showing %d tracked players on the scoreboard:
|
||||
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>
|
||||
@@ -1456,13 +1246,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 empty
|
||||
commands.scoreboard.teams.empty.usage=/scoreboard teams clear <name>
|
||||
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>
|
||||
@@ -1474,7 +1264,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|seeFriendlyInvisibles> <value>
|
||||
commands.scoreboard.teams.option.usage=/scoreboard teams option <team> <friendlyfire|color> <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
|
||||
@@ -1493,8 +1283,6 @@ 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
|
||||
@@ -1503,12 +1291,10 @@ 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
|
||||
@@ -1525,11 +1311,6 @@ 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
|
||||
@@ -1552,7 +1333,6 @@ 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
|
||||
@@ -1560,26 +1340,15 @@ 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
|
||||
@@ -1609,7 +1378,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 Subscription
|
||||
mco.configure.world.subscription.extend=Extend
|
||||
|
||||
mco.create.world.location.title=Locations
|
||||
mco.create.world.location.warning=You may not get the exact location you select
|
||||
@@ -1630,15 +1399,9 @@ 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 date
|
||||
mco.configure.world.restore.question.line1=Your realm will be restored to a previous version
|
||||
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
|
||||
@@ -1651,7 +1414,6 @@ 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
|
||||
@@ -1662,7 +1424,6 @@ 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
|
||||
|
||||
@@ -1679,7 +1440,4 @@ 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
|
||||
|
||||
screenshot.success=Saved screenshot as %s
|
||||
screenshot.failure=Couldn't save screenshot: %s
|
||||
attribute.name.generic.attackDamage=Attack Damage
|
||||
@@ -1,17 +0,0 @@
|
||||
{
|
||||
"targets": [
|
||||
"swap"
|
||||
],
|
||||
"passes": [
|
||||
{
|
||||
"name": "antialias",
|
||||
"intarget": "minecraft:main",
|
||||
"outtarget": "swap"
|
||||
},
|
||||
{
|
||||
"name": "blit",
|
||||
"intarget": "swap",
|
||||
"outtarget": "minecraft:main"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,64 +0,0 @@
|
||||
{
|
||||
"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"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
{
|
||||
"targets": [
|
||||
"swap"
|
||||
],
|
||||
"passes": [
|
||||
{
|
||||
"name": "bits",
|
||||
"intarget": "minecraft:main",
|
||||
"outtarget": "swap"
|
||||
},
|
||||
{
|
||||
"name": "blit",
|
||||
"intarget": "swap",
|
||||
"outtarget": "minecraft:main"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
{
|
||||
"targets": [
|
||||
"swap"
|
||||
],
|
||||
"passes": [
|
||||
{
|
||||
"name": "blobs",
|
||||
"intarget": "minecraft:main",
|
||||
"outtarget": "swap"
|
||||
},
|
||||
{
|
||||
"name": "blit",
|
||||
"intarget": "swap",
|
||||
"outtarget": "minecraft:main"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
{
|
||||
"targets": [
|
||||
"swap"
|
||||
],
|
||||
"passes": [
|
||||
{
|
||||
"name": "blobs2",
|
||||
"intarget": "minecraft:main",
|
||||
"outtarget": "swap"
|
||||
},
|
||||
{
|
||||
"name": "blit",
|
||||
"intarget": "swap",
|
||||
"outtarget": "minecraft:main"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
{
|
||||
"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 ]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
{
|
||||
"targets": [
|
||||
"swap"
|
||||
],
|
||||
"passes": [
|
||||
{
|
||||
"name": "bumpy",
|
||||
"intarget": "minecraft:main",
|
||||
"outtarget": "swap"
|
||||
},
|
||||
{
|
||||
"name": "blit",
|
||||
"intarget": "swap",
|
||||
"outtarget": "minecraft:main"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
{
|
||||
"targets": [
|
||||
"swap"
|
||||
],
|
||||
"passes": [
|
||||
{
|
||||
"name": "color_convolve",
|
||||
"intarget": "minecraft:main",
|
||||
"outtarget": "swap",
|
||||
"uniforms": [
|
||||
{ "name": "Saturation", "values": [ 1.4 ] }
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "blit",
|
||||
"intarget": "swap",
|
||||
"outtarget": "minecraft:main"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
{
|
||||
"targets": [
|
||||
"swap"
|
||||
],
|
||||
"passes": [
|
||||
{
|
||||
"name": "deconverge",
|
||||
"intarget": "minecraft:main",
|
||||
"outtarget": "swap"
|
||||
},
|
||||
{
|
||||
"name": "blit",
|
||||
"intarget": "swap",
|
||||
"outtarget": "minecraft:main"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
{
|
||||
"targets": [
|
||||
"swap"
|
||||
],
|
||||
"passes": [
|
||||
{
|
||||
"name": "color_convolve",
|
||||
"intarget": "minecraft:main",
|
||||
"outtarget": "swap",
|
||||
"uniforms": [
|
||||
{
|
||||
"name": "Saturation",
|
||||
"values": [ 0.2 ]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "blit",
|
||||
"intarget": "swap",
|
||||
"outtarget": "minecraft:main"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
{
|
||||
"targets": [
|
||||
"swap"
|
||||
],
|
||||
"passes": [
|
||||
{
|
||||
"name": "flip",
|
||||
"intarget": "minecraft:main",
|
||||
"outtarget": "swap"
|
||||
},
|
||||
{
|
||||
"name": "blit",
|
||||
"intarget": "swap",
|
||||
"outtarget": "minecraft:main"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
{
|
||||
"targets": [
|
||||
"swap"
|
||||
],
|
||||
"passes": [
|
||||
{
|
||||
"name": "fxaa",
|
||||
"intarget": "minecraft:main",
|
||||
"outtarget": "swap"
|
||||
},
|
||||
{
|
||||
"name": "blit",
|
||||
"intarget": "swap",
|
||||
"outtarget": "minecraft:main"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,41 +0,0 @@
|
||||
{
|
||||
"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"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
{
|
||||
"targets": [
|
||||
"swap"
|
||||
],
|
||||
"passes": [
|
||||
{
|
||||
"name": "invert",
|
||||
"intarget": "minecraft:main",
|
||||
"outtarget": "swap",
|
||||
"uniforms": [
|
||||
{
|
||||
"name": "InverseAmount",
|
||||
"values": [ 0.8 ]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "blit",
|
||||
"intarget": "swap",
|
||||
"outtarget": "minecraft:main"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,92 +0,0 @@
|
||||
{
|
||||
"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"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
{
|
||||
"targets": [
|
||||
"swap"
|
||||
],
|
||||
"passes": [
|
||||
{
|
||||
"name": "outline",
|
||||
"intarget": "minecraft:main",
|
||||
"outtarget": "swap"
|
||||
},
|
||||
{
|
||||
"name": "blit",
|
||||
"intarget": "swap",
|
||||
"outtarget": "minecraft:main"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
{
|
||||
"targets": [
|
||||
"swap"
|
||||
],
|
||||
"passes": [
|
||||
{
|
||||
"name": "outline_soft",
|
||||
"intarget": "minecraft:main",
|
||||
"outtarget": "swap"
|
||||
},
|
||||
{
|
||||
"name": "blit",
|
||||
"intarget": "swap",
|
||||
"outtarget": "minecraft:main"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
{
|
||||
"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"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
{
|
||||
"targets": [
|
||||
"swap"
|
||||
],
|
||||
"passes": [
|
||||
{
|
||||
"name": "scan_pincushion",
|
||||
"intarget": "minecraft:main",
|
||||
"outtarget": "swap"
|
||||
},
|
||||
{
|
||||
"name": "blit",
|
||||
"intarget": "swap",
|
||||
"outtarget": "minecraft:main"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
{
|
||||
"targets": [
|
||||
"swap"
|
||||
],
|
||||
"passes": [
|
||||
{
|
||||
"name": "sobel",
|
||||
"intarget": "minecraft:main",
|
||||
"outtarget": "swap"
|
||||
},
|
||||
{
|
||||
"name": "blit",
|
||||
"intarget": "swap",
|
||||
"outtarget": "minecraft:main"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
{
|
||||
"targets": [
|
||||
"swap"
|
||||
],
|
||||
"passes": [
|
||||
{
|
||||
"name": "wobble",
|
||||
"intarget": "minecraft:main",
|
||||
"outtarget": "swap"
|
||||
},
|
||||
{
|
||||
"name": "blit",
|
||||
"intarget": "swap",
|
||||
"outtarget": "minecraft:main"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
#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);
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
{
|
||||
"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 ] }
|
||||
]
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
#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;
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
{
|
||||
"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 ] }
|
||||
]
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
#version 120
|
||||
|
||||
uniform sampler2D DiffuseSampler;
|
||||
|
||||
varying vec2 texCoord;
|
||||
|
||||
void main(){
|
||||
gl_FragColor = texture2D(DiffuseSampler, texCoord);
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
{
|
||||
"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 ] }
|
||||
]
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
#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;
|
||||
}
|
||||
@@ -1,43 +0,0 @@
|
||||
#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);
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
{
|
||||
"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 ] }
|
||||
]
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
#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;
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
#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);
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
{
|
||||
"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 ] }
|
||||
]
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
{
|
||||
"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 ] }
|
||||
]
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
#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);
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
{
|
||||
"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 ] }
|
||||
]
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
#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);
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
{
|
||||
"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 ] }
|
||||
]
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
#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;
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
#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);
|
||||
}
|
||||
@@ -1,25 +0,0 @@
|
||||
{
|
||||
"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 ] }
|
||||
]
|
||||
}
|
||||
@@ -1,28 +0,0 @@
|
||||
#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);
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
{
|
||||
"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 ] }
|
||||
]
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
#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);
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
{
|
||||
"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 ] }
|
||||
]
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
#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;
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
{
|
||||
"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 ] }
|
||||
]
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
#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;
|
||||
}
|
||||
@@ -1,84 +0,0 @@
|
||||
#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);
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
{
|
||||
"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 ] }
|
||||
]
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
#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));
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
#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);
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
{
|
||||
"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 ] }
|
||||
]
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
#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;
|
||||
}
|
||||
@@ -1,132 +0,0 @@
|
||||
#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);
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
{
|
||||
"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 ] }
|
||||
]
|
||||
}
|
||||
@@ -1,50 +0,0 @@
|
||||
#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;
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
{
|
||||
"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 ] }
|
||||
]
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
#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);
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
{
|
||||
"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 ] }
|
||||
]
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
#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);
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
{
|
||||
"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 ] }
|
||||
]
|
||||
}
|
||||
@@ -1,46 +0,0 @@
|
||||
#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);
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
{
|
||||
"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 ] }
|
||||
]
|
||||
}
|
||||
@@ -1,41 +0,0 @@
|
||||
#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);
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
{
|
||||
"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 ] }
|
||||
]
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
#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);
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
{
|
||||
"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 ] }
|
||||
]
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
#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);
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
{
|
||||
"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 ] }
|
||||
]
|
||||
}
|
||||
@@ -1,64 +0,0 @@
|
||||
#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);
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
{
|
||||
"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 ] }
|
||||
]
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
#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);
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
{
|
||||
"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 ] }
|
||||
]
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
#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;
|
||||
}
|
||||
@@ -1,58 +0,0 @@
|
||||
#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);
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
{
|
||||
"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,8 +314,7 @@ Put that cookie down!
|
||||
Pretty scary!
|
||||
I have a suggestion.
|
||||
Now with extra hugs!
|
||||
Now java 6!
|
||||
Almost java 6!
|
||||
Woah.
|
||||
HURNERJSGER?
|
||||
What's up, Doc?
|
||||
Now contains 32 random daily cats!
|
||||
What's up, Doc?
|
||||
|
Before Width: | Height: | Size: 740 B |
|
Before Width: | Height: | Size: 823 B |
|
Before Width: | Height: | Size: 706 B |
|
Before Width: | Height: | Size: 670 B |
|
Before Width: | Height: | Size: 668 B |
|
Before Width: | Height: | Size: 674 B |
|
Before Width: | Height: | Size: 665 B |
|
Before Width: | Height: | Size: 727 B |
|
Before Width: | Height: | Size: 698 B |
|
Before Width: | Height: | Size: 637 B |
|
Before Width: | Height: | Size: 427 B |
|
Before Width: | Height: | Size: 592 B |
|
Before Width: | Height: | Size: 466 B |
|
Before Width: | Height: | Size: 576 B |
|
Before Width: | Height: | Size: 695 B |
|
Before Width: | Height: | Size: 671 B |
|
Before Width: | Height: | Size: 482 B |
|
Before Width: | Height: | Size: 545 B |
|
Before Width: | Height: | Size: 530 B |
|
Before Width: | Height: | Size: 556 B |
|
Before Width: | Height: | Size: 503 B |