सामान्य texture में सिर्फ़ रंग होता है। texture set अतिरिक्त layers जोड़ता है जो Vibrant Visuals और ray tracing को बताती हैं कि सतह रोशनी में कैसा बर्ताव करती है: क्या यह धातु है, क्या यह चमकती है, क्या यह खुरदरी है या पॉलिश की हुई, क्या यह उभरी हुई है? इसे PBR (physically based rendering) कहते हैं।
इस पेज पर आप रूबी ब्लॉक को एक हल्की अंदरूनी चमक के साथ पॉलिश किए हुए रत्न की तरह चमकाएँगे।
फ़ाइलें
texture set उसी texture के ठीक बगल में रहता है जिसे वह बेहतर बनाता है, उसी नाम के साथ:
RP/
textures/
blocks/
ruby_block.png
ruby_block.texture_set.json
ruby_block_mer.png
ruby_block_normal.pngइस सेक्शन के दूसरे पेजों से अलग, यहाँ कुछ लागू करने की ज़रूरत नहीं। गेम ruby_block.texture_set.json को खुद ढूँढ लेता है क्योंकि वह ruby_block.png के बगल में है, और जहाँ भी वह texture दिखता है, उसे इस्तेमाल करता है।
Texture set फ़ाइल
{
"format_version": "1.16.100",
"minecraft:texture_set": {
"color": "ruby_block",
"metalness_emissive_roughness": "ruby_block_mer",
"normal": "ruby_block_normal"
}
}हर layer उसी फ़ोल्डर की एक image का नाम है, फ़ाइल extension के बिना।
Layers
| Layer | ज़रूरी | इसमें क्या होता है |
|---|---|---|
color | हाँ | सामान्य texture: RGB, या transparency के साथ RGBA। क्लासिक लुक सिर्फ़ इसी को इस्तेमाल करता है। |
metalness_emissive_roughness | नहीं | MER map। तीन channels, नीचे देखें। |
metalness_emissive_roughness_subsurface | नहीं | MERS map: MER के साथ subsurface के लिए चौथा channel। MER की जगह इस्तेमाल करें। |
normal | नहीं | एक normal map: RGB रंगों से छोटे उभार और गड्ढों का भ्रम बनाता है। |
heightmap | नहीं | उभारों का greyscale map: सफ़ेद ऊँचा है, काला नीचा। normal map से आसान। |
आप normal या heightmap इस्तेमाल कर सकते हैं, दोनों कभी नहीं।
MER map
एक image, जिसमें हर color channel का अलग मतलब होता है:
| Channel | मतलब | 0 (काला) | 255 (पूरा) |
|---|---|---|---|
| Red | Metalness | धातु नहीं, जैसे पत्थर या लकड़ी | खुली धातु, जैसे सोना |
| Green | Emissive | चमकता नहीं | तेज़ चमकता है |
| Blue | Roughness | शीशे जैसा चिकना | पूरी तरह खुरदरा और फीका |
| Alpha (सिर्फ़ MERS) | Subsurface | रोशनी सतह पर ही रहती है | रोशनी थोड़ी आर-पार जाती है, जैसे पत्तियों या त्वचा में |
रूबी के लिए: red 0 के पास (रत्न धातु नहीं है), हल्की चमक के लिए green लगभग 40, और पॉलिश वाली चमक के लिए blue लगभग 30।
इसे उसी grid में बनाएँ
MER, normal और heightmap images color texture से pixel दर pixel मैच करती हैं। इन्हें उसी साइज़ में पेंट करें (ब्लॉक के लिए 16x16) ताकि चमकीले और रोशनी देने वाले हिस्से रंगों से मेल खाएँ।
पूरे texture के लिए एक value
अगर पूरा ब्लॉक एक ही material का है, तो अतिरिक्त image छोड़ दें और values JSON में लिख दें:
{
"format_version": "1.16.100",
"minecraft:texture_set": {
"color": "ruby_block",
"metalness_emissive_roughness": [0, 40, 30]
}
}नंबर 0 से 255 तक जाते हैं। आप hex भी इस्तेमाल कर सकते हैं: उसी MER के लिए "#00281E"। एक जैसा color चार values लेता है (red, green, blue, alpha), और एक जैसा heightmap एक value लेता है।
नियम जो texture set को तोड़ देते हैं
अगर इनमें से कोई भी सच है, तो गेम texture set को छोड़ देता है और Content Log में error लिखता है:
- कोई
colorlayer नहीं है। normalऔरheightmapदोनों सेट हैं।- कोई layer ऐसी image की तरफ़ point करती है जो उसी रिसोर्स पैक में नहीं है।
- किसी image में channels की संख्या गलत है।
color, MER औरnormalको 3 या 4 channels चाहिए,heightmapको 1।
अगर एक ही image नाम कई फ़ाइल प्रकारों में मौजूद है, तो गेम पहले .tga चुनता है, फिर .png, फिर .jpg, फिर .jpeg।
दो पैक के texture sets कभी आपस में नहीं मिलते। लिस्ट में ऊपर वाला पैक पूरे set को बदल देता है।
Vanilla MERS इस्तेमाल करता है
Vanilla ब्लॉक 1.21.30 के format_version के साथ metalness_emissive_roughness_subsurface इस्तेमाल करते हैं, और .tga images ताकि alpha channel में subsurface रहे। काम करता उदाहरण देखने के लिए bedrock samples से एक कॉपी करें।
गेम में कोई बदलाव नहीं?
Texture sets सिर्फ़ Vibrant Visuals या ray tracing चालू होने पर दिखते हैं। अगर फिर भी सपाट दिखे, तो अपने रिसोर्स पैक की manifest.json में सही capability जोड़ें: Vibrant Visuals के लिए "capabilities": ["pbr"], या ray tracing के लिए "raytraced"।