เอกสารนี้ให้ภาพรวมของสองโครงการที่แตกต่างกัน ได้แก่ gRPC/Spring ซึ่งเป็น Spring Boot Starter สำหรับ gRPC และ Mitsuba 3 ซึ่งเป็นระบบการเรนเดอร์ที่เน้นการวิจัย ส่วน gRPC/Spring ให้รายละเอียดคุณสมบัติ คำแนะนำการใช้งาน และข้อมูลความเข้ากันได้ ส่วน Mitsuba 3 ครอบคลุมถึงการติดตั้ง การใช้งาน คุณลักษณะ และผู้สนับสนุน ทั้งสองส่วนมีตัวอย่างโค้ดและลิงก์ไปยังเอกสารประกอบเพิ่มเติม
แบบสำรวจ - gRPC/Spring
เรียนผู้ใช้ gRPC/Spring เพื่อปรับปรุงประสบการณ์ผู้ใช้
grpc-ecosystem/grpc-spring เราได้พัฒนาแบบสำรวจนี้เพื่อเป็นแนวทางในการ
การสร้างสายการสื่อสารโดยตรง ความคิดเห็นของคุณได้รับการชื่นชมอย่างมาก
สตาร์ทเตอร์สปริงบูท gRPC
README: อังกฤษ | 中文
เอกสารประกอบ: อังกฤษ | 中文
คุณสมบัติ
กำหนดค่าและรันเซิร์ฟเวอร์ gRPC โดยอัตโนมัติด้วยการใช้งาน @GrpcService ของคุณ
สร้างและจัดการช่อง grpc และ stub ของคุณโดยอัตโนมัติด้วย @GrpcClient
รองรับรสชาติ grpc-java อื่น ๆ (เช่น
gRPC ปฏิกิริยา (RxJava)
grpc-kotlin, ...)
รองรับ Spring-Security
รองรับสปริงคลาวด์
รองรับ Spring Sleuth เป็นโซลูชันการติดตามแบบกระจาย
(หากมี Brave-instrumentation-grpc อยู่)
รองรับเซิร์ฟเวอร์/ไคลเอนต์ gRPC ระดับโลกและแบบกำหนดเอง
รองรับหน่วยเมตริกอัตโนมัติ (ใช้ไมโครมิเตอร์/แอคชูเอเตอร์)
ใช้งานได้กับ grpc-netty (ไม่แรเงา) ด้วย
รุ่นต่างๆ
เวอร์ชันล่าสุดคือ 3.1.0.RELEASE ซึ่งคอมไพล์ด้วย spring-boot 3.2.4 และ spring-cloud 2023.0.0
แต่ยังเข้ากันได้กับเวอร์ชันอื่นๆ มากมายอีกด้วย
คุณสามารถดูภาพรวมของทุกเวอร์ชันและเวอร์ชันไลบรารีที่เกี่ยวข้องได้ในเอกสารประกอบของเรา
หมายเหตุ: โปรเจ็กต์นี้ยังสามารถใช้ได้โดยไม่ต้องใช้ Spring-Boot อย่างไรก็ตาม ต้องมีการกำหนดค่า bean ด้วยตนเอง
การใช้งาน
เซิร์ฟเวอร์ gRPC + ไคลเอนต์
หากต้องการเพิ่มการพึ่งพาโดยใช้ Maven ให้ใช้ดังต่อไปนี้:
วิธีเพิ่มการพึ่งพาโดยใช้ Gradle:
เซิร์ฟเวอร์ gRPC
หากต้องการเพิ่มการพึ่งพาโดยใช้ Maven ให้ใช้ดังต่อไปนี้:
วิธีเพิ่มการพึ่งพาโดยใช้ Gradle:
อธิบายการใช้งานอินเทอร์เฟซเซิร์ฟเวอร์ของคุณด้วย @GrpcService
ตามค่าเริ่มต้น เซิร์ฟเวอร์ grpc จะฟังพอร์ต 9090 สิ่งเหล่านี้และอื่นๆ
การตั้งค่า
สามารถเปลี่ยนแปลงได้ผ่านกลไกคุณสมบัติของสปริง เซิร์ฟเวอร์ใช้ grpc.server คำนำหน้า
โปรดดูเอกสารของเราสำหรับรายละเอียดเพิ่มเติม
ไคลเอนต์ gRPC
หากต้องการเพิ่มการพึ่งพาโดยใช้ Maven ให้ใช้ดังต่อไปนี้:
วิธีเพิ่มการพึ่งพาโดยใช้ Gradle:
ใส่คำอธิบายประกอบฟิลด์ของต้นขั้วไคลเอ็นต์ grpc ของคุณด้วย @GrpcClient(serverName)
ห้ามใช้ร่วมกับ @Autowired หรือ @Inject
หมายเหตุ: คุณสามารถใช้ชื่อเซิร์ฟเวอร์ grpc เดียวกันสำหรับหลายช่องและ stub ที่แตกต่างกันได้ (แม้ว่าจะต่างกันก็ตาม
เครื่องสกัดกั้น)
จากนั้นคุณสามารถส่งข้อความค้นหาไปยังเซิร์ฟเวอร์ของคุณได้ดังนี้:
สามารถกำหนดค่าที่อยู่เป้าหมายสำหรับลูกค้าแต่ละรายแยกกันได้
อย่างไรก็ตาม ในบางกรณี คุณสามารถพึ่งพาการกำหนดค่าเริ่มต้นได้
คุณสามารถปรับแต่งการแมป URL เริ่มต้นได้ผ่าน NameResolver.Factory beans หากคุณไม่ได้กำหนดค่า bean นั้น
จากนั้น uri เริ่มต้นจะถูกคาดเดาโดยใช้รูปแบบเริ่มต้นและชื่อ (เช่น: dns:/
-
เหล่านี้และอื่นๆ
การตั้งค่า
สามารถเปลี่ยนแปลงได้ผ่านกลไกคุณสมบัติของสปริง ไคลเอนต์ใช้ grpc.client.(serverName) คำนำหน้า
โปรดดูเอกสารของเราสำหรับรายละเอียดเพิ่มเติม
ทำงานด้วย grpc-netty (ไม่แรเงา)
ไลบรารีนี้รองรับทั้ง grpc-netty และ grpc-netty-shaded
อันหลังอาจป้องกันข้อขัดแย้งกับ grpc-version ที่เข้ากันไม่ได้หรือข้อขัดแย้งระหว่างไลบรารีที่ต้องใช้ netty เวอร์ชันที่แตกต่างกัน
หมายเหตุ: หากมี netty ที่แรเงาอยู่บน classpath ไลบรารีนี้จะนิยมมันมากกว่า grpc-netty ที่ไม่แรเงาเสมอ
คุณสามารถใช้กับ Maven ได้ดังนี้:
และเช่นนี้เมื่อใช้ Gradle:
ตัวอย่างโครงการ
อ่านเพิ่มเติมเกี่ยวกับโครงการตัวอย่างของเราที่นี่
การแก้ไขปัญหา
โปรดดูเอกสารประกอบของเราเพื่อขอความช่วยเหลือ
มีส่วนร่วม
ยินดีรับผลงานเสมอ! โปรดดู CONTRIBUTING.md สำหรับคำแนะนำโดยละเอียด
ตัวอย่าง:
มิตสึบะ เรนเดอร์เรอร์ 3
เอกสารประกอบ
วิดีโอสอน
ลินุกซ์
แมคโอเอส
หน้าต่าง
พีพีไอ
คำเตือน
ขณะนี้มีงานที่ไม่มีเอกสารและไม่มั่นคงเกิดขึ้นจำนวนมาก
สาขาหลัก เราขอแนะนำให้คุณใช้ของเรา
รุ่นล่าสุด
จนกว่าจะมีประกาศต่อไป
หากคุณต้องการลองใช้การเปลี่ยนแปลงที่กำลังจะเกิดขึ้น โปรดดูที่
คู่มือการย้ายนี้
ควรครอบคลุมคุณลักษณะใหม่ส่วนใหญ่และการเปลี่ยนแปลงที่กำลังจะเกิดขึ้น
การแนะนำ
Mitsuba 3 เป็นระบบการเรนเดอร์ที่เน้นการวิจัยสำหรับแสงไปข้างหน้าและไฟผกผัน
การจำลองการขนส่งที่พัฒนาขึ้นที่ EPFL ในประเทศสวิตเซอร์แลนด์
ประกอบด้วยไลบรารีหลักและชุดปลั๊กอินที่ใช้ฟังก์ชันการทำงาน
ตั้งแต่วัสดุและแหล่งกำเนิดแสงไปจนถึงอัลกอริธึมการเรนเดอร์ที่สมบูรณ์
Mitsuba 3 สามารถกำหนดเป้าหมายใหม่ได้: นี่หมายความว่าการใช้งานพื้นฐานและ
โครงสร้างข้อมูลสามารถแปลงสภาพเพื่อทำงานต่างๆ ให้สำเร็จได้ สำหรับ
ตัวอย่าง รหัสเดียวกันสามารถจำลองการขนส่ง RGB ทั้งแบบสเกลาร์ (คลาสสิกหนึ่งเรย์ต่อครั้ง)
หรือการขนส่งสเปกตรัมที่แตกต่างกันบน GPU ทั้งหมดนี้สร้างขึ้น
Dr.Jit คอมไพเลอร์แบบทันเวลา (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 มีตัวแปรสิบสามแบบตามค่าเริ่มต้น:
สเกลาร์_rgb
สเกลาร์_สเปกตรัม
สเกลาร์สเปกตรัมโพลาไรซ์
llvmadrgb
llvmadmono
llvmadmono_polarized
llvmadspectral
llvmadspectral_polarized
cudaadrgb
cudaadmono
cudaadmono_polarized
cudaadspectral
cudaadspectral_polarized
สองรายการแรกทำการจำลองแบบหนึ่งเรย์ต่อครั้งแบบคลาสสิกโดยใช้ RGB
หรือการแสดงสีสเปกตรัม ในขณะที่สองอันหลังสามารถใช้สำหรับการผกผันได้
แสดงผลบน CPU หรือ GPU หากต้องการเข้าถึงตัวแปรเพิ่มเติม คุณจะต้อง
รวบรวม Dr.Jit เวอร์ชันที่กำหนดเองโดยใช้ CMake โปรดดูที่
เอกสารประกอบ
สำหรับรายละเอียดเกี่ยวกับเรื่องนี้
ความต้องการ
หลาม >= 3.8
(ทางเลือก) สำหรับการคำนวณบน GPU: ไดรเวอร์ Nvidia >= 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}