[{"data":1,"prerenderedAt":234},["ShallowReactive",2],{"navigation_docs":3,"-explanation-colour":148,"-explanation-colour-surround":229},[4,21,62,108],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":20},"Tutorials","i-lucide-graduation-cap","\u002Ftutorials","1.tutorials",[10,15],{"title":11,"path":12,"stem":13,"icon":14},"Your first texture","\u002Ftutorials\u002Ffirst-texture","1.tutorials\u002F1.first-texture","i-lucide-sprout",{"title":16,"path":17,"stem":18,"icon":19},"Grow a crop through its stages","\u002Ftutorials\u002Fgrowth-stages","1.tutorials\u002F2.growth-stages","i-lucide-wheat",false,{"title":22,"icon":23,"path":24,"stem":25,"children":26,"page":20},"How-to guides","i-lucide-wrench","\u002Fhow-to","2.how-to",[27,32,37,42,47,52,57],{"title":28,"path":29,"stem":30,"icon":31},"Install TextureScript","\u002Fhow-to\u002Finstall","2.how-to\u002F1.install","i-lucide-download",{"title":33,"path":34,"stem":35,"icon":36},"Compare a crop with vanilla","\u002Fhow-to\u002Fcompare-with-vanilla","2.how-to\u002F2.compare-with-vanilla","i-lucide-columns-2",{"title":38,"path":39,"stem":40,"icon":41},"Connect an agent","\u002Fhow-to\u002Fconnect-an-agent","2.how-to\u002F3.connect-an-agent","i-lucide-bot",{"title":43,"path":44,"stem":45,"icon":46},"Hand-edit a growth stage","\u002Fhow-to\u002Fhand-edit-a-stage","2.how-to\u002F4.hand-edit-a-stage","i-lucide-pencil",{"title":48,"path":49,"stem":50,"icon":51},"Turn a PNG into a grid","\u002Fhow-to\u002Fimport-a-png","2.how-to\u002F5.import-a-png","i-lucide-file-image",{"title":53,"path":54,"stem":55,"icon":56},"Prove a fix stayed in its region","\u002Fhow-to\u002Fprove-a-fix","2.how-to\u002F6.prove-a-fix","i-lucide-diff",{"title":58,"path":59,"stem":60,"icon":61},"Keep game assets out of git","\u002Fhow-to\u002Fkeep-game-assets-out","2.how-to\u002F7.keep-game-assets-out","i-lucide-shield-check",{"title":63,"icon":64,"path":65,"stem":66,"children":67,"page":20},"Reference","i-lucide-book-open","\u002Freference","3.reference",[68,73,78,83,88,93,98,103],{"title":69,"path":70,"stem":71,"icon":72},"Commands","\u002Freference\u002Fcommands","3.reference\u002F1.commands","i-lucide-terminal",{"title":74,"path":75,"stem":76,"icon":77},"Palette files","\u002Freference\u002Fpalette-files","3.reference\u002F2.palette-files","i-lucide-palette",{"title":79,"path":80,"stem":81,"icon":82},"Grid files","\u002Freference\u002Fgrid-files","3.reference\u002F3.grid-files","i-lucide-grid-3x3",{"title":84,"path":85,"stem":86,"icon":87},"Stages files","\u002Freference\u002Fstages-files","3.reference\u002F4.stages-files","i-lucide-layers",{"title":89,"path":90,"stem":91,"icon":92},"Scene files","\u002Freference\u002Fscene-files","3.reference\u002F5.scene-files","i-lucide-box",{"title":94,"path":95,"stem":96,"icon":97},"Lint rules","\u002Freference\u002Flint-rules","3.reference\u002F6.lint-rules","i-lucide-list-checks",{"title":99,"path":100,"stem":101,"icon":102},"MCP server","\u002Freference\u002Fmcp-server","3.reference\u002F7.mcp-server","i-lucide-plug",{"title":104,"path":105,"stem":106,"icon":107},"Environment","\u002Freference\u002Fenvironment","3.reference\u002F8.environment","i-lucide-settings",{"title":109,"icon":110,"path":111,"stem":112,"children":113,"page":20},"Explanation","i-lucide-lightbulb","\u002Fexplanation","4.explanation",[114,119,123,128,133,138,143],{"title":115,"path":116,"stem":117,"icon":118},"Textures as text","\u002Fexplanation\u002Ftextures-as-text","4.explanation\u002F1.textures-as-text","i-lucide-type",{"title":120,"path":121,"stem":122,"icon":77},"Colour from two anchors","\u002Fexplanation\u002Fcolour","4.explanation\u002F2.colour",{"title":124,"path":125,"stem":126,"icon":127},"Measured conventions","\u002Fexplanation\u002Fmeasured-conventions","4.explanation\u002F3.measured-conventions","i-lucide-ruler",{"title":129,"path":130,"stem":131,"icon":132},"Growth stages as maps","\u002Fexplanation\u002Fgrowth-stages","4.explanation\u002F4.growth-stages","i-lucide-chart-no-axes-column-increasing",{"title":134,"path":135,"stem":136,"icon":137},"The 3D view","\u002Fexplanation\u002Fthe-3d-view","4.explanation\u002F5.the-3d-view","i-lucide-rotate-3d",{"title":139,"path":140,"stem":141,"icon":142},"No game assets","\u002Fexplanation\u002Fno-game-assets","4.explanation\u002F6.no-game-assets","i-lucide-shield",{"title":144,"path":145,"stem":146,"icon":147},"Architecture","\u002Fexplanation\u002Farchitecture","4.explanation\u002F7.architecture","i-lucide-boxes",{"id":149,"title":120,"body":150,"description":222,"extension":223,"links":224,"meta":225,"navigation":226,"path":121,"seo":227,"stem":122,"__hash__":228},"docs\u002F4.explanation\u002F2.colour.md",{"type":151,"value":152,"toc":213},"minimark",[153,162,167,170,173,177,180,184,189,193,196,200],[154,155,156,157,161],"p",{},"In a TextureScript palette you never type an interior shade. For each material you give a dark\nanchor, a light anchor and a number of shades, and ",[158,159,160],"code",{},"palette"," interpolates the rest.",[163,164,166],"h2",{"id":165},"why-not-pick-every-shade","Why not pick every shade",[154,168,169],{},"Vanilla textures use materials, not colours. A leaf is a ramp of three to six greens; a kernel\nis a ramp of yellows. Adjacent shades in a vanilla ramp are about 7 OKLab lightness units apart,\nwhich is close to the limit of what the eye can tell apart in isolation. A person or an agent\nchoosing shades by hand cannot reliably hit that spacing, and small errors show up as banding or\nmuddy steps. Interpolation gets the spacing right every time and matches vanilla ramps within\nwhat the eye can see.",[154,171,172],{},"What remains a decision is what actually matters: how dark the darkest shade is, how light the\nlightest, and how many steps lie between.",[163,174,176],{"id":175},"why-oklch","Why OKLCH",[154,178,179],{},"Interpolating in sRGB makes the middle of a ramp dull and uneven in lightness. OKLCH is a\nperceptual space: equal steps in its lightness look like equal steps. TextureScript interpolates\nthere, so a four-shade ramp looks evenly spaced.",[163,181,183],{"id":182},"the-vanilla-envelope","The vanilla envelope",[154,185,186,188],{},[158,187,160],{}," compares each anchor with the range measured on vanilla ramps of the same class:\nfoliage, cool materials or warm produce. Vanilla foliage has its darkest shade near lightness\n45, its lightest near 66, and chroma never above 24; warm produce never goes above chroma 19. A\nred that \"pops\" is usually above vanilla's chroma, which is why the comment lines warn when an\nanchor is outside the envelope. A warning is advice, not a refusal.",[163,190,192],{"id":191},"one-palette-per-family","One palette per family",[154,194,195],{},"A crop, its growth stages and its items share one palette file. That keeps the seed, the plant\nand the harvested item visibly the same material. When an item needs an outline darker than the\nplant uses, lower that material's dark anchor and add a shade; keep the light anchor so the two\nmatch.",[163,197,199],{"id":198},"related","Related",[201,202,203,209],"ul",{},[204,205,206],"li",{},[207,208,74],"a",{"href":75},[204,210,211],{},[207,212,124],{"href":125},{"title":214,"searchDepth":215,"depth":215,"links":216},"",2,[217,218,219,220,221],{"id":165,"depth":215,"text":166},{"id":175,"depth":215,"text":176},{"id":182,"depth":215,"text":183},{"id":191,"depth":215,"text":192},{"id":198,"depth":215,"text":199},"Why you choose two colours per material and let TextureScript derive the rest.","md",null,{},{"icon":77},{"title":120,"description":222},"wuxyHOjlcbFYiNxvGOcfky3nJDh2U6SS5qOPaeY7lcU",[230,232],{"title":115,"path":116,"stem":117,"description":231,"icon":118,"children":-1},"Why TextureScript describes a texture as a character grid and a palette instead of a picture.",{"title":124,"path":125,"stem":126,"description":233,"icon":127,"children":-1},"Where the lint thresholds come from, and why a warning is a question rather than an order.",1791722219587]