บทนำ
- พื้นผิว XOR เป็นพื้นผิวที่สร้างได้อย่างง่ายดาย จึงมีประโยชน์สำหรับการทดสอบ
- ในเดโมหรือเกมมีการใช้งานบ่อย จึงไม่ค่อยแนะนำ
- มีประโยชน์เมื่ออยากทดสอบ texture mapper อย่างรวดเร็ว
พื้นผิว XOR
- พื้นผิว XOR ถูกสร้างขึ้นโดยนำพิกัด x และ y ของพิกเซลปัจจุบันมาใช้การดำเนินการ XOR
- ใน C++ สามารถนำไปใช้ได้ด้วยโอเปอเรเตอร์
^
- ขนาดพื้นผิวควรเป็นเลขยกกำลังของ 2 มิฉะนั้นคุณภาพจะลดลง
- ค่าสีอยู่ในช่วง 0 ถึง 255 และถ้าขนาดพื้นผิวเล็กกว่า 256 ก็จะมืดลง
- หากขนาดใหญ่กว่า 256 ต้องจำกัดค่าสีไว้ที่ 256
สี
- สามารถลองทำพื้นผิว XOR ได้หลายสีโดยกำหนดค่า R, G, B ให้ต่างกัน
- สามารถใช้ค่า XOR เป็นค่าสี hue ได้เช่นกัน โดยใช้ฟังก์ชัน HSVtoRGB
AND และ OR
- โอเปอเรเตอร์ AND และ OR ก็สร้างพื้นผิวลักษณะคล้ายกันได้
- โอเปอเรเตอร์ AND จะคืนค่า 1 ก็ต่อเมื่อทั้งสองบิตเป็น 1
- โอเปอเรเตอร์ OR จะคืนค่า 1 เมื่อมีบิตใดบิตหนึ่งเป็น 1
- พื้นผิว AND จะมืด ส่วนพื้นผิว OR จะสว่าง
บทสรุป
- พื้นผิว XOR มีประโยชน์สำหรับการทดสอบ texture renderer แต่ไม่เหมาะกับงานศิลปะหรือเกม
- สามารถใช้เป็นพื้นผิว 3D (
x ^ y ^ z) เพื่อทดสอบตัวเรนเดอร์พื้นผิวดาวเคราะห์ได้
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ผู้ใช้คนหนึ่งสร้างโปรแกรมสำหรับสร้างภาพโดยใช้สี 1 บิตด้วยภาษาแอสเซมบลี x86 โปรแกรมนี้ใช้
parity(x ^ y)แทนx ^ yและกำหนดสีต่างกันตามกรณีที่มีจำนวนบิต 1 เป็นจำนวนคู่หรือไม่ ส่งผลให้ได้เอฟเฟกต์การปูกระเบื้องที่เกือบซ้ำแต่ไม่ซ้ำกันอย่างสมบูรณ์ โปรแกรมถูกเขียนด้วย fasm ในปี 2019 และสร้างไฟล์ XPM2ตอนเรียนมัธยมต้น ผู้ใช้คนหนึ่งทำได้แค่แอปพลิเคชัน CLI แบบง่าย ๆ แต่ได้เรียนรู้วิธีเปิดหน้าต่างและวาดกราฟิกผ่าน Lode's Computer Graphics Tutorial ทำให้สามารถสร้างเกมเรโทรอย่าง Pacman, Snake และ Space Invaders ขึ้นมาใหม่ได้ และเว็บไซต์นี้ก็ช่วยให้เริ่มต้นเส้นทางอาชีพด้านการพัฒนาซอฟต์แวร์ได้ตั้งแต่เนิ่น ๆ
เอฟเฟกต์คล้ายกันที่ทำให้เคลื่อนไหวได้ด้วยฟังก์ชันอย่าง
color = (y == (x ^ t))เรียกว่า "munching squares" ซึ่งถูกเขียนขึ้นสำหรับ PDP-1 ตั้งแต่ต้นทศวรรษ 1960 และมีคนเคยเห็นการสาธิตบน PDP-1 ของ Computer History Museum จอแสดงผลของ PDP-1 วาดได้เฉพาะจุดและไม่ได้ใช้บิตแมปเฟรมบัฟเฟอร์ แต่ใช้ประโยชน์จากการเรืองแสงค้างของฟอสเฟอร์บนหน้าจอเพื่อสร้าง XOR textureมีความเห็นว่ามันชวนให้นึกถึง Hamming distance texture ผู้ใช้คนหนึ่งนำ texture นี้ไปทำเป็นผ้าควิลต์ และใช้สีรุ้งแขวนเป็นของตกแต่งบนผนัง
มีการแชร์ข้อเท็จจริงน่าสนใจว่าแต่ละจุดของ XOR texture คือจำนวนเต็มที่น้อยที่สุดซึ่งไม่ปรากฏอยู่ด้านบนหรือด้านซ้ายของจุดนั้น
เว็บไซต์ชื่อ Dwitter เป็นแพลตฟอร์มสำหรับตัวอย่าง JavaScript แบบบรรทัดเดียวที่ใช้ canvas โดยผู้ใช้สามารถแชร์ผลงานที่จำกัดไว้ที่ 140 ไบต์ได้
มีการแชร์วิธีแสดงแพตเทิร์นนี้ด้วยภาษา J และสามารถลองดูได้ใน playground ของซอฟต์แวร์ J
แม้เวลาจะผ่านไป 20 ปี ก็ยังมีข้อมูลที่เป็นประโยชน์อยู่มาก และมีคนแนะนำว่าเนื้อหานี้อาจเป็นประโยชน์โดยเฉพาะเวลาทำงานกับ shader
มีคนบอกว่าตนได้เรียนรู้ ray tracing ผ่านเว็บไซต์ของ Lode และยังคงชอบเลย์เอาต์ของเว็บไซต์นี้อยู่จนถึงทุกวันนี้