บล็อก 3DWorld: https://3dworldgen.blogspot.com
3DWorld คือเอ็นจิ้นเกม 3 มิติที่ใช้ OpenGL ข้ามแพลตฟอร์ม ที่ฉันทำงานมาตั้งแต่เรียนหลักสูตรคอมพิวเตอร์กราฟิก CS184 ที่ UC Berkeley ในปี 2544 โดยมีคุณสมบัติดังต่อไปนี้:
ฟังก์ชันกราฟิก 3D คลาส และ Wrapper รอบ OpenGL
เครื่องกำเนิด/โปรเซสเซอร์ Shader พร้อมการรีโหลดแบบร้อน
ขั้นตอนการสร้างเนื้อหาสำหรับภูมิประเทศ พืชพรรณ เมือง การตกแต่งภายในและภายนอกอาคาร ฯลฯ
เครื่องกำเนิดจักรวาลขั้นตอนพร้อมกาแล็กซี ดวงดาว ดาวเคราะห์ ดวงจันทร์ ฯลฯ
การสร้างภูมิประเทศ voxel 3D ตามขั้นตอนพร้อมการแก้ไขโดยผู้ใช้แบบเรียลไทม์
เครื่องกำเนิดภูมิประเทศรวมถึงฟังก์ชันเสียงรบกวนต่างๆ การกัดเซาะ การแก้ไขโดยผู้ใช้แบบเรียลไทม์ การอ่าน/เขียนแผนที่ความสูง
ขั้นตอนการก่อสร้าง (ภายในและภายนอก) ถนน และการสร้างเมือง
การจำลองทางฟิสิกส์สำหรับประเภทวัตถุดั้งเดิมและอื่น ๆ (> วัตถุไดนามิก 10K)
วงจรกลางวัน/กลางคืนแบบเรียลไทม์พร้อมสภาพอากาศ (ฝน หิมะ ลูกเห็บ ลม ฟ้าผ่า)
วัสดุทางกายภาพที่มีการสะท้อนและการหักเหของแสง
เงาแบบไดนามิก การบดบังแสงโดยรอบ แหล่งกำเนิดแสงไดนามิกสูงสุด 1,024 แหล่ง เอฟเฟกต์หลังการประมวลผล
แอนิเมชันโครงกระดูกและแอนิเมชันขั้นตอน
เกมยิงมุมมองบุคคลที่หนึ่งในตัว "นักฆ่ายิ้ม"
เกมสร้างยานอวกาศ + อาณานิคมดาวเคราะห์
สร้างคอลเลกชั่นไอเท็มโอเพ่นเวิลด์และโหมดการเล่นซอมบี้
คอมพิวเตอร์ AI สำหรับผู้เล่นในเกม FPS สร้างการเล่นเกม และจัดส่งในเกมจักรวาล
ผู้นำเข้าสำหรับไฟล์วัตถุ Lightwave รูปแบบ 3DS และ Assimp สำหรับรูปแบบไฟล์อื่น
รองรับการอ่านพื้นผิว: JPEG, PNG, BMP, TIFF, TGA, DDS
ปรับให้เหมาะสมเพื่อการโหลดที่รวดเร็วและการเรนเดอร์แบบเรียลไทม์ของโมเดลขนาดใหญ่ (> 1GB ของข้อมูลจุดยอด/พื้นผิว)
ฉันแปลงโปรเจ็กต์จาก svn เป็น git ที่คอมมิต 6607 โค้ดส่วนใหญ่เขียนด้วยภาษา C ++ โดยมี GLSL สำหรับเชเดอร์ นี้มีวัตถุประสงค์เพื่อเป็นโครงการข้ามแพลตฟอร์ม รวมไฟล์โปรเจ็กต์ Microsoft Visual Studio 2022 แล้ว makefile linux/gcc รวมอยู่ด้วย แต่เป็นการทดลองมากกว่า ดู README.linux สำหรับรายละเอียดเพิ่มเติม โครงการควรสร้างภายใต้ gcc บน linux ด้วยงานบางอย่าง แต่ฉันลองใช้มันสักพักแล้ว ฉันมี makefile เก่าที่ล้าสมัย แต่อาจใช้เวลาไม่นานในการแก้ไขและทำให้มันใช้งานได้
คำเตือน นี่คือพื้นที่เก็บข้อมูลขนาดใหญ่ ปัจจุบันมีขนาดประมาณ 1GB ฉันได้รวมซอร์สโค้ด ไฟล์กำหนดค่า พื้นผิว เสียง โมเดลขนาดเล็ก ไฟล์แสง ข้อมูลฉาก แผนที่ความสูง และไฟล์โปรเจ็กต์แล้ว ที่เก็บนี้ไม่มีไฟล์โมเดลขนาดใหญ่ที่ใช้ในบางฉาก คุณจะต้องดาวน์โหลดไฟล์เหล่านี้แยกกัน ซึ่งหมายความว่าไฟล์กำหนดค่าฉากบางไฟล์จะไม่ทำงานเนื่องจากไม่พบข้อมูลอ้างอิง รายการการขึ้นต่อกันในปัจจุบันคือ:
OpenGL 4.5 (ควรมาพร้อมกับไดรเวอร์กราฟิกล่าสุดของ Windows 8/10/11)
OpenAL 1.1 (เป็นทางเลือก) (การติดตั้งระบบ: https://www.openal.org/downloads/ หรือคุณสามารถลองใช้ openal-soft ที่ใหม่กว่า: https://github.com/kcat/openal-soft)
freeglut-2.8.1 (เวอร์ชัน 3.0 ปัจจุบันอาจใช้งานได้: https://sourceforge.net/projects/freeglut/)
freealut-1.1.0 (เป็นทางเลือก) (เวอร์ชันเดียวอยู่ที่นี่: https://github.com/vancegroup/freealut)
zlib-1.2.11 (คุณสามารถดาวน์โหลดเวอร์ชันใหม่ได้จากที่นี่: https://zlib.net/)
glew-2.0.0 (2.1.0 อาจใช้ได้เช่นกัน: http://glew.sourceforge.net/)
gli (เวอร์ชันล่าสุด: https://github.com/g-truc/gli / ส่วนหัวเท่านั้น รวมอยู่ในไดเรกทอรีการอ้างอิง)
glm-0.9.9.0 (เวอร์ชันล่าสุด: https://glm.g-truc.net/0.9.9/index.html หรือ https://github.com/g-truc/glm / ส่วนหัวเท่านั้น รวมอยู่ในไดเรกทอรีการอ้างอิง )
libpng-1.2.20 (เป็นทางเลือก) (เวอร์ชันของฉันเก่ามาก เวอร์ชันล่าสุด: https://libpng.sourceforge.io/index.html); ในกรณีส่วนใหญ่สามารถแทนที่ด้วย stb_image ยกเว้นการส่งออกรูปภาพแผนที่)
libtiff-4.3.0 (เป็นทางเลือก) (เวอร์ชันล่าสุด: http://www.simplesystems.org/libtiff/)
Assimp (ไม่บังคับ) (ดูคำแนะนำในการสร้างที่ https://github.com/assimp/assimp/blob/master/Build.md คำแนะนำในการสร้าง vcpkg น่าจะเป็นวิธีที่ง่ายที่สุด)
libtarga (รวมแหล่งที่มา)
ส่วนหัว STB: stb_image, stb_image_write, stb_dxt (รวมแหล่งที่มา)
ฉันได้รวมไลบรารีเหล่านี้ส่วนใหญ่ในเวอร์ชันที่แยกออกมาไว้ในไดเร็กทอรีการอ้างอิง ฉันลบไฟล์ขนาดใหญ่ทั้งหมดที่ 3DWorld ไม่ต้องการออก ในบางกรณี แม้แต่ตัวอย่าง/การทดสอบ/เอกสารประกอบด้วย สิ่งเหล่านี้สร้างขึ้นด้วย MS Visual Studio 2022 Community บน Windows 11 หากคุณต้องการใช้สิ่งเหล่านี้ คุณจะต้องคัดลอกไดเร็กทอรีไปยังไดเร็กทอรีรากและสร้างไลบรารีที่จำเป็นสำหรับ Windows หรือ Visual Studio เวอร์ชันอื่นขึ้นมาใหม่ หากคุณโคลน/ติดตั้ง vcpkg ควรอยู่ในระดับเดียวกับไดเร็กทอรี 3DWorld
โปรดทราบว่าการขึ้นต่อกันเหล่านี้ส่วนใหญ่เก่าแล้วและสามารถแทนที่ด้วยไลบรารีที่ใหม่กว่าได้ ฉันมุ่งเน้นไปที่การเพิ่มเนื้อหาและฉันก็ไม่สนใจเรื่องนี้มากนัก Freeglut ควรถูกแทนที่ด้วย SDL และไลบรารีรูปภาพด้วย STB หรือ DevIL (STB ใช้เป็นทางเลือก แต่ไม่รองรับรูปภาพทั้งหมดที่ใช้)
หากคุณต้องการสร้าง 3DWorld คุณสามารถใช้โปรเจ็กต์ในการอ้างอิง/ โฟลเดอร์ หรือดาวน์โหลดและสร้างด้วยตนเองและเปลี่ยนการตั้งค่าโปรเจ็กต์เพื่อใช้งาน ขณะนี้ฉันใช้เป้าหมายการสร้างชุมชน x64 MS Visual Studio 2022 สำหรับ 3DWorld แต่เป้าหมายการสร้าง win32 ก็ใช้งานได้เช่นกัน โครงการ MSVS 2019 3DWorld_msvs2019.vcxproj ปัจจุบันล้าสมัยแล้ว แต่สามารถใช้งานได้ ควรคอมไพล์และทำงานในโหมด 32 บิต หากคุณคัดลอก DLL จากโฟลเดอร์ lib64/ ไปยังรูทของ repo และทำการเปลี่ยนแปลงการตั้งค่าโปรเจ็กต์อื่นๆ
หากคุณมี linux คุณสามารถลองสร้างโดยใช้ makefile ที่ให้มาได้ ไฟล์ README.linux น่าจะมีประโยชน์ ฉันได้รับ 3DWorld เพื่อสร้างและส่วนใหญ่ทำงานบน Ubuntu 18.04 พร้อม gcc 7 และ Ubuntu 20.04 พร้อม gcc 9
3DWorld ใช้ชื่อไฟล์กำหนดค่าบนบรรทัดคำสั่ง หากไม่พบ ระบบจะอ่าน defaults.txt และใช้ไฟล์กำหนดค่าใดๆ ที่แสดงอยู่ที่นั่น ไฟล์ congig เหล่านี้บางไฟล์มีโมเดลต่างๆ เช่น Sponza Atrium, Stanford Dragon, sportscar เป็นต้น ไฟล์เหล่านี้ใหญ่เกินกว่าจะจัดเก็บไว้ใน repo git ฉันได้พยายามที่จะให้ 3DWorld สร้างข้อผิดพลาดที่ไม่ร้ายแรงหากไม่พบแบบจำลอง โมเดลขนาดใหญ่หลายรุ่นสามารถพบได้ที่ McGuire Computer Graphics Archive: http://casual-effects.com/data/
ฉันได้รวบรวมโมเดล 3 มิติที่มีขนาดใหญ่เกินไปสำหรับ repo GitHub และวางไว้บน Google Drive ที่นี่ (สูงสุด v6 ตอนนี้): https://drive.google.com/file/d/1crN9rqT-LSvYyTZTw5wtkhwsubE651ex/view? usp=sharing โมเดลเหล่านี้บางส่วนถูกจัดเก็บในรูปแบบภายในของ 3DWorld และไม่ควรนำมาใช้ซ้ำในโครงการอื่น อื่นๆ มาจากเว็บไซต์เช่น Mixamo นอกจากนี้ยังมีไดเร็กทอรีพื้นผิวที่มีพื้นผิวเพิ่มเติมที่ใช้กับการตกแต่งภายในอาคารที่สามารถรวมเข้ากับไดเร็กทอรีพื้นผิวของโครงการได้
ความต้องการของระบบ:
วินโดวส์ 8/10/11; Linux เมื่อใช้ makefile กับ gcc
Microsoft Visual Studio 2019 หรือ 2022 ต้องใช้เวอร์ชันมืออาชีพหรือเวอร์ชันชุมชนเพื่อรองรับ OpenMP คุณสามารถลองใช้ gcc บน linux ได้
Nvidia หรือ AMD GPU ที่ค่อนข้างใหม่ (ทำงานบนแล็ปท็อปของฉันที่มีกราฟิก Intel แต่ที่ 12-20 FPS)
หน่วยความจำระบบอย่างน้อย 8GB สำหรับฉากขนาดใหญ่
หน่วยความจำ GPU อย่างน้อย 4GB สำหรับฉากขนาดใหญ่ GPU ของฉันมีหน่วยความจำ 12GB
การแก้ไขปัญหา: ดูเหมือนว่าบางระบบ (โดยเฉพาะการ์ด AMD) ต้องการบริบทหลักของ OpenGL สามารถเลือกได้โดยการเพิ่ม "use_core_context 1" ในไฟล์ปรับแต่ง นอกจากนี้ยังสามารถเปิดใช้งานได้ใน scene_config/config_post.txt ซึ่งเป็นไฟล์ที่ใช้หลังจากอ่านไฟล์กำหนดค่าระดับบนสุดอื่นๆ ทั้งหมดแล้ว ในบางสถานการณ์ (การ์ด Nvidia บางรุ่น) การใช้บริบทหลักอาจช้าลง ซึ่งเป็นสาเหตุที่ฉันไม่เปิดใช้งานตามค่าเริ่มต้น
คีย์ที่มีประโยชน์ (ดู readme-keys.txt สำหรับการเชื่อมโยงคีย์เพิ่มเติม):
a,s,d,w: การเคลื่อนไหว
q,e: เปลี่ยนอาวุธ (โหมดการเล่นเกม)
'ช่องว่าง': กระโดด/ยิง
'esc': ออก
'tab': เมนูบนหน้าจอ (นำทางด้วยปุ่มลูกศรและ 'X' เพื่อสลับเมนู)
b: เปิดใช้งานวัตถุ/ฟิสิกส์/AI (สำหรับโหมดภาคพื้นดินและการเล่นเกมโหมดจักรวาล)
F1: สลับระหว่างโหมดพื้นดิน/จักรวาล/ปูกระเบื้อง
F2: สลับโหมดการเล่นเกม
m: สลับโหมดเต็มหน้าจอ
h: สลับการเคลื่อนที่ของเที่ยวบิน
v: เปลี่ยนโหมดกล้อง (ลูกบอลคริสตัล/วงโคจรเทียบกับมุมมองบุคคลที่หนึ่ง)
V: สลับรูปลักษณ์ของเมาส์
K: สลับโหมดแผนที่เหนือศีรษะ
x: หยุดชั่วคราว
เมาส์ซ้าย: เลี้ยว/แอ็คชั่น
เมาส์ขวา: ไฟ
ขณะนี้ฉันมี repo นี้เพื่อวัตถุประสงค์ทางการศึกษาภายใต้ใบอนุญาต GPLv3 โมดูลย่อยบางโมดูลสามารถใช้งานได้กับใบอนุญาตอื่นที่เข้ากันได้กับการใช้งานเชิงพาณิชย์ในบัญชี GitHub ของฉัน มันไม่ได้มีไว้สำหรับเป็นเครื่องมือเชิงพาณิชย์ และฉันไม่ได้พยายามหาเงินที่นี่ ฉันยังไม่มองหาผู้อื่นมาทำงานในโครงการนี้ในขั้นตอนนี้ แม้ว่าฉันจะยอมรับคำติชม รายงานข้อผิดพลาด และข้อเสนอแนะก็ตาม บางทีสิ่งต่างๆ อาจจะเปลี่ยนไปหากฉันตัดสินใจสร้างเกมจริงๆ จากเรื่องนี้ หากคุณต้องการใช้บางสิ่งบางอย่างที่นี่สำหรับโครงการของคุณ โปรดแจ้งให้เราทราบ
ไม่มีเอกสารเพิ่มเติมสำหรับ 3DWorld อย่างไรก็ตาม ฉันมีบล็อกที่มีคำอธิบายอัลกอริทึมและภาพหน้าจอจำนวนมาก: https://3dworldgen.blogspot.com
นี่คือภาพหน้าจอบางส่วนที่เชื่อมโยงจากบล็อกของฉัน:
นี่คือพื้นที่ค้าปลีกของอาคารที่มีชั้นวางของ สิ่งปลูกสร้างสามารถบรรจุสิ่งของแบบโต้ตอบได้นับหมื่นชิ้นที่ผู้เล่นสามารถนำติดตัวไปได้ (config_heightmap.txt)
กล้องที่วางอยู่ในห้องอื่นจะแสดงฟีดวิดีโอแบบเรียลไทม์บนหน้าจอรักษาความปลอดภัย (config_heightmap.txt)
ซอมบี้ (ที่มีการค้นหาเส้นทางและพฤติกรรม AI อื่นๆ) เดินไปมาและตกลงไปในสระว่ายน้ำในร่ม ผิวน้ำมีระลอกคลื่น กระเด็น การสะท้อน และการหักเหของแสง (config_heightmap.txt)
ที่จอดรถพร้อมรถที่จอดอยู่และท่อสปริงเกอร์เดินบนเพดาน (config_heightmap.txt)
ขั้นตอนการสร้างชั้นใต้ดินที่มีผู้คน แสงสว่างทางอ้อม และท่อที่เดินเลียบเพดาน (config_heightmap.txt)
ย่านที่อยู่อาศัยแบบขั้นตอนซึ่งมีอาคารสำนักงานอยู่ด้านหลัง มีรถยนต์และผู้คนทั้งบนทางเท้าและภายในอาคาร (config_heightmap.txt)
ภายในอาคารขั้นตอน - ห้องสมุดที่มีหนังสือที่สร้างขึ้นตามขั้นตอน (config_heightmap.txt)
บ้านและอาคารสำนักงานที่สร้างขึ้นตามขั้นตอนพร้อมการตกแต่งภายในเต็มรูปแบบ (config_heightmap.txt)
ทรงกลมสะท้อนแสง (โลหะ) หักเห (แก้ว) ทรงกลมเปล่งแสง และโปร่งแสงในฉากกลางคืนที่มีแสงทางอ้อม วาดแบบเรียลไทม์ ทรงกลมสามารถเคลื่อนย้ายแบบโต้ตอบได้ (config_white_plane.txt)
เมืองขั้นตอนที่มีอาคาร ถนน รถยนต์ และคนเดินเท้า (config_heightmap.txt)
เมืองขั้นตอนในเวลากลางคืนที่มีสะพานอยู่เบื้องหน้า (config_heightmap.txt)
เมืองขั้นตอนต้นที่มีต้นสน
เมืองขั้นตอนต้น
ภูมิประเทศโดยใช้เสียงวาร์ปโดเมนพร้อมการจำลองการกัดเซาะด้วยไฮดรอลิกก่อนวางเมือง (config_heightmap.txt)
โหมดภูมิประเทศแบบเรียงต่อกันด้วยแม่น้ำ ต้นไม้ หญ้า ฯลฯ (config_t.txt)
การจำลองไฟ/ควันทำลายล้างเชิงโต้ตอบแบบเรียลไทม์ที่เกี่ยวข้องกับต้นไม้ พืช และหญ้า (config_trees.txt)
ระบบสุริยะจักรวาลขั้นตอนพร้อมแถบดาวเคราะห์น้อย (จักรวาล/config_universe.txt)
ฉากเอเทรียม Crytek Sponza พร้อมแหล่งกำเนิดแสงที่หล่อด้วยเงาแบบไดนามิกและแสงทางอ้อม (sponza/config_sponza2.txt)
แบบจำลองพิพิธภัณฑ์ที่มีรายละเอียดสูง 10,000 ตัวอย่างวางในโหมดภูมิประเทศแบบเรียงต่อกัน (แผนที่ความสูงของ Puget Sound) และวาดแบบเรียลไทม์ด้วยเงาและแสงทางอ้อม (config_museum_tt_model.txt)
ห้องโถงใหญ่ Crytek Sponza พร้อมพื้นสะท้อนแสงและแหล่งกำเนิดแสงแบบจุดแบบไดนามิก 200 จุดแบบเรียลไทม์ (sponza/config_sponza2.txt)
ทรงกลมและลูกบาศก์สะท้อนแสง/หักเหจำนวนมากพร้อมการลดทอนแสงตามความหนาแน่นในลานภายในอาคารสำนักงาน (mapx/config_mapx.txt)
ฉากซานมิเกลที่มีหิมะตกแบบไดนามิกและแผนที่ครอบคลุมหิมะตามเส้นทางที่เรนเดอร์ด้วยเชเดอร์แบบกำหนดเอง (config_san_miguel.txt)
ฉาก San Miguel เรนเดอร์แบบเรียลไทม์พร้อมเส้นทางที่ติดตามแสงทางอ้อมที่คำนวณไว้ล่วงหน้า แผนที่ปกติ และพื้นผิวสะท้อนแสงที่แมปลูกบาศก์ (config_san_miguel.txt)
ต้นสน 2 ล้านต้นที่สร้างขึ้น + วางตามขั้นตอน (มองเห็นได้ 500,000 ต้น) วาดแบบเรียลไทม์ในโหมดภูมิประเทศแบบปูกระเบื้องโดยใช้ป้ายโฆษณาตัวอย่าง (config_t.txt)
การจัดเรียงกล่องไดนามิก 10,000 กล่องแบบโต้ตอบในฉาก mapx สแต็คสามารถเคลื่อนย้ายและล้มลงได้ และสามารถบันทึก/โหลดซ้ำ/แก้ไขฉากได้ (mapx/config_mapx.txt)
ดาวเคราะห์ที่สร้างขึ้นตามขั้นตอนพร้อมวงแหวนที่มีดาวเคราะห์น้อยขนาดเล็ก (จักรวาล/config_universe.txt)
แถบดาวเคราะห์น้อยที่มีดาวเคราะห์น้อยไดนามิก 10,000 ดวง (กำลังหมุนและโคจรอยู่) อนุภาคสไปรต์ 100,000 จุด และเมฆป้ายโฆษณาปริมาณฝุ่น (จักรวาล/config_universe.txt)
โหมดภูมิประเทศแบบเรียงต่อกัน ซึ่งแสดงรูปแบบต่างๆ ของพืชพรรณที่สร้างขึ้นตามขั้นตอน รวมถึงหญ้า ดอกไม้ ต้นสน ต้นปาล์ม และต้นไม้ผลัดใบ จริงๆ แล้วนี่คือโมเดลรูปหลายเหลี่ยมที่ทำให้เกิดเงา (config_t.txt)
ลำแสงไดนามิกแบบเรียลไทม์ผ่านควันเชิงปริมาตรตามเสียงรบกวนในฉาก Crytek Sponza (sponza/config_sponza2.txt)
พื้นเมทัลลิกสะท้อนแสงในฉาก Crytek Sponza พร้อมแสงดวงอาทิตย์และแสงบนท้องฟ้า (sponza/config_sponza2.txt)
ทรงกลมสะท้อนแสง พรู และลูกบาศก์ที่วาดแบบเรียลไทม์ในฉากไดนามิกโดยใช้พื้นผิวการสะท้อนของแผนที่ลูกบาศก์ในล็อบบี้ของอาคารสำนักงาน วัสดุเป็นส่วนผสมของโลหะและไดอิเล็กทริกโดยใช้แบบจำลองทางกายภาพ (mapx/config_mapx.txt)
ฉากพิพิธภัณฑ์ที่มีแสงทางอ้อม พื้นผิวสะท้อนแสง และการทำแผนที่เงา โมเดลนี้มีพื้นผิวตามขั้นตอน (config_museum.txt)
ฉากบ้านที่เต็มไปด้วยหิมะที่เกิดจากการปล่อยอนุภาคหิมะนับพันล้านอนุภาคและหิมะที่สะสม หิมะได้รับการคำนวณล่วงหน้าแต่สามารถเรนเดอร์ได้แบบเรียลไทม์ (บ้าน/config_house_winter.txt)
การจำลองและการจำลองฝน รวมถึงการตรวจจับการชนกันของน้ำฝนและพื้นผิวเปียก/สะท้อนแสงแต่ละอัน (บ้าน/config_house.txt)
แสงและเงาทางอ้อมจากสปอตไลท์ที่ทับซ้อนกันที่ใช้กับวัตถุไดนามิก (mapx/config_mapx.txt)
การจำลองน้ำด้วยคลื่นโดยใช้ฮาร์ดแวร์เทสเซลเลชั่นในโหมดภูมิประเทศแบบเรียงต่อกัน (config_t.txt)
ถ้ำน้ำแข็ง voxel 3 มิติที่สร้างขึ้นตามขั้นตอนพร้อมแสงทางอ้อม ภูมิประเทศนี้สามารถแก้ไขได้แบบเรียลไทม์ด้วยแปรงและการยิงอาวุธ (config_ice_caves.txt)
ดาวเคราะห์ที่สร้างขึ้นตามขั้นตอนถูกวาดทั้งหมดโดยใช้ตัวเชเดอร์ส่วนโดยไม่มีพื้นผิว ซึ่งรวมถึงการสร้างภูมิประเทศ (น้ำแข็ง หิมะ หิน ป่าไม้ ทะเลทราย ดิน) น้ำ เมฆ และบรรยากาศ (จักรวาล/config_universe.txt)