Announcement

Collapse
No announcement yet.

Pixel Shader คือไรอะครับ

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Pixel Shader คือไรอะครับ

    ระหว่าง Pixel Shader 2.0 กับ Pixel Shader 3.0

    ของ VGA Onboard
    อันไหนดีกว่ากัน เพราะไรเหรอครับ

  • #2
    Vertex Shader Processor คืออะไรขอท้าวความกันสักนิดกับคำว่า Vertex คืออะไร โดยทั่วไปแล้วในเกมสามมิตินั้น ในฉากแต่ละฉากที่ประกอบไปด้วยสิ่งต่างๆ ไม่ว่าจะเป็นต้นไม้ ก้อนหิน หรืออะไรทุกๆอย่างที่ปรากฎอยู่ภายในฉาก จะเกิดขึ้นจากถาพสามเหลี่ยมหลายๆภาพมารวมกันเป็นพื้นผิว และคำว่า Vertex ก็คือจุดยอดของสามเหลี่ยมแต่ละชิ้นนั่นเอง และจุดหลายๆจุดเหล่านี้เองที่เป็นข้อมูลสำคัญให้กับคอมพิวเตอร์ โดยที่ในจุดแต่ละจุดนั้นจะมีข้อมูลของตัวเองในลักษณะตำแหน่งของตัวเอง คือจะมีข้อมูลในรูปของแนวแกน คือ X , Y , Z และ W นอกจากข้อมูลทางด้านตำแหน่งของตัวเองแล้วยังจะประกอบไปด้วยข้อมูลของสีไปอีกด้วย เพื่อให้คอมพิวเตอร์ของเราทราบได้ว่าในแต่ละตำแหน่งของจุดนั้นประกอบไปด้วยสีอะไรบ้าง โดยที่ข้อมูลของสีนั้นก็จะถูกเก็บไว้ในรูปของ RGBA ( R= Red , G = Green , B = Blue , A = Alpha ) นอกจากข้อมูลเหล่านี้แล้วนั้น ยังจะต้องมีข้อมูลทางด้าน Texture หรือข้อมูลเกี่ยวกับพื้นผิวของแต่ละ Vertex อีกด้วยเพื่อให้ภาพสามมิติเหล่านั้นสมบูรณ์ขึ้นมาได้ ข้อมูลทางด้านพื้นผิวเหล่านี้อย่างเช่น ผิวหนังมนุษย์ ยาง สนิม เปลือกไม้เป็นต้น และเมื่อมีพื้นผิวแล้วในความเป็นจริงของพื้นผิวก็ยังต้องประกอบไปด้วยแสงเงาอีกเช่นกัน ตรงจุดนี้จะเห็นได้ว่าในแต่ละ Vextex นั้นจะประกอบไปด้วยข้อมูลมากมายที่จะต้องทำการประมวลผล เท่านั้นยังไม่พอในเกมสามมิตินั้นจะยังมีการเคลื่อนไหวของตัวละคร จึงทำให้พื้นผิวเหล่านี้เปลี่ยนไปตลอดเวลา เราจะเรียกอาการนี้ว่า Transform ถึงเวลานี้ก็หมดหน้าที่ของ Vertex Shader Processor จากนั้นก็จะส่งข้อมูลทั้งหมดเหล่านี้ที่เกิดขึ้นไปสู่ Pixel Shader Engine ซึ่ง Pixel Shader Engine นั้นก็จะทำหน้าที่แปลงสัญญาณข้อมูลที่ได้รับมาจาก Vertex Shader ที่เดิมนั้นจะมาในรูปของข้อมูลสามมิติ X , Y , Z แต่ในความเป็นจริงแล้วนั้นจอมอนิเตอร์ของเรานั้นเป็นเพียงจอแบบสองมิติ คือมีเพียงแนงแกน X และ Y เท่านั้น ดังนั้นหน้าที่หลักของ Pixel Shader คือการเปลี่ยนสัญญาณจาก X, Y , Z ให้มาอยู่ในรูปของ X และ Y โดยการนำข้อมูลทั้งหมดมาเรียงกันบน Pixel และทำการใส่เอกเฟกสืให้กับภาพที่ปรากฏขึ้น แต่ก่อนที่จะมีการใส่สีสันและเอกเฟกส์ให้กับภาพนั้น Pixel Shader จะต้องทำการลบข้อมูลที่ไม่จำเป็นออก คือข้อมูลที่มองไม่เห็นในขณะที่แสดงภาพจริงบนมอนิเตอร์ หรือพูดง่ายๆว่าสิ่งของที่โดนบังภายในภาพ จากนั้นก็จะนำข้อมูลเหล่านั้นมาเรียงบนระนาบใน pixel ต่างๆ แล้วใส่แสง สี พื้นผิวลงบนจุด หรือ Pixel ให้กับแต่ละจุด โดยแสงสีที่แตกต่างกันออกไปของแต่ละ Pixel ทำให้เรามองเห็นภาพที่ปรากฎจริงนั้นเป็นภาพสามมิติ ซึ่งจริงๆแล้วมันก็คือภาพเสมือนสามมิติ Virtual 3D นั่นเอง

    Comment


    • #3
      Originally posted by Hangger View Post
      Vertex Shader Processor คืออะไรขอท้าวความกันสักนิดกับคำว่า Vertex คืออะไร โดยทั่วไปแล้วในเกมสามมิตินั้น ในฉากแต่ละฉากที่ประกอบไปด้วยสิ่งต่างๆ ไม่ว่าจะเป็นต้นไม้ ก้อนหิน หรืออะไรทุกๆอย่างที่ปรากฎอยู่ภายในฉาก จะเกิดขึ้นจากถาพสามเหลี่ยมหลายๆภาพมารวมกันเป็นพื้นผิว และคำว่า Vertex ก็คือจุดยอดของสามเหลี่ยมแต่ละชิ้นนั่นเอง และจุดหลายๆจุดเหล่านี้เองที่เป็นข้อมูลสำคัญให้กับคอมพิวเตอร์ โดยที่ในจุดแต่ละจุดนั้นจะมีข้อมูลของตัวเองในลักษณะตำแหน่งของตัวเอง คือจะมีข้อมูลในรูปของแนวแกน คือ X , Y , Z และ W นอกจากข้อมูลทางด้านตำแหน่งของตัวเองแล้วยังจะประกอบไปด้วยข้อมูลของสีไปอีกด้วย เพื่อให้คอมพิวเตอร์ของเราทราบได้ว่าในแต่ละตำแหน่งของจุดนั้นประกอบไปด้วยสีอะไรบ้าง โดยที่ข้อมูลของสีนั้นก็จะถูกเก็บไว้ในรูปของ RGBA ( R= Red , G = Green , B = Blue , A = Alpha ) นอกจากข้อมูลเหล่านี้แล้วนั้น ยังจะต้องมีข้อมูลทางด้าน Texture หรือข้อมูลเกี่ยวกับพื้นผิวของแต่ละ Vertex อีกด้วยเพื่อให้ภาพสามมิติเหล่านั้นสมบูรณ์ขึ้นมาได้ ข้อมูลทางด้านพื้นผิวเหล่านี้อย่างเช่น ผิวหนังมนุษย์ ยาง สนิม เปลือกไม้เป็นต้น และเมื่อมีพื้นผิวแล้วในความเป็นจริงของพื้นผิวก็ยังต้องประกอบไปด้วยแสงเงาอีกเช่นกัน ตรงจุดนี้จะเห็นได้ว่าในแต่ละ Vextex นั้นจะประกอบไปด้วยข้อมูลมากมายที่จะต้องทำการประมวลผล เท่านั้นยังไม่พอในเกมสามมิตินั้นจะยังมีการเคลื่อนไหวของตัวละคร จึงทำให้พื้นผิวเหล่านี้เปลี่ยนไปตลอดเวลา เราจะเรียกอาการนี้ว่า Transform ถึงเวลานี้ก็หมดหน้าที่ของ Vertex Shader Processor จากนั้นก็จะส่งข้อมูลทั้งหมดเหล่านี้ที่เกิดขึ้นไปสู่ Pixel Shader Engine ซึ่ง Pixel Shader Engine นั้นก็จะทำหน้าที่แปลงสัญญาณข้อมูลที่ได้รับมาจาก Vertex Shader ที่เดิมนั้นจะมาในรูปของข้อมูลสามมิติ X , Y , Z แต่ในความเป็นจริงแล้วนั้นจอมอนิเตอร์ของเรานั้นเป็นเพียงจอแบบสองมิติ คือมีเพียงแนงแกน X และ Y เท่านั้น ดังนั้นหน้าที่หลักของ Pixel Shader คือการเปลี่ยนสัญญาณจาก X, Y , Z ให้มาอยู่ในรูปของ X และ Y โดยการนำข้อมูลทั้งหมดมาเรียงกันบน Pixel และทำการใส่เอกเฟกสืให้กับภาพที่ปรากฏขึ้น แต่ก่อนที่จะมีการใส่สีสันและเอกเฟกส์ให้กับภาพนั้น Pixel Shader จะต้องทำการลบข้อมูลที่ไม่จำเป็นออก คือข้อมูลที่มองไม่เห็นในขณะที่แสดงภาพจริงบนมอนิเตอร์ หรือพูดง่ายๆว่าสิ่งของที่โดนบังภายในภาพ จากนั้นก็จะนำข้อมูลเหล่านั้นมาเรียงบนระนาบใน pixel ต่างๆ แล้วใส่แสง สี พื้นผิวลงบนจุด หรือ Pixel ให้กับแต่ละจุด โดยแสงสีที่แตกต่างกันออกไปของแต่ละ Pixel ทำให้เรามองเห็นภาพที่ปรากฎจริงนั้นเป็นภาพสามมิติ ซึ่งจริงๆแล้วมันก็คือภาพเสมือนสามมิติ Virtual 3D นั่นเอง
      ขอบคุณสำหรับความรู้ครับ

      Comment


      • #4
        ความรู้ครับความรู้(แน่นปึก) ขอบคุณครับ

        Comment


        • #5
          DirectX 6.0 - Multitexturing
          DirectX 7.0 - Hardware Transformation, Clipping and Lighting (TCL/T&L)
          DirectX 8.0 - Shader Model 1.1 (+Optional Pixel Shader 1.2/1.3 support)
          DirectX 8.1 - Pixel Shader 1.4 & Vertex Shader 1.1
          DirectX 9.0 - Shader Model 2.0
          DirectX 9.0b - Shader Model 2.0a
          DirectX 9.0c - Shader Model 3.0
          DirectX 10 - Shader Model 4.0

          PixelShader Version 2 And 3 Compared ( เปรียบเทียบ เวอร์ชัน 2 และ 3 )
          http://www.tomshardware.com/2005/12/...iii/page2.html

          Comment


          • #6
            Originally posted by Hangger View Post
            Vertex Shader Processor คืออะไรขอท้าวความกันสักนิดกับคำว่า Vertex คืออะไร โดยทั่วไปแล้วในเกมสามมิตินั้น ในฉากแต่ละฉากที่ประกอบไปด้วยสิ่งต่างๆ ไม่ว่าจะเป็นต้นไม้ ก้อนหิน หรืออะไรทุกๆอย่างที่ปรากฎอยู่ภายในฉาก จะเกิดขึ้นจากถาพสามเหลี่ยมหลายๆภาพมารวมกันเป็นพื้นผิว และคำว่า Vertex ก็คือจุดยอดของสามเหลี่ยมแต่ละชิ้นนั่นเอง และจุดหลายๆจุดเหล่านี้เองที่เป็นข้อมูลสำคัญให้กับคอมพิวเตอร์ โดยที่ในจุดแต่ละจุดนั้นจะมีข้อมูลของตัวเองในลักษณะตำแหน่งของตัวเอง คือจะมีข้อมูลในรูปของแนวแกน คือ X , Y , Z และ W นอกจากข้อมูลทางด้านตำแหน่งของตัวเองแล้วยังจะประกอบไปด้วยข้อมูลของสีไปอีกด้วย เพื่อให้คอมพิวเตอร์ของเราทราบได้ว่าในแต่ละตำแหน่งของจุดนั้นประกอบไปด้วยสีอะไรบ้าง โดยที่ข้อมูลของสีนั้นก็จะถูกเก็บไว้ในรูปของ RGBA ( R= Red , G = Green , B = Blue , A = Alpha ) นอกจากข้อมูลเหล่านี้แล้วนั้น ยังจะต้องมีข้อมูลทางด้าน Texture หรือข้อมูลเกี่ยวกับพื้นผิวของแต่ละ Vertex อีกด้วยเพื่อให้ภาพสามมิติเหล่านั้นสมบูรณ์ขึ้นมาได้ ข้อมูลทางด้านพื้นผิวเหล่านี้อย่างเช่น ผิวหนังมนุษย์ ยาง สนิม เปลือกไม้เป็นต้น และเมื่อมีพื้นผิวแล้วในความเป็นจริงของพื้นผิวก็ยังต้องประกอบไปด้วยแสงเงาอีกเช่นกัน ตรงจุดนี้จะเห็นได้ว่าในแต่ละ Vextex นั้นจะประกอบไปด้วยข้อมูลมากมายที่จะต้องทำการประมวลผล เท่านั้นยังไม่พอในเกมสามมิตินั้นจะยังมีการเคลื่อนไหวของตัวละคร จึงทำให้พื้นผิวเหล่านี้เปลี่ยนไปตลอดเวลา เราจะเรียกอาการนี้ว่า Transform ถึงเวลานี้ก็หมดหน้าที่ของ Vertex Shader Processor จากนั้นก็จะส่งข้อมูลทั้งหมดเหล่านี้ที่เกิดขึ้นไปสู่ Pixel Shader Engine ซึ่ง Pixel Shader Engine นั้นก็จะทำหน้าที่แปลงสัญญาณข้อมูลที่ได้รับมาจาก Vertex Shader ที่เดิมนั้นจะมาในรูปของข้อมูลสามมิติ X , Y , Z แต่ในความเป็นจริงแล้วนั้นจอมอนิเตอร์ของเรานั้นเป็นเพียงจอแบบสองมิติ คือมีเพียงแนงแกน X และ Y เท่านั้น ดังนั้นหน้าที่หลักของ Pixel Shader คือการเปลี่ยนสัญญาณจาก X, Y , Z ให้มาอยู่ในรูปของ X และ Y โดยการนำข้อมูลทั้งหมดมาเรียงกันบน Pixel และทำการใส่เอกเฟกสืให้กับภาพที่ปรากฏขึ้น แต่ก่อนที่จะมีการใส่สีสันและเอกเฟกส์ให้กับภาพนั้น Pixel Shader จะต้องทำการลบข้อมูลที่ไม่จำเป็นออก คือข้อมูลที่มองไม่เห็นในขณะที่แสดงภาพจริงบนมอนิเตอร์ หรือพูดง่ายๆว่าสิ่งของที่โดนบังภายในภาพ จากนั้นก็จะนำข้อมูลเหล่านั้นมาเรียงบนระนาบใน pixel ต่างๆ แล้วใส่แสง สี พื้นผิวลงบนจุด หรือ Pixel ให้กับแต่ละจุด โดยแสงสีที่แตกต่างกันออกไปของแต่ละ Pixel ทำให้เรามองเห็นภาพที่ปรากฎจริงนั้นเป็นภาพสามมิติ ซึ่งจริงๆแล้วมันก็คือภาพเสมือนสามมิติ Virtual 3D นั่นเอง

            ดูดความรู้ๆ ยาวมากความรู้นี้

            Comment


            • #7
              มาเก็บความรู้ครับ

              Comment


              • #8
                เพิ่งเข้าใจเหมือนกันครับ
                ปกติก็รู้แค่ อันไหนมากกว่า ใหม่กว่า
                ขอบคุณด้วยคนครับ

                Comment


                • #9
                  สุดยอดๆ ละเอียดยิบ

                  Comment


                  • #10
                    และอยากทราบว่า ถ้าผมจะซื้อควรวท้อรุ่นไหน และราคาเท่าไหร่ครับ

                    Comment


                    • #11
                      ดูด ๆๆๆๆ ความรู้ แบบแน่น ๆ

                      Comment


                      • #12
                        ผมเขียนเกมส์ก็จริง
                        แต่ไม่ค่อยอยากไปยุ่งเกี่ยวกับ 3D Rendering เลย โดยเฉพาะ DirectX
                        เพราะว่า resource ในไทยมีน้อยมากๆ อยากเก่งต้อง inter อย่างเดียว

                        ปวดกะบาล เขียน Game System กะ GUI ดีก่าสนุกกว่ากันเยอะ

                        Comment

                        Working...
                        X