เอกสารนี้ให้ข้อมูลเกี่ยวกับ Fernflower ซึ่งเป็นตัวถอดรหัส Java และ Mitsuba 3 ซึ่งเป็นระบบการเรนเดอร์ที่มุ่งเน้นการวิจัย รายละเอียดของ Fernflower ประกอบด้วยฟังก์ชันการทำงาน ใบอนุญาต การใช้บรรทัดคำสั่ง และตัวเลือกสำหรับการเปลี่ยนชื่อตัวระบุ คำอธิบายของ Mitsuba 3 ครอบคลุมคุณสมบัติ การติดตั้ง การใช้งาน และผู้สนับสนุน ทั้งสองส่วนมีคำอธิบายและตัวอย่างที่ครอบคลุม
เกี่ยวกับ เฟิร์นฟลาวเวอร์
Fernflower เป็นโปรแกรมถอดรหัสเชิงวิเคราะห์ตัวแรกที่ใช้งานได้จริงสำหรับ Java และ
อาจเป็นสำหรับภาษาโปรแกรมระดับสูงโดยทั่วไป โดยธรรมชาติแล้วมันยังคงอยู่
อยู่ระหว่างการพัฒนา โปรดส่งรายงานข้อผิดพลาดและข้อเสนอแนะในการปรับปรุงไปที่
ติดตามปัญหา
เฟิร์นฟลาวเวอร์ และฟอร์จฟลาวเวอร์
Fernflower มีแพตช์บางส่วนจาก Forgeflower
ขอขอบคุณอย่างจริงใจต่อผู้ดูแล Forgeflower สำหรับการมีส่วนร่วมและการปรับปรุงอันมีค่าของพวกเขา
ใบอนุญาต
Fernflower ได้รับอนุญาตภายใต้ Apache License เวอร์ชัน 2.0
ทำงานจากบรรทัดคำสั่ง
java -jar fernflower.jar [-
-
-
-
หมายถึง 0 หรือมากกว่าครั้ง
หมายถึง 1 ครั้งขึ้นไป
: ไฟล์หรือไดเร็กทอรีที่มีไฟล์ที่จะถอดรหัส ไดเร็กทอรีจะถูกสแกนแบบวนซ้ำ นามสกุลไฟล์ที่อนุญาตคือ class, zip และ jar
แหล่งที่มานำหน้าด้วย -e= หมายถึงไฟล์ "library" ซึ่งจะไม่ถูกถอดรหัส แต่จะนำมาพิจารณาเมื่อวิเคราะห์ความสัมพันธ์ระหว่าง
คลาสหรือวิธีการ โดยเฉพาะอย่างยิ่งการเปลี่ยนชื่อตัวระบุ (ตัวเลือก 'ren') จะได้รับประโยชน์จากข้อมูลเกี่ยวกับคลาสภายนอก
: ไดเรกทอรีปลายทาง
-
: ตัวเลือกบรรทัดคำสั่งที่มีค่าที่สอดคล้องกัน (ดู "ตัวเลือกบรรทัดคำสั่ง" ด้านล่าง)
ตัวอย่าง:
java -jar fernflower.jar -hes=0 -hdc=0 c:Tempbinary -e=c:Javart.jar c:Tempsource
java -jar fernflower.jar -dgs=1 c:Tempbinarylibrary.jar c:TempbinaryBoot.class c:Tempsource
ตัวเลือกบรรทัดคำสั่ง
ยกเว้น mpm และ urc ค่า 1 หมายถึงตัวเลือกถูกเปิดใช้งาน 0 - ปิดใช้งาน ค่าเริ่มต้น
ค่า (ถ้ามี) จะระบุไว้ในวงเล็บ
โดยทั่วไป ผู้ใช้จะเปลี่ยนแปลงตัวเลือกต่อไปนี้ ถ้ามี: hes, hdc, dgs, mpm, ren, urc
ตัวเลือกที่เหลือสามารถปล่อยไว้เหมือนเดิม: มุ่งเป้าไปที่วิศวกรย้อนกลับมืออาชีพ
การเปลี่ยนชื่อตัวระบุ
obfuscators บางตัวตั้งชื่อคลาสและองค์ประกอบสมาชิกให้สั้น ไม่มีความหมาย และเหนือสิ่งอื่นใดคือชื่อที่ไม่ชัดเจน การเรียบเรียงใหม่ดังกล่าว
รหัสนำไปสู่ข้อขัดแย้งมากมาย ดังนั้นจึงแนะนำให้ปล่อยให้ผู้ถอดรหัสเปลี่ยนชื่อองค์ประกอบตามลำดับ
รับประกันความเป็นเอกลักษณ์ของตัวระบุแต่ละตัว
ตัวเลือก 'ren' (เช่น -ren=1) เปิดใช้งานฟังก์ชันการเปลี่ยนชื่อ กลยุทธ์การเปลี่ยนชื่อเริ่มต้นจะเป็นดังนี้:
ความหมายของแต่ละวิธีควรชัดเจนจากการตั้งชื่อ: toBeRenamed กำหนดว่าจะเปลี่ยนชื่อองค์ประกอบหรือไม่ ในขณะที่อีก 3 วิธีที่เหลือ
ระบุชื่อใหม่สำหรับคลาส วิธีการ และฟิลด์ตามลำดับ
ตัวอย่าง:
มิตสึบะ เรนเดอร์เรอร์ 3
เอกสารประกอบ | วิดีโอสอน | ลินุกซ์ | แมคโอเอส | หน้าต่าง | พีพีไอ |
---|---|---|---|---|---|
คำเตือน
ขณะนี้มีงานที่ไม่มีเอกสารและไม่มั่นคงเกิดขึ้นจำนวนมาก
สาขา master
เราขอแนะนำให้คุณใช้ของเรา
รุ่นล่าสุด
จนกว่าจะมีประกาศต่อไป
หากคุณต้องการลองใช้การเปลี่ยนแปลงที่กำลังจะเกิดขึ้น โปรดดูที่
คู่มือการย้ายนี้
ควรครอบคลุมคุณลักษณะใหม่ส่วนใหญ่และการเปลี่ยนแปลงที่กำลังจะเกิดขึ้น
การแนะนำ
Mitsuba 3 เป็นระบบการเรนเดอร์ที่เน้นการวิจัยสำหรับแสงไปข้างหน้าและไฟผกผัน
การจำลองการขนส่งที่พัฒนาขึ้นที่ EPFL ในประเทศสวิตเซอร์แลนด์
ประกอบด้วยไลบรารีหลักและชุดปลั๊กอินที่ใช้ฟังก์ชันการทำงาน
ตั้งแต่วัสดุและแหล่งกำเนิดแสงไปจนถึงอัลกอริธึมการเรนเดอร์ที่สมบูรณ์
Mitsuba 3 สามารถกำหนดเป้าหมายใหม่ได้ : นี่หมายความว่าการใช้งานพื้นฐานและ
โครงสร้างข้อมูลสามารถแปลงสภาพเพื่อทำงานต่างๆ ให้สำเร็จได้ สำหรับ
ตัวอย่าง รหัสเดียวกันสามารถจำลองการขนส่ง RGB ทั้งแบบสเกลาร์ (คลาสสิกหนึ่งเรย์ต่อครั้ง)
หรือการขนส่งสเปกตรัมที่แตกต่างกันบน GPU ทั้งหมดนี้สร้างขึ้น
Dr.Jit คอมไพเลอร์เฉพาะทาง just-in-time (JIT) ที่พัฒนาขึ้นสำหรับโปรเจ็กต์นี้โดยเฉพาะ
คุณสมบัติหลัก
ข้ามแพลตฟอร์ม : Mitsuba 3 ได้รับการทดสอบบน Linux ( x86_64
), macOS
( aarch64
, x8664
) และ Windows ( x8664
)
ประสิทธิภาพสูง : คอมไพเลอร์ Dr.Jit พื้นฐานจะฟิวส์โค้ดการเรนเดอร์
สู่เมล็ดพืชที่ได้รับประสิทธิภาพอันล้ำสมัยโดยใช้
แบ็กเอนด์ LLVM ที่กำหนดเป้าหมาย CPU และแบ็กเอนด์ CUDA/OptiX
กำหนดเป้าหมาย NVIDIA GPU ด้วยการเร่งด้วยฮาร์ดแวร์ Ray Tracing
Python ก่อน : Mitsuba 3 ได้รับการบูรณาการอย่างลึกซึ้งกับ Python วัสดุ,
พื้นผิวและแม้กระทั่งอัลกอริธึมการเรนเดอร์แบบเต็มสามารถพัฒนาได้ใน Python
ซึ่งระบบ JIT คอมไพล์ (และเลือกสร้างความแตกต่าง) ได้ทันที
สิ่งนี้ทำให้สามารถทดลองที่จำเป็นสำหรับการวิจัยในคอมพิวเตอร์กราฟิกและ
สาขาวิชาอื่น ๆ
ความแตกต่าง : Mitsuba 3 เป็นตัวเรนเดอร์ที่สร้างความแตกต่างได้ ซึ่งหมายความว่ามัน
สามารถคำนวณอนุพันธ์ของการจำลองทั้งหมดโดยคำนึงถึงอินพุต
พารามิเตอร์ต่างๆ เช่น ท่าทางกล้อง เรขาคณิต BSDF พื้นผิว และปริมาตร มัน
ใช้อัลกอริธึมการเรนเดอร์เชิงอนุพันธ์ล่าสุดที่พัฒนาขึ้นที่ EPFL
สเปกตรัมและโพลาไรเซชัน : Mitsuba 3 สามารถใช้เป็นสีเดียวได้
ตัวเรนเดอร์ ตัวเรนเดอร์แบบ RGB หรือตัวเรนเดอร์สเปกตรัม แต่ละรุ่นได้
สามารถเลือกพิจารณาถึงผลกระทบของโพลาไรเซชันได้หากต้องการ
วิดีโอสอน เอกสารประกอบ
เราได้บันทึกวิดีโอ YouTube หลายรายการที่มีการแนะนำอย่างนุ่มนวล
มิตซูบา 3 และ คุณหมอจิตร. นอกเหนือจากนี้ คุณจะพบสมุดบันทึก Juypter ฉบับสมบูรณ์
ครอบคลุมการใช้งาน คำแนะนำวิธีใช้ และเอกสารอ้างอิงที่หลากหลาย
บน readthedocs
การติดตั้ง
เราจัดเตรียมล้อไบนารีที่คอมไพล์ไว้ล่วงหน้าผ่าน PyPI การติดตั้ง Mitsuba ด้วยวิธีนี้ทำได้ง่ายเพียงแค่ใช้งาน
pip ติดตั้งมิตซูบา
บนบรรทัดคำสั่ง แพ็คเกจ Python มีตัวแปรสิบสามแบบตามค่าเริ่มต้น:
scalar_rgb
scalar_spectral
scalarspectralpolarized
llvmadrgb
llvmadmono
llvmadmono_polarized
llvmadspectral
llvmadspectral_polarized
cudaadrgb
cudaadmono
cudaadmono_polarized
cudaadspectral
cudaadspectral_polarized
สองรายการแรกทำการจำลองแบบหนึ่งเรย์ต่อครั้งแบบคลาสสิกโดยใช้ RGB
หรือการแสดงสีสเปกตรัม ในขณะที่สองอันหลังสามารถใช้สำหรับการผกผันได้
แสดงผลบน CPU หรือ GPU หากต้องการเข้าถึงตัวแปรเพิ่มเติม คุณจะต้อง
รวบรวม Dr.Jit เวอร์ชันที่กำหนดเองโดยใช้ CMake โปรดดูที่
เอกสารประกอบ
สำหรับรายละเอียดเกี่ยวกับเรื่องนี้
ความต้องการ
Python >= 3.8
(ทางเลือก) สำหรับการคำนวณบน GPU: Nvidia driver >= 495.89
(ทางเลือก) สำหรับการคำนวณแบบเวกเตอร์ / แบบขนานบน CPU: LLVM >= 11.1
การใช้งาน
นี่คือตัวอย่าง "Hello World" ง่ายๆ ที่แสดงให้เห็นว่าการเรนเดอร์ a เป็นเรื่องง่ายเพียงใด
ฉากโดยใช้ Mitsuba 3 จาก Python:
# นำเข้าไลบรารีโดยใช้นามแฝง "mi" นำเข้า mitsuba เป็น mi# ตั้งค่าตัวแปรของ renderermi.setvariant('scalarrgb')# โหลดฉากฉาก = mi.loติดยาเสพติด(mi.cornellbox())# เรนเดอร์ฉาก img = mi render(scene)# เขียนภาพที่เรนเดอร์ไปยังไฟล์ EXRmi.Bitmap(img).write('cbox.exr')
สามารถดูบทช่วยสอนและสมุดบันทึกตัวอย่างที่ครอบคลุมการใช้งานที่หลากหลาย
ในเอกสารประกอบ
เกี่ยวกับ
โปรเจ็กต์นี้สร้างโดย Wenzel Jakob
คุณสมบัติที่สำคัญและ/หรือการปรับปรุงโค้ดได้รับการสนับสนุนโดย
เซบาสเตียน สไปเรอร์,
นิโคลัส รุสเซล,
เมอร์ลิน นิเมียร์-เดวิด
เดลิโอ วิชินี่,
ทิเซียน เซลท์เนอร์,
แบปติสต์ นิโคเลต์,
มิเกล เครสโป,
วินเซนต์ เลอรอย และ
จือยี่ จาง.
เมื่อใช้ Mitsuba 3 ในโครงการวิชาการ โปรดอ้างอิง:
@software{Mitsuba3,title = {Mitsuba 3 renderer},ผู้เขียน = {Wenzel Jakob และ Sébastien Speierer และ Nicolas Roussel และ Merlin Nimier-David และ Delio Vicini และ Tizian Zeltner และ Baptiste Nicolet และ Miguel Crespo และ Vincent Leroy และ Ziyi Zhang} หมายเหตุ = {https://mitsuba-renderer.org},รุ่น = {3.1.1},ปี = 2022}