คำถามติดแท็ก shaders

โปรแกรมคอมพิวเตอร์ที่ทำงานบนฮาร์ดแวร์กราฟิกและให้การควบคุมระดับสูงว่าฉากถูกเรนเดอร์อย่างไร

3
สำหรับการเรนเดอร์ voxel จะมีประสิทธิภาพมากขึ้น: VBO ที่สร้างไว้ล่วงหน้าหรือ shader เรขาคณิต
ด้วยอาร์เรย์ voxel ที่ค่อนข้างคงที่สิ่งที่มีประสิทธิภาพมากขึ้น: การใช้ CPU เพื่อสร้าง VBO ล่วงหน้าเพื่อแสดงใบหน้าของ voxel (โดยไม่สนใจรูปแบบการแสดงผลขั้นสูงเช่นการเดินขบวนลูกบาศก์ในตอนนี้) หรือการใช้เรขาคณิต shader บน GPU เพื่อสร้าง เผชิญกับการบิน? ฉันไม่ได้กังวลเกี่ยวกับการอัปเดตการเปลี่ยนแปลง voxels แต่แน่นอนว่าเป็นประโยชน์ของรุ่น GPU เนื่องจากคุณไม่จำเป็นต้องสร้าง VBO ใหม่ นอกจากนี้วิธีการ GS ยังให้ความรู้สึกทันสมัยยิ่งขึ้น :) ในทางกลับกันฉันไม่ได้ดูรายละเอียดว่า GS ใช้งานได้จริงกับท่อส่งแรสเตอร์ใน GPU ที่ทันสมัยได้อย่างไร มันส่งออกจุดยอดในกระแสแคชหรือเป็นจุดยอดที่เขียนไปยังหน่วยความจำ GPU ปกติในระหว่าง? ถ้าเป็นอย่างหลังการสร้างแบบทันทีก็สามารถลดแบนด์วิดท์และพลังการประมวลผลจากส่วนที่เหลือของงาน GPU ที่ฉันเดาแล้วมันจะมีประโยชน์มากขึ้นในการทำบนซีพียู ..

2
ฉันจะใช้เอฟเฟกต์หญ้าตัดสั้นได้อย่างไร
ฉันได้ดูภาพหน้าจอจากเกมเช่น Rocket League และ FIFA: และฉันเริ่มสงสัยว่าใครจะได้รับเอฟเฟกต์หญ้าสั้น มันเป็น shader หรือไม่? มันเป็นรูปทรงเรขาคณิตที่เกิดขึ้นจริงเหรอ? หรือเพียงแค่คณะสี่คน หากใครสามารถชี้นำฉันในทิศทางที่จะชื่นชมอย่างมาก

3
ทำไม H (blinn) จึงใช้แทน R (phong) ในการแรเงาแบบ specular?
ฉันไม่สามารถหาเหตุผลที่ดีสำหรับสิ่งนี้ได้ทุกที่ เวกเตอร์สะท้อนที่ใช้ในพงษ์มีพื้นฐานง่าย ๆ ในวิชาฟิสิกส์ แต่เวกเตอร์ครึ่งหนึ่งที่ใช้ในรูปแบบบลินน์นั้นดูเหมือนจะไม่มีเหตุผลที่เป็นเหตุเป็นผล และยังมีการใช้งานในทุกสิ่งที่เรียกว่าฟังก์ชั่นการแรเงาตามร่างกาย หากมีพื้นฐานทางกายภาพที่ดีสำหรับมันฉันอยากจะรู้ สิ่งที่ฉันสามารถค้นหาได้มีสาเหตุบางประการ: มันเร็วกว่า - มีข้อมูลที่หลากหลายเกี่ยวกับเรื่องนี้ แต่ถึงอย่างนั้นมันก็จะเป็นเหตุผลที่ดี ... ในปี 1998 มันจัดการมุมที่สูงกว่า 90 องศาได้ดีกว่า - เท่าที่ฉันสามารถบอกเหตุผลเดียวสำหรับเรื่องนี้ก็เพราะว่าคำว่าพงษ์ถูกใช้อย่างไม่ถูกต้อง ผลคูณของการสะท้อนและมุมมองให้มุมระหว่าง -1 ถึง +1 โดยปกติมุมนี้จะถูกจับเป็น 0 ถึง 1 นี่คือสาเหตุโดยตรงของปัญหา 90 องศา ปรับมุมให้เป็นมาตรฐานอีกครั้งแทนที่จะยึดไว้และคุณจะได้รับการครอบคลุม 180 องศาอย่างเต็มที่ ฉันปฏิเสธที่จะเชื่อว่าการทำงานแบบ x * 0.5 + 0.5 ที่เรียบง่ายทำให้โลกกราฟิกเป็นเวลา 40 ปี มันจัดการกับขอบได้ดีขึ้น - "ปัญหา" ของขอบยังมีอยู่ในโซลูชัน blinn เพียงเล็กน้อยเท่านั้น สาเหตุหลักคือการจำลองแสงของพื้นที่ในเทอร์มิเนเตอร์อย่างไม่เหมาะสมซึ่งควรมีความสำคัญสำหรับส่วนใดส่วนหนึ่งของร่างกาย …

2
ฉันจะสูญเสียหรือเพิ่มประสิทธิภาพในการทิ้งพิกเซลแม้ว่าฉันจะไม่ใช้การทดสอบเชิงลึกหรือไม่?
เมื่อฉันค้นหาคำสั่งยกเลิกครั้งแรกฉันพบผู้เชี่ยวชาญที่บอกว่าใช้การทิ้งจะส่งผลให้ประสิทธิภาพลดลง พวกเขากล่าวว่าการทิ้งพิกเซลจะทำลายความสามารถของ GPU ในการใช้ zBuffer อย่างถูกต้องเพราะ GPU จะต้องเรียกใช้ Fragment shader ก่อนเพื่อให้วัตถุทั้งคู่ตรวจสอบว่ามีการทิ้งเศษชิ้นส่วนที่ใกล้กับกล้องหรือไม่ สำหรับเกม 2D ที่ฉันกำลังทำงานอยู่ฉันได้ปิดการใช้งานทั้งการทดสอบเชิงลึกและการเขียนเชิงลึก ฉันกำลังวาดวัตถุทั้งหมดที่เรียงตามความลึกของพวกเขาและนั่นคือทั้งหมดที่ GPU ไม่จำเป็นต้องทำสิ่งที่แปลกใหม่ ตอนนี้ฉันสงสัยว่ามันยังคงไม่ดีถ้าฉันทิ้งพิกเซลในส่วนของฉัน?

4
วิธีที่เร็วที่สุดในการวาดล่ามใน OpenGL ES?
ฉันใช้ OpenGL ES 2.0 ฉันมีกลุ่มที่จะต้องวาดรูปฉันชอบที่จะสามารถส่งผ่านเพียง 4 จุดต่อรูปสี่เหลี่ยมราวกับว่าฉันกำลังใช้ GL_QUADS แต่โดยทั่วไปฉันต้องการทราบวิธีที่ดีที่สุดในการวาดรูป พวงของคณะสี่คนแยกกัน จนถึงสิ่งที่ฉันได้พบว่าฉันสามารถทำได้: -GL_TRIANGLES (6 ยอดต่อหนึ่งรูปสี่เหลี่ยม) - สร้าง GL_TRIANGLE_STRIP (6 จุดต่อรูปสี่เหลี่ยม) ความเป็นไปได้ที่ฉันได้พบ: -GL_TRIANGLE_STRIPS ด้วยค่าดัชนีพิเศษที่รีเซ็ตแถบสี่เหลี่ยม (ซึ่งหมายถึง 5 ดัชนีต่อหนึ่งรูปสี่เหลี่ยม แต่ฉันไม่คิดว่าเป็นไปได้คือ OpenGL ES 2.0)
22 opengl  3d  iphone  android  shaders 

1
ฮัลล์โดเมนและรูปทรงเรขาคณิตใช้สำหรับทำอะไร?
ฉันทำส่วนแบ่งการเขียนโปรแกรมเกมสามมิติสำหรับนายจ้าง (อดีต) ของฉันแล้วและในเอ็นจิ้นกำหนดเองของฉันสำหรับเกมอินดี้ของฉันเอง เริ่มแรกฉันเริ่มด้วย Direct3D 9 และ D3DX9 ซึ่งทำทุกอย่างให้ฉันและไม่ต้องการให้ฉันคิดในแง่ของความแตกต่างทั้งหมด หลังจากนั้นฉันเขียน Direct3D 9 shader ครั้งแรกของฉัน แต่ส่วนใหญ่ใช้ shader ง่าย ๆ สำหรับทุกสิ่งที่ฉันทำ ในการทำซ้ำเกมเอ็นจิ้นล่าสุดของฉันฉันย้ายไปที่ Direct3D 11 และด้วยการที่ฉันสร้างเฉดสีมากมาย ฉันทำสกิน GPU, อนุภาคที่คำนวณจาก GPU, แสงจำนวนมากและเอฟเฟกต์การประมวลผลทั้งหมดใน GPU สิ่งที่เจ๋งจริงๆ จนถึงตอนนี้ฉันเพิ่งใช้จุดสุดยอดและพิกเซล / ชิ้นส่วน แม้ว่าจะยังมีอีกหลายสิ่งที่ฉันยังไม่ได้ทำ แต่ฉันเชื่อว่าฉันมีความรู้ที่ดีเกี่ยวกับสิ่งที่ยอดและพิกเซล / ชิ้นส่วนเงาทำและวิธีการทั้งหมดที่เหมาะกับไปป์ไลน์ 3D ทั้งหมด ติดตามความคืบหน้าของการพัฒนาเมื่อเร็ว ๆ นี้ฉันเริ่มให้ความสนใจกับขั้นตอนการสร้างภาพที่ใหม่กว่า นั่นคือ Geometry Shader และใหม่กว่าคือ Hull และ Domain shaders …

3
ฉันควรใช้ shaders ที่ใช้งานอยู่ในเฟรมเดียวในเกมเดียว 5 ขึ้นไปเช่น 100
ในช่วงเวลาเดียวกันในหนึ่งฉากมีเกมที่ทันสมัย ฉันรู้ว่ามีการใช้เฉดสีหลายแบบโดยมีเกมสลับระหว่างพวกเขาในแต่ละเฟรมและเป็นเรื่องธรรมดาที่จะวาดวัตถุผ่าน shader: วาดวัตถุทั้งหมดด้วย shader หนึ่ง เปลี่ยนจาก shader หนึ่งเป็น shader สอง วาดวัตถุทั้งหมดด้วย shader สอง ถึงกระนั้นฉันก็รู้ว่ามันไม่ง่ายโดยเฉพาะอย่างยิ่งกับเอฟเฟ็กต์เช่นเอฟเฟ็กต์แสงสำหรับฉากทั้งหมดการเรนเดอร์ไปสู่พื้นผิว ฯลฯ แต่ฉันคิดว่าเราสามารถสันนิษฐานได้ว่า วิธีการ "กลุ่มโดย shader" เป็นสิ่งที่ดีเพราะการเปลี่ยนเฉดสีเป็นการดำเนินการที่มีราคาแพง จากด้านหนึ่งคุณไม่สามารถมีเฉดสีมากเกินไปเพราะคุณต้องการทำให้ฉากนั้นรวดเร็ว ในทางกลับกันคุณจำเป็นต้องมีเฉดสีที่แตกต่างกันมากมาย (หรือ uber-shader ที่มีกิ่ง - คล้ายกันมาก) สำหรับผิวหนังโลหะน้ำ ฯลฯ เกมประเภทนักสืบสามมิติ (และอันใด) ที่แตกต่างกันทางทฤษฎีเกมสมัยใหม่นักสืบสามมิติสำหรับพีซี (DirectX 11 ถ้ามีความสำคัญ) จะใช้งานอย่างไร มันจะเป็น 5, 20 หรือมากกว่าเช่น 100 shaders ที่ใช้งานอยู่นับเฉพาะการใช้งานที่บางเฟรม ""? ฉันรู้ว่ามันไม่ใช่หมายเลขหนึ่ง แต่ฉันสงสัยว่าขนาดและปัจจัยใดที่มีความสำคัญในการพิจารณาสำหรับเกมพีซี ในเกมตัวอย่างของฉันฉันจะใช้ประมาณ 9-11 ต่อเฟรม …

2
เราจะสร้างเอฟเฟกต์“ การมองเห็นอินฟราเรด” ที่สมจริงได้อย่างไร?
คุณจะสร้างเอฟเฟกต์การมองเห็นภาพอินฟราเรดแบบสมจริงด้วยเฉดสีอย่างไร โดยมีเหตุผลที่ฉันหนึ่งหมายถึงการที่มีลักษณะเหมือนจริงเช่นตัวอย่างนี้ ฉันมีความคิดเกี่ยวกับการสร้างพื้นผิวเพื่อกำหนดปริมาณความร้อนของวัสดุที่ปล่อยออกมาจากนั้นกำหนดโดยใช้จุดผลิตภัณฑ์ของเวกเตอร์ปกติและดูเวกเตอร์ว่าความร้อนนั้นมาถึงตัวแสดงเท่าไหร่ แต่ฉันไม่แน่ใจด้วยซ้ำ แม้จะได้ผลดังนั้นฉันต้องการตรวจสอบว่ามีวิธีการที่ดีกว่าก่อนที่จะเริ่มใช้บางสิ่งที่อาจผิดทั้งหมดหรือไม่
20 shaders 

7
หนังสือ Shader ที่ทันสมัย? [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน3 ปีที่ผ่านมา ฉันสนใจที่จะเรียนรู้เกี่ยวกับ Shaders: พวกเขาจะใช้อะไรเมื่อไหร่และจะใช้อะไรและจะใช้อย่างไร (โดยเฉพาะฉันสนใจผลของ Water and Bloom แต่ฉันรู้ใกล้เคียงกับ 0 เกี่ยวกับ Shaders ดังนั้นฉันต้องมีการแนะนำทั่วไป) ฉันเห็นหนังสือมากมายที่มีอายุสองสามปีดังนั้นฉันจึงไม่รู้ว่าพวกเขายังใช้อยู่หรือไม่ ฉันกำลังกำหนดเป้าหมาย XNA 4.0 ในขณะนี้ (ซึ่งฉันเชื่อว่าหมายถึง HLSL Shader สำหรับ Shader Model 4.0) แต่สิ่งใดก็ตามที่เป็นเป้าหมายของ DirectX 11 และ OpenGL 4 จะเป็นประโยชน์จริง ๆ ฉันคิดว่า

1
ฉันจะแสดงเกม 3 มิติของฉันในรูปแบบ ASCII ได้อย่างไร
ฉันพยายามสร้างไข่อีสเตอร์สำหรับเกมสามมิติใน Unity3D ฉันต้องการทำให้เกมของฉันกลายเป็น ASCII ได้ไม่นาน ความคิดแรกของฉันคือการสร้าง shader ให้ทำ แต่ฉันไม่แน่ใจว่ามันเป็นวิธีที่ถูกต้องหรือไม่
19 unity  shaders 

1
แสดงผลน้ำมัน / น้ำเสีย?
ตัวช่วยสร้าง shader ใด ๆ ออกไปมีความคิดว่าจะทำเอฟเฟกต์น้ำที่มันหรือมีมลภาวะได้อย่างไรเช่นนี้: ตามหลักการแล้วน้ำจะไม่เป็นน้ำมันอย่างสม่ำเสมอ แต่สามารถสร้างน้ำมันได้จากแหล่งกำเนิดบางแหล่ง (เช่นท่อระบายน้ำเสียจากโรงงานเคมี) จากนั้นกระจายไปทั่วร่างกายน้ำ ความคิดของฉันสำหรับส่วนนี้คือการเก็บ "แผนที่น้ำมัน" เป็นพื้นผิว 2D ที่กำหนดความหนาแน่นของน้ำมันในแต่ละจุดบนผิวน้ำ มันจะกระจายและเคลื่อนที่ตามธรรมชาติด้วย water vel; ocity ณ จุดนั้น (ฉันมีการจำลองอนุภาคคลื่นสำหรับคลื่นแบบไดนามิกและฉันกำลังทำสิ่งที่คล้ายกับโฟมบนผิวน้ำ) อย่างไรก็ตามฉันไม่แน่ใจว่าร่างกายจะถูกต้องอย่างไรเนื่องจากน้ำมันอาจไม่เคลื่อนที่ด้วยความเร็วเท่ากับน้ำ และฉันก็ไม่รู้ว่าจะทำสี trippy เหล่านั้นได้อย่างไร :-) คิด?

1
การออกแบบเครื่องมือเกม - Ubershader - การออกแบบการจัดการ Shader [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ฉันต้องการใช้ระบบ Ubershader ที่ยืดหยุ่นด้วยการแรเงาที่เลื่อนออกไป ความคิดปัจจุบันของฉันคือการสร้างความแตกต่างจากโมดูลซึ่งจัดการกับคุณสมบัติบางอย่างเช่น FlatTexture, BumpTexture, Displacement Mapping เป็นต้นนอกจากนี้ยังมีโมดูลขนาดเล็กที่ถอดรหัสสีทำการแมปโทนและอื่น ๆ ซึ่งมีข้อดีที่ฉันสามารถ แทนที่โมดูลบางประเภทหาก GPU ไม่รองรับดังนั้นฉันสามารถปรับให้เข้ากับความสามารถของ GPU ในปัจจุบัน ฉันไม่แน่ใจว่าการออกแบบนี้ดีหรือไม่ ฉันกลัวว่าฉันจะเลือกได้ไม่ดีตอนนี้และจ่ายเงินในภายหลัง คำถามของฉันคือฉันจะหาแหล่งข้อมูลตัวอย่างบทความเกี่ยวกับวิธีการนำระบบการจัดการ shader ไปใช้ได้อย่างมีประสิทธิภาพได้อย่างไร ไม่มีใครรู้ว่าเอ็นจิ้นเกมใหญ่ทำเช่นนี้ได้อย่างไร

4
ฉันจะได้รับเอฟเฟกต์แสง 2D ที่ราบรื่นได้อย่างไร
ฉันกำลังสร้างเกมตัวต่อแบบสองมิติใน XNA ปัจจุบันฟ้าผ่าของฉันดูเหมือนว่านี้ ฉันจะทำให้มันเป็นแบบนี้ได้อย่างไร แทนที่จะบล็อกแต่ละบล็อกมีสีของตัวเอง แต่ก็มีการซ้อนทับที่ราบรื่น ฉันสมมติว่ามี shader อยู่บ้างและส่งค่าแสงสำหรับกระเบื้องโดยรอบไปยัง shader แต่ฉันเป็นมือใหม่ที่มีร่มเงาดังนั้นฉันไม่แน่ใจ แสงปัจจุบันของฉันคำนวณแสงจากนั้นส่งผ่านไปยัง a SpriteBatchและวาดด้วยพารามิเตอร์ tint แผ่นกระเบื้องแต่ละอันนั้นมีการColorคำนวณก่อนที่จะวาดในอัลกอริทึมการส่องสว่างของฉันซึ่งใช้สำหรับโทนสี นี่คือตัวอย่างเกี่ยวกับวิธีที่ฉันคำนวณแสงในปัจจุบัน (ฉันทำสิ่งนี้จากซ้ายขวาและล่างเช่นกัน แต่ฉันเหนื่อยมากที่ทำเฟรมนี้เป็นเฟรม ... ) ที่จริงแล้วการได้รับและวาดแสงจนถึงตอนนี้ก็ไม่มีปัญหา ! ฉันได้เห็นบทเรียนมากมายเกี่ยวกับหมอกแห่งสงครามและการใช้การซ้อนทับแบบวงกลมลาดเพื่อสร้างสายฟ้าที่ราบรื่น แต่ฉันมีวิธีที่ดีในการกำหนดค่าสายฟ้าผ่าให้กับกระเบื้องแต่ละอันแล้ว ดังนั้นเพื่อทบทวน คำนวณแสงสว่าง (เสร็จสิ้น) วาดไทล์ (เสร็จแล้วฉันรู้ว่าฉันจะต้องแก้ไขมันสำหรับ shader) Shade tiles (วิธีการผ่านค่าและใช้ "การไล่ระดับสี)

3
ทำไม pixel shaders ไม่ให้เราอ่านโดยตรงจาก framebuffer หรือ buffer ความลึก?
ให้ฉันลอง framebuffer หรือ deepbuffer ใน pixel shader เป็นคุณสมบัติที่มีประโยชน์มาก แม้เพียงแค่สามารถรู้ความลึกหรือสีของสิ่งใดก็ตามที่อยู่ด้านหลังพิกเซลปัจจุบันจะเป็นประโยชน์ ทำไมทั้ง OpenGL และ DirectX ไม่ให้ฉันทำเช่นนี้? ฉันคาดหวังว่าจะมีข้อ จำกัด ด้านฮาร์ดแวร์บางอย่าง แต่การผสมสีด้วยอัลฟาใช้สีใน framebuffer สำหรับการคำนวณแบบผสมผสานและการทดสอบ Z จะทดสอบบัฟเฟอร์ความลึกที่ตำแหน่งปัจจุบัน ทำไมไม่เพียงแค่เปิดเผยค่าเหล่านี้กับเราโดยตรง ฉันหวังว่าจะเห็นสิ่งนี้ในอนาคตหรือไม่
18 opengl  3d  directx  shaders 

2
ฉันจะดีบักโปรแกรม shader ได้อย่างไร
ฉันอยู่ระหว่างการแก้ไขข้อบกพร่องของจุดยอด GLSL และฉันไม่สามารถสั่นคลอนความรู้สึกที่ฉันทำผิด โดยทั่วไปฉันมีสองกลยุทธ์ในการชดเชยการขาดการติดตาม ฉันใส่ค่าลงในสีที่ดีบั๊กซึ่งแตกต่างกันที่ฉันส่งไปยังส่วนที่แตกแล้วลองตีความสี ฉันเปลี่ยนรหัสจุดสุดยอดและดูว่าเกิดอะไรขึ้น ฉันคิดว่าในอุดมคติฉันสามารถชดเชยการขาดการติดตามได้โดยการเขียนค่าลงบนพื้นผิวอย่างใดอย่างหนึ่งอ่านพื้นผิวจาก GPU และพิมพ์ค่าที่ยัดเข้าไปในพื้นผิว ฉันเดาว่าอาจจะมีวิธีที่ดีกว่า ข้อเสนอแนะใด ๆ

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