{"id":83886,"date":"2026-06-04T22:14:24","date_gmt":"2026-06-04T19:14:24","guid":{"rendered":"https:\/\/vpesports.com\/minecraft\/mods\/image-shader\/"},"modified":"2026-06-04T22:14:24","modified_gmt":"2026-06-04T19:14:24","slug":"image-shader","status":"publish","type":"mod","link":"https:\/\/vpesports.com\/minecraft\/mods\/image-shader\/","title":{"rendered":"Image Shader"},"content":{"rendered":"<p># Image Shader<br \/>\nOnly use a shader to display an image on your screen~<br \/>\n**Note: compiling the shader may take some time!**<\/p>\n<p>![A Minecraft Screenshot](https:\/\/cdn.modrinth.com\/data\/cached_images\/d9b5a9d9e90d1b2127f6b31b6c14b63c00853b09.png)<\/p>\n<p>### How to prepare a custom image~<br \/>\nFirst, use ffmpeg (or any tool) to resize your image to **160\u00d7160 pixels**.<\/p>\n<p>&#8220;`bash<br \/>\nUsing ffmpeg:<br \/>\nffmpeg -i Input.png -vf scale=160:160 image.png<br \/>\n&#8220;`<\/p>\n<p>Then place the resized image in the same directory as the Python script below.<br \/>\nRun the script to produce an `image_chunks` folder, then copy the 16 **.glsl files** inside into `shaders\/data\/image_chunks` (you need to unpack the shader pack first).<br \/>\nEnter the game, enable the custom image option in the shader settings, and wait for the shader to finish compiling \u2014 Then it&#8217;s ok~<\/p>\n<details>\n<summary>A Python Script<\/summary>\n<p>&#8220;`python<br \/>\nfrom PIL import Image<br \/>\nimport os<\/p>\n<p>def generate_glsl_chunks(image_path, output_dir=&#8221;image_chunks&#8221;):<br \/>\n    try:<br \/>\n        img = Image.open(image_path).convert(&#8216;RGBA&#8217;)<br \/>\n    except FileNotFoundError:<br \/>\n        print(f&#8221;Error: Image file not found at {image_path}&#8221;)<br \/>\n        return<\/p>\n<p>    width, height = img.size<br \/>\n    if width != 160 or height != 160:<br \/>\n        print(f&#8221;Error: Image must be 160&#215;160 pixels, but it is {width}x{height}.&#8221;)<br \/>\n        print(f&#8221;You can use:&#8221;)<br \/>\n        print(f&#8221;ffmpeg -i image.png -vf scale=160:160 output.png&#8221;)<br \/>\n        print(f&#8221;to adjust the image resolution.&#8221;)<br \/>\n        return<\/p>\n<p>    os.makedirs(output_dir, exist_ok=True)<br \/>\n    chunk_size = 40<br \/>\n    num_chunks_x = width \/\/ chunk_size<br \/>\n    num_chunks_y = height \/\/ chunk_size<\/p>\n<p>    for chunk_y in range(num_chunks_y):<br \/>\n        for chunk_x in range(num_chunks_x):<br \/>\n            left = chunk_x * chunk_size<br \/>\n            upper = chunk_y * chunk_size<br \/>\n            right = left + chunk_size<br \/>\n            lower = upper + chunk_size<br \/>\n            sub_img = img.crop((left, upper, right, lower))<br \/>\n            pixel_data = list(sub_img.getdata())<\/p>\n<p>            array_name = f&#8221;image_data_{chunk_y}_{chunk_x}&#8221;<br \/>\n            output_file_path = os.path.join(output_dir, f&#8221;{array_name}.glsl&#8221;)<\/p>\n<p>            glsl_array = f&#8221;vec4 {array_name}[{chunk_size * chunk_size}] = vec4[{chunk_size * chunk_size}](n&#8221;<\/p>\n<p>            for i, pixel in enumerate(pixel_data):<br \/>\n                r, g, b, a = pixel<br \/>\n                glsl_array += f&#8221;    vec4({r\/255.0}, {g\/255.0}, {b\/255.0}, {a\/255.0})&#8221;<br \/>\n                if i < len(pixel_data) - 1:\n                    glsl_array += \",\"\n                if (i + 1) % 4 == 0:\n                    glsl_array += \"n\"\n            \n            glsl_array += \");n\"\n\n            with open(output_file_path, 'w') as f:\n                f.write(glsl_array)\n            \n            print(f\"Generated file: {output_file_path}\")\n\n# --- Config ---\nimage_file = \"image.png\"\noutput_directory = \"image_chunks\"\n\ngenerate_glsl_chunks(image_file, output_directory)\n\n```\n\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Only use a shader to display an image on your screen~<\/p>\n","protected":false},"featured_media":83887,"template":"","meta":{"_minecraft_slug":"image-shader","_minecraft_project_id":"uYBHIcV9","_minecraft_author":"lanzhan5656","_minecraft_license":"GPL-3.0-only","_minecraft_downloads":4439,"_minecraft_follows":3,"_minecraft_client_side":"required","_minecraft_server_side":"unsupported","_minecraft_storage_type":"zip","_minecraft_archive_name":"image-shader.zip","_minecraft_size_bytes":4887669,"_minecraft_version_count":1,"_minecraft_updated_at":"2026-05-16T11:13:59.183725Z","_minecraft_date_created":"2025-09-12T17:51:50.209928Z","_minecraft_date_modified":"2025-09-12T14:59:33.521071Z","_minecraft_project_url":"https:\/\/modrinth.com\/mod\/image-shader","_minecraft_icon_attachment_id":83887,"_minecraft_imported_at":"2026-06-04T19:14:25+00:00","_minecraft_import_hash":"0851c9971db8fce3b47bee245042b028","_minecraft_versions":"","_minecraft_links":"","_minecraft_gallery":"","_minecraft_api_metadata":""},"mod_category":[991,43,1000,883,887,169,1011,888,8],"mod_loader":[890],"minecraft_version":[118,119,120,46,47,48,49,50,51,52,53,54,55,56,57,58,59,36,60,93,94,101,102,62,37,73,74,38,78,79,80,81],"class_list":["post-83886","mod","type-mod","status-publish","has-post-thumbnail","hentry","mod_category-cartoon","mod_category-cursed","mod_category-fantasy","mod_category-iris","mod_category-potato","mod_category-realistic","mod_category-screenshot","mod_category-semi-realistic","mod_category-vanilla-like","mod_loader-iris","minecraft_version-1-16","minecraft_version-1-16-1","minecraft_version-1-16-2","minecraft_version-1-16-3","minecraft_version-1-16-4","minecraft_version-1-16-5","minecraft_version-1-17","minecraft_version-1-17-1","minecraft_version-1-18","minecraft_version-1-18-1","minecraft_version-1-18-2","minecraft_version-1-19","minecraft_version-1-19-1","minecraft_version-1-19-2","minecraft_version-1-19-3","minecraft_version-1-19-4","minecraft_version-1-20","minecraft_version-1-20-1","minecraft_version-1-20-2","minecraft_version-1-20-3","minecraft_version-1-20-4","minecraft_version-1-20-5","minecraft_version-1-20-6","minecraft_version-1-21","minecraft_version-1-21-1","minecraft_version-1-21-2","minecraft_version-1-21-3","minecraft_version-1-21-4","minecraft_version-1-21-5","minecraft_version-1-21-6","minecraft_version-1-21-7","minecraft_version-1-21-8"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Image Shader - Minecraft<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vpesports.com\/minecraft\/mods\/image-shader\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Image Shader - Minecraft\" \/>\n<meta property=\"og:description\" content=\"Only use a shader to display an image on your screen~\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vpesports.com\/minecraft\/mods\/image-shader\/\" \/>\n<meta property=\"og:site_name\" content=\"Minecraft\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/image-shader\\\/\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/image-shader\\\/\",\"name\":\"Image Shader - Minecraft\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/image-shader\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/image-shader\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/image-shader-icon-2cf058ab00147e7f3518568722614333ee82eb4f_96.webp\",\"datePublished\":\"2026-06-04T19:14:24+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/image-shader\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/image-shader\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/image-shader\\\/#primaryimage\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/image-shader-icon-2cf058ab00147e7f3518568722614333ee82eb4f_96.webp\",\"contentUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/image-shader-icon-2cf058ab00147e7f3518568722614333ee82eb4f_96.webp\",\"width\":96,\"height\":96},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/image-shader\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mods\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Image Shader\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\",\"name\":\"Minecraft\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Image Shader - Minecraft","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/vpesports.com\/minecraft\/mods\/image-shader\/","og_locale":"en_US","og_type":"article","og_title":"Image Shader - Minecraft","og_description":"Only use a shader to display an image on your screen~","og_url":"https:\/\/vpesports.com\/minecraft\/mods\/image-shader\/","og_site_name":"Minecraft","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/vpesports.com\/minecraft\/mods\/image-shader\/","url":"https:\/\/vpesports.com\/minecraft\/mods\/image-shader\/","name":"Image Shader - Minecraft","isPartOf":{"@id":"https:\/\/vpesports.com\/minecraft\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/image-shader\/#primaryimage"},"image":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/image-shader\/#primaryimage"},"thumbnailUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/image-shader-icon-2cf058ab00147e7f3518568722614333ee82eb4f_96.webp","datePublished":"2026-06-04T19:14:24+00:00","breadcrumb":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/image-shader\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vpesports.com\/minecraft\/mods\/image-shader\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/vpesports.com\/minecraft\/mods\/image-shader\/#primaryimage","url":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/image-shader-icon-2cf058ab00147e7f3518568722614333ee82eb4f_96.webp","contentUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/image-shader-icon-2cf058ab00147e7f3518568722614333ee82eb4f_96.webp","width":96,"height":96},{"@type":"BreadcrumbList","@id":"https:\/\/vpesports.com\/minecraft\/mods\/image-shader\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/vpesports.com\/minecraft\/"},{"@type":"ListItem","position":2,"name":"Mods","item":"https:\/\/vpesports.com\/minecraft\/mods\/"},{"@type":"ListItem","position":3,"name":"Image Shader"}]},{"@type":"WebSite","@id":"https:\/\/vpesports.com\/minecraft\/#website","url":"https:\/\/vpesports.com\/minecraft\/","name":"Minecraft","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vpesports.com\/minecraft\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod\/83886","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod"}],"about":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/types\/mod"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media\/83887"}],"wp:attachment":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media?parent=83886"}],"wp:term":[{"taxonomy":"mod_category","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_category?post=83886"},{"taxonomy":"mod_loader","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_loader?post=83886"},{"taxonomy":"minecraft_version","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/minecraft_version?post=83886"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}