คอมพิวเตอร์กราฟฟิค

ถาม - ตอบสำหรับนักวิจัยคอมพิวเตอร์กราฟิกและโปรแกรมเมอร์

9
โปรแกรมเมอร์กราฟิกใหม่ควรเรียนรู้ Vulkan แทนที่จะเป็น OpenGL หรือไม่
จากวิกิ : "Vulkan API ถูกเรียกว่า 'การริเริ่ม OpenGL รุ่นต่อไป' โดย Khrono" และนั่นคือ "ความพยายามในการออกแบบใหม่โดยมีเหตุผลที่จะรวม OpenGL และ OpenGL ES ไว้ใน API ทั่วไปที่จะไม่ย้อนหลัง เข้ากันได้กับรุ่น OpenGL ที่มีอยู่ " ดังนั้นผู้ที่เข้าร่วมในการเขียนโปรแกรมกราฟิกควรจะได้รับบริการที่ดีกว่าในการเรียนรู้ Vulkan แทนที่จะเป็น OpenGL หรือไม่ ดูเหมือนว่าพวกเขาจะทำหน้าที่จุดประสงค์เดียวกัน
53 opengl  api  vulkan 

5
มุมคมกับแบบอักษรฟิลด์ระยะทางที่ลงนาม
Signed Distance Fields (SDFs) ถูกนำเสนอเป็นวิธีแก้ปัญหาอย่างรวดเร็วเพื่อให้บรรลุการแสดงผลแบบอักษรอิสระความละเอียดโดย Valve ในบทความนี้ ฉันมีวิธีแก้ปัญหา Valve แล้ว แต่ฉันต้องการรักษาความคมชัดรอบมุม Valve ระบุว่าวิธีการของพวกเขาสามารถทำให้ได้มุมที่คมชัดโดยใช้แชนเนลเนื้อรองที่สอง ANDed กับฐานหนึ่ง แต่ไม่สามารถอธิบายได้ว่าจะสร้างแชเนลที่สองได้อย่างไร ในความเป็นจริงมีรายละเอียดการใช้งานมากมายเหลืออยู่ในบทความนี้ ฉันอยากจะรู้ว่าถ้ามีคุณคนใดสามารถชี้ให้ฉันเห็นทิศทางเพื่อให้ได้แบบอักษร SDFs ที่มีมุมคม

6
ฉันจะแก้ไขข้อบกพร่อง GLSL ได้อย่างไร
เมื่อเขียนเฉดที่ไม่สำคัญ (เช่นเดียวกับเมื่อเขียนโค้ดอื่นที่ไม่ใช่เรื่องไร้สาระ) ผู้คนทำผิดพลาด [อ้างอิงที่จำเป็น]อย่างไรก็ตามฉันไม่สามารถแก้จุดบกพร่องเช่นเดียวกับรหัสอื่น ๆ - คุณไม่สามารถแนบ gdb หรือดีบักเกอร์ Visual Studio หลังจากทั้งหมด คุณไม่สามารถทำการดีบัก printf ได้เนื่องจากไม่มีรูปแบบเอาต์พุตคอนโซล สิ่งที่ฉันมักจะทำคือการแสดงข้อมูลที่ฉันต้องการดูเป็นสี แต่นั่นเป็นวิธีแก้ปัญหาขั้นพื้นฐานและชำนาญ ฉันแน่ใจว่าผู้คนจะคิดวิธีแก้ปัญหาที่ดีกว่า ดังนั้นฉันจะแก้ไขข้อบกพร่องของ shader ได้อย่างไร มีวิธีก้าวผ่านตัว Shader หรือไม่? ฉันสามารถดูการดำเนินการของ shader บนจุดสุดยอด / ดั้งเดิม / ชิ้นส่วนที่เฉพาะเจาะจงได้หรือไม่ (คำถามนี้เกี่ยวกับวิธีการดีบักโค้ด shader โดยเฉพาะคล้ายกับวิธีที่จะดีบั๊กโค้ด "ปกติ" ไม่ใช่เกี่ยวกับการดีบักสิ่งต่าง ๆ เช่นการเปลี่ยนแปลงสถานะ)
45 opengl  glsl  debugging 

4
Gaussian Blur นำมาใช้อย่างไร
ฉันอ่านว่าพร่ามัวทำในกราฟิกแบบเรียลไทม์โดยทำบนแกนเดียวแล้วก็อีกอัน ฉันเคยทำข้อตกลงเล็กน้อยใน 1D มาก่อน แต่ฉันไม่สบายใจกับมันมากนักและไม่รู้ว่าจะทำอย่างไรในกรณีนี้ ทุกคนสามารถอธิบายด้วยวิธีธรรมดาว่าภาพ Gaussian Blur ของภาพเสร็จสิ้นได้อย่างไร ฉันเคยได้ยินเช่นกันว่ารัศมีของเบลอสามารถส่งผลกระทบต่อประสิทธิภาพการทำงาน นั่นเป็นเพราะต้องทำข้อตกลงที่ใหญ่กว่าหรือไม่?

4
อัลเบโด้กับกระจาย
ทุกครั้งที่ฉันคิดว่าฉันเข้าใจความสัมพันธ์ระหว่างคำสองคำนี้ฉันจะได้รับข้อมูลเพิ่มเติมที่ทำให้ฉันสับสน ฉันคิดว่าพวกเขามีความหมายเหมือนกัน แต่ตอนนี้ฉันไม่แน่ใจ อะไรคือความแตกต่างระหว่าง "การกระจาย" และ "อัลเบโด"? พวกเขาใช้คำที่ใช้แทนกันได้หรือพวกเขาเคยหมายถึงสิ่งต่าง ๆ ในทางปฏิบัติหรือไม่?

3
ตัวประมวลผลที่มีประสิทธิภาพสูงกว่าตัวกรองพิกเซลสำหรับการกรองภาพเมื่อใด
การดำเนินการกรองภาพเช่น blurs, SSAO, บลูมและอื่น ๆ มักจะทำโดยใช้ shaders พิกเซลและการดำเนินการ "รวบรวม" โดยที่การเรียกพิกเซล shader แต่ละครั้งจะมีปัญหาจำนวนเนื้อเรียกเพื่อเข้าถึงค่าพิกเซลที่อยู่ใกล้เคียงและคำนวณมูลค่าพิกเซลเดียว ผลลัพธ์. วิธีการนี้มีความไร้ประสิทธิภาพทางทฤษฎีในการดึงข้อมูลซ้ำซ้อนจำนวนมาก: การเรียกใช้ shader ที่อยู่ใกล้เคียงจะดึงข้อความเดียวกันซ้ำหลาย ๆ ข้อความ อีกวิธีที่จะทำคือการคำนวณด้วยเฉดสี สิ่งเหล่านี้มีข้อได้เปรียบที่เป็นไปได้ในการแบ่งปันหน่วยความจำจำนวนเล็กน้อยในกลุ่มการเรียกใช้ shader ตัวอย่างเช่นคุณสามารถให้แต่ละการเรียกใช้หนึ่ง Texel และเก็บไว้ในหน่วยความจำที่ใช้ร่วมกันจากนั้นคำนวณผลลัพธ์จากที่นั่น นี่อาจจะเร็วกว่าหรือไม่ก็ได้ คำถามอยู่ภายใต้สถานการณ์ใด (ถ้าเคย) เป็นวิธีการคำนวณ - shader จริงเร็วกว่าวิธีพิกเซล -shader? มันขึ้นอยู่กับขนาดของเคอร์เนลการดำเนินการกรองแบบไหน ฯลฯ เห็นได้ชัดว่าคำตอบจะแตกต่างจาก GPU รุ่นหนึ่งไปยังอีกรุ่นหนึ่ง แต่ฉันสนใจที่จะได้ยินหากมีแนวโน้มทั่วไป

2
ความแตกต่างแบบกระจายและแบบ specular-based
วิธีการแรเงาแบบคลาสสิคในคอมพิวเตอร์กราฟิกแบบเรียลไทม์คือการรวมกันของคำศัพท์การกระจาย (Lambertian) และคำที่มีความหมายซึ่งอาจเป็นไปได้ว่า Phong หรือ Blinn-Phong ขณะนี้มีแนวโน้มไปสู่การเรนเดอร์เชิงกายภาพดังนั้นโมเดลวัสดุในเครื่องยนต์เช่นFrostbite , Unreal EngineหรือUnity 3D BRDF เหล่านี้มีการเปลี่ยนแปลง ตัวอย่างเช่น (อันที่เป็นสากลในตอนนั้น) Unreal Engine ล่าสุดยังคงใช้การแพร่กระจายของ Lambertian แต่เมื่อใช้ร่วมกับรูปแบบ microfacet ของ Cook-Torrance สำหรับการสะท้อนแบบ specular (โดยเฉพาะการใช้ GGX / Trowbridge-Reitz ) นอกจากนี้ยังมีการใช้ค่า 'Metalness' เพื่อแยกความแตกต่างระหว่างตัวนำและอิเล็กทริก สำหรับ dielectrics การกระจายจะใช้สีโดยใช้อัลเบโดของวัสดุในขณะที่ specular ไม่มีสีเสมอ สำหรับโลหะนั้นไม่ได้ใช้การแพร่กระจายและเทอม specular จะถูกคูณกับอัลเบโดของวัสดุ เกี่ยวกับวัสดุทางกายภาพในโลกแห่งความเป็นจริงการแบ่งแยกอย่างเข้มงวดระหว่างการแพร่กระจายและการแพร่กระจายนั้นมีอยู่หรือไม่และหากเป็นเช่นนั้นมันมาจากที่ไหน? ทำไมสีหนึ่งในขณะที่สีอื่น ๆ ไม่? ทำไมคอนดักเตอร์ถึงประพฤติแตกต่างกัน?

4
มีวัสดุทั่วไปที่ RGB ไม่สามารถนำเสนอได้ดีหรือไม่?
ในกราฟิกเราใช้ RGB และช่องว่างสีอื่น ๆ เพื่อประมาณความยาวคลื่นแสงเต็มรูปแบบ เห็นได้ชัดว่ามันใช้งานได้ดีโดยทั่วไป แต่มีวัตถุ / วัสดุ / ปรากฏการณ์ทั่วไปสิ่งที่คุณอาจพบในชีวิตประจำวันของคุณซึ่งรูปลักษณ์ไม่ได้เป็นตัวแทนที่ดีจากการเรนเดอร์ RGB เนื่องจากมีสเปกตรัมที่ซับซ้อน ? ในขณะที่คำตอบปัจจุบันมุ่งเน้นไปที่สีนอกขอบเขต RGB ที่กำหนดฉันยังสนใจที่จะได้ยินหากมีตัวอย่างที่สีของวัตถุปรากฏเป็น "ผิด" เมื่อแสดงผลใน RGB เนื่องจากการโต้ตอบระหว่าง สเปกตรัมแหล่งกำเนิดแสงและสเปกตรัมการสะท้อนของวัตถุ กล่าวอีกนัยหนึ่งกรณีที่ผู้แสดงสเปกตรัมจะให้ผลลัพธ์ที่ถูกต้องมากขึ้น เครดิต: ฉันชอบคำถามนี้ในเบต้าส่วนตัวก่อนหน้าดังนั้นฉันจึงทำซ้ำได้ที่นี่ ตอนแรกมันถูกนาธานรีด
34 color 

2
การสุ่มตัวอย่างสำคัญคืออะไร
การสุ่มตัวอย่างที่สำคัญคืออะไร? ทุกบทความที่ฉันอ่านเกี่ยวกับมันระบุว่า 'PDF' นั่นคืออะไร จากสิ่งที่ฉันรวบรวมการสุ่มตัวอย่างที่สำคัญคือเทคนิคหนึ่งไปยังพื้นที่ตัวอย่างบนซีกโลกที่มีความสำคัญมากกว่าที่อื่น ๆ ดังนั้นในอุดมคติฉันควรสุ่มตัวอย่างแสงเข้าหาแหล่งกำเนิดแสงเพื่อลดเสียงรบกวนและเพิ่มความเร็ว นอกจากนี้ BRDF บางตัวที่มุมแทะเล็มมีความแตกต่างเล็กน้อยในการคำนวณดังนั้นใช้การสุ่มตัวอย่างที่สำคัญเพื่อหลีกเลี่ยงสิ่งที่ดี? ถ้าฉันต้องใช้การสุ่มตัวอย่างที่สำคัญสำหรับ Cook-Torrance BRDF ฉันจะทำสิ่งนี้ได้อย่างไร

2
แผนภูมิการแมปแนวคิด DirectX / OpenGL (Vulkan)
บ่อยครั้งที่คุณสมบัติฮาร์ดแวร์ที่คล้ายกันถูกเปิดเผยผ่าน DirectX และ OpenGL โดยใช้คำศัพท์ที่แตกต่างกัน ตัวอย่างเช่น: Constant Buffer / Uniform Buffer Object RWBuffer / SSBO ฉันกำลังมองหาแผนภูมิครบถ้วนสมบูรณ์ที่อธิบายคำศัพท์ DirectX ที่ใช้เพื่ออ้างถึงแนวคิด OpenGL ใดและในทางกลับกัน ฉันจะหาทรัพยากรได้จากที่ไหน?
32 api 

2
เรย์มาร์ชนิ่งคืออะไร? การติดตามทรงกลมเป็นสิ่งเดียวกันหรือไม่
การสาธิตของ ShaderToy จำนวนมากแบ่งปันอัลกอริทึม Ray Marching เพื่อแสดงฉาก แต่บ่อยครั้งที่พวกเขาเขียนด้วยสไตล์ที่กะทัดรัดมากและฉันไม่สามารถหาตัวอย่างหรือคำอธิบายที่ตรงไปตรงมาได้ ดังนั้นเรย์มาร์ชนิ่งคืออะไร? ความคิดเห็นบางข้อบ่งชี้ว่าเป็นรูปแบบของ Sphere Tracing อะไรคือข้อดีของการคำนวณของวิธีการดังกล่าวคืออะไร?

2
เหตุใดการติดตาม monte carlo ray จึงทำงานได้ดีกว่าการติดตามการกระจายรังสี
ฉันได้ยินมาว่าคุณภาพของตัวติดตามมอนต์คาร์โลเรย์ (ขึ้นอยู่กับอัลกอริธึมการติดตามเส้นทาง) นั้นสมจริงกว่าเครื่องยนต์แบบกระจาย (สุ่ม) ฉันพยายามที่จะเข้าใจว่าทำไม แต่ฉันเพิ่งจะเริ่ม ในการดำน้ำในหัวข้อนี้และทำความเข้าใจกับพื้นฐานบางคนสามารถชี้แนะทิศทางที่ถูกต้องได้ไหม? ส่วนใดของอัลกอริทึมที่นำไปสู่ผลลัพธ์การแสดงผลที่สมจริงยิ่งขึ้น?

4
การแชร์รหัสระหว่าง GLSL หลายตัว
ฉันมักจะพบว่าตัวเองคัดลอกรหัสวางระหว่างหลายเฉดสี ซึ่งรวมถึงการคำนวณหรือข้อมูลบางอย่างที่ใช้ร่วมกันระหว่างเฉดสีทั้งหมดในไปป์ไลน์เดียวและการคำนวณทั่วไปที่ยอดสุดยอดทั้งหมดของฉันต้องการ (หรือขั้นตอนอื่นใด) แน่นอนว่าเป็นวิธีปฏิบัติที่น่ากลัว: ถ้าฉันต้องการเปลี่ยนรหัสที่ใดก็ได้ฉันต้องตรวจสอบให้แน่ใจว่าฉันเปลี่ยนทุกที่อื่น มีวิธีปฏิบัติที่ดีที่สุดที่ได้รับการยอมรับในการรักษาDRYหรือไม่? ผู้คนแค่เติมไฟล์ร่วมกันเพียงไฟล์เดียวให้กับผู้ที่ต้องการซื้อของพวกเขาทั้งหมดหรือไม่? พวกเขาเขียน preprocessor C-style พื้นฐานของตัวเองซึ่งแยก#includeคำสั่งหรือไม่? หากมีรูปแบบที่ยอมรับในอุตสาหกรรมฉันต้องการติดตามพวกเขา
30 glsl 

1
เสียงต้นฉบับของ Perlin มีความได้เปรียบมากกว่าเสียงของ Simplex หรือไม่
เสียงเพอร์ลินเป็นหนึ่งในฟังก์ชั่นเสียงรบกวนขั้นตอนที่ได้รับความนิยมมากที่สุด Perlin พัฒนาต่อมาเสียง Simplexซึ่งปรับปรุงจากข้อบกพร่องบางประการของเสียง Perlin โดยเฉพาะอย่างยิ่งความไร้ประสิทธิภาพในมิติที่สูงขึ้นและสิ่งประดิษฐ์ทิศทาง (Wikipedia แสดงข้อดีห้าประการของเสียง Simplex) ถึงกระนั้นเสียงของ Perlin ก็ถูกนำมาใช้อย่างกว้างขวาง ฉันสามารถจินตนาการได้ว่าเหตุผลหลักคือเสียง Simplex นั้นยากต่อการเข้าใจมากขึ้น แต่ตอนนี้ควรมีการใช้งานที่เพียงพอเพื่อให้คุณไม่ต้องนำมาใช้ใหม่ด้วยตนเอง เสียงของ Perlin มีข้อดีมากกว่าเสียงของ Simplex หรือไม่? เมื่อเลือกฟังก์ชั่นจุดรบกวนฉันจะเลือก Perlin แทน Simplex ได้หรือไม่

2
พื้นผิวเสมือนจริงจะมีประสิทธิภาพได้อย่างไร
สำหรับการอ้างอิงสิ่งที่ฉันหมายถึงคือ "ชื่อสามัญ" สำหรับเทคนิคแรก (ฉันเชื่อ) ที่นำมาใช้กับเทคโนโลยีMegaTextureของ idTech 5 ดูวิดีโอที่นี่เพื่อดูว่ามันทำงานอย่างไร เมื่อไม่นานมานี้ฉันได้อ่านบทความและสิ่งตีพิมพ์ต่าง ๆ และสิ่งที่ฉันไม่เข้าใจคือมันมีประสิทธิภาพได้อย่างไร ไม่ต้องการการคำนวณใหม่ของพิกัด UV จากช่องว่าง "หน้าพื้นผิวส่วนกลาง" ไปยังพิกัดพื้นผิวเสมือนจริงหรือไม่ และวิธีที่ไม่เหนี่ยวรั้งความพยายามมากที่สุดในการผสมเรขาคณิตชุด? จะอนุญาตให้ซูมเข้าโดยพลการได้อย่างไร? ในบางจุดจะต้องใช้รูปหลายเหลี่ยมแบบแบ่งย่อยหรือไม่ มีอะไรมากมายที่ฉันไม่เข้าใจและฉันไม่สามารถหาแหล่งข้อมูลที่เข้าถึงได้ง่ายในหัวข้อนี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.