overclockzonefanpage  overclockzoneth  TV  
Results 1 to 5 of 5
  1. #1
    OverclockZone Member ssss's Avatar
    Join Date
    18 Sep 2006
    Location
    มีสทีน สุขาภิบาล3 รามคำแหง

    Default ถามเรื่อง vga

    ถามเรื่องท่อ ในการ์ดจอ มีไว้เพื่ออะไรครับ ไม่รู้จริงจริงครับ

  2. #2
    เมพขิงๆ Mania ! TWK.'s Avatar
    Join Date
    5 Dec 2006
    Location
    สำโรง-บางนา-สัตหีบ

    Default

    Quote Originally Posted by ssss View Post
    ถามเรื่องท่อ ในการ์ดจอ มีไว้เพื่ออะไรครับ ไม่รู้จริงจริงครับ
    PixelPipelines

    รอท่านถัดไป ^^ ไม่รู้ จ๊ะ

  3. #3
    Moderator Gearhead's Avatar
    Join Date
    18 Sep 2006

    Default

    Vertex Shader คือ
    ในเกมสามมิตินั้น วัตถุแต่ละชิ้นที่อยู่ภายในฉาก ไม่ว่าจะเป็นรถยนต์ ต้นไม้ ตึก คน ฯลฯ ล้วนแล้วแต่จะประกอบไปด้วยสามเหลี่ยมหลาย ๆ ชิ้นมาต่อเข้าด้วยกันจนเกิดเป็นรูปร่างขึ้นภายในเกม Vertex ก็คือจุดยอดที่ปรากฏตรงมุมของสามเหลี่ยมแต่ละชิ้นนั่นเอง
    จุดยอดหรือ Vertex นั้นเป็นข้อมูลสำคัญที่จะบ่งบอกให้คอมพิวเตอร์ทราบว่าวัตถุชิ้นนั้น ๆ ที่จะสร้างมีรูปทรงอย่างไร เพราะแต่ละ Vertex จะมีข้อมูลแสดงตำแหน่งตัวเองอยู่ ทำให้คอมพิวเตอร์สามารถกำหนดจุดยอดนี้ในฉากได้อย่างถูกต้อง โดย Vertex นั้นจะบ่งบอกพิกัดทั้งในแกน X แกน Y แกน Z และแกน W (แกน Z จะบอกความลึกของตำแหน่ง เช่น รถยนต์ที่อยู่ด้านหน้าตึกจะมีความลึกน้อยกว่าตึกที่อยู่ด้านหลัง ซึ่งด้วยข้อมูลนี้เกมจะแสดงภาพของรถยนต์บังตึกเอาไว้ไม่ให้เรามองเห็นตึกได้ แต่สมมติว่าเราอยากให้มองเห็นตึกโดยไม่สนใจว่ารถยนต์จะอยู่ด้านหน้า เราก็สั่งค่าแกน Z ของรถยนต์ให้อยู่ลึกกว่าตัวตึก เท่านี้ก็จะทำให้เรามองทะลุรถยนต์ไปเห็นตึกด้านหลังได้ แต่ก็จะเกิดภาพที่ไม่สมจริงขึ้น ส่วนแกน W ใช้บ่งบอกน้ำหนัก)
    นอกเหนือจากการบรรจุข้อมูลเกี่ยวกับตำแหน่งของตนแล้ว Vertex ยังต้องบรรจุข้อมูลเกี่ยวกับสีเอาไว้ด้วย เพื่อให้คอมพิวเตอร์ทราบว่าจะแสดงสีอะไรใน Vertex แต่ละตำแหน่ง โดยข้อมูลสีนั้นจะเก็บในรูปของ RGBA หรือ Red, Green, Blue, Alpha
    นอกจากนี้ก็ยังต้องมีข้อมูลเกี่ยวกับ Texture หรือพื้นผิวที่จะนำมาวางไว้บน Vertex ต่าง ๆ เพื่อให้เกิดเป็นเสื้อผ้าหรือลวดลายของกำแพง ฯลฯ
    จะเห็นได้ว่า Vertex แต่ละตำแหน่งนั้นต้องเก็บข้อมูลมากมาย ซึ่งเมื่อรวมในแต่ละฉากเข้าด้วยกันแล้ว ข้อมูล Vertex ที่มีส่วนสำคัญทำให้เกิดรูปร่างสามมิติที่สมบูรณ์นั้นมีอยู่มหาศาล ซึ่งข้อมูลนี้จะต้องมีการคำนวณและปรับเปลี่ยนทุกครั้งที่ผู้เล่นเคลื่อนไหวไปในตำแหน่งต่าง ๆ ภายในฉากหรือมีการเปลี่ยนมุมมอง เพราะทุกครั้งที่ผู้เล่นหันหน้าไปด้านซ้ายหรือขวา หรือเดินหน้าถอยหลัง ตำแหน่งของวัตถุภายในภาพที่สัมพันธ์กับตำแหน่งของผู้เล่นก็จะเปลี่ยนไปอยู่เสมอ
    ความเคลื่อนไหวของวัตถุสามมิติดังกล่าวข้างต้นนี้เราจะเรียกว่า Transform
    แต่เกมสามมิติจะยังไม่สมบูรณ์หากไม่มีการสร้างแสงและเงาให้กับภาพ ซึ่งการสร้างแสงและเงา หรือที่เรียกกันว่า Lighting นั้น จะเป็นการบรรจุข้อมูลลงไปในแต่ละ Vertex ว่าจะต้องใช้แสงแบบใด สว่างจ้าเหมือนไฟจากสปอตไลท์หรือเป็นไฟเรื่อ ๆ จากแสงเทียน ฯลฯ
    ทั้งนี้ในกรณีของการเพิ่มข้อมูลเกี่ยวกับแสงและเงาลงในแต่ละ Vertex นั้นจะใช้เฉพาะในเกมที่ใช้สามารถแบบ Vertex Lighting เท่านั้น ซึ่งเกมในปัจจุบันนั้นจะใช้เทคนิคการใส่ Texture รูปเงาหรือรูปแสงเข้าไปในวัตถุแทนเพื่อสร้างภาพที่ทำให้เกิดความรู้สึกเหมือนมีแสงหรือเงาแทน

    Pixel Shader คือ
    อย่างที่ได้อธิบายไปแล้วว่าฉากสามมิตินั้นจะต้องประกอบไปด้วยข้อมูลสามเหลี่ยมที่มี Vertex ใช้ระบุตำแหน่งเพื่อทำให้ภาพมีความลึกและมีรูปทรงของวัตถุแต่ละชิ้นอย่างชัดเจนเพื่อให้สามารถนำมาสร้างเป็นฉากได้ ซึ่งในส่วนนี้จะเป็นข้อมูลที่คำนวณใน Vertex Shader
    แต่เมื่อ Vertex Shader คำนวณข้อมูลในส่วนนี้เสร็จสิ้นแล้ว Vertex Shader ก็จะต้องส่งข้อมูลต่อมายัง Pixel Shader ซึ่งข้อมูลที่ส่งต่อมานี้จะต้องมีการลบส่วนที่ไม่จำเป็นทิ้งไปเสียก่อน โดยส่วนที่ต้องลบทิ้งก็คือข้อมูลในส่วนที่จะไม่ปรากฏบนภาพสุดท้าย เช่น วัตถุที่อยู่ด้านหลัง ตรงนี้เรากลับไปที่ตัวอย่างที่พูดถึงแต่แรก คือรถยนต์ที่จอดหน้าตึก ข้อมูลที่ต้องลบทิ้งก็คือส่วนของรถยนต์ที่อยู่ตรงข้ามกับผู้เล่น (ถ้ารถหันด้านซ้ายหาผู้เล่น ส่วนด้านขวาของรถยนต์หันเข้าหาตึก ข้อมูลด้านขวาของรถจะถูกลบออก) และตัวตึกที่ถูกรถยนต์บังเอาไว้
    จากนั้นข้อมูลของภาพจะถูกแทนที่ด้วยค่า X และ Y เพื่อทำให้กลายเป็นฉากสองมิติ เพื่อให้สามารถกำหนดจุดบนจอภาพที่เป็นสองมิติได้ (เพราะจอภาพคอมพิวเตอร์มีสองมิติไม่ใช่สามมิติ)
    ดังนั้นในขั้นตอนการส่งต่อข้อมูลจาก Vertex Shader มาที่ Pixel Shader ภาพฉากสามมิติที่การ์ดแสดงผลคำนวณแบบสามมิติจริง ๆ จึงถูกเปลี่ยนให้การเป็นจุด (Pixel) ซึ่งเป็นสองมิติ โดยภาพสุดท้ายเราจะเห็นแบบภาพสามมิติเหมือน หรือ Virtual 3D
    สิ่งที่ Pixel Shader ทำก็คือการนำจุด (Pixel) เหล่านั้นมาใส่สีและเอฟเฟกต์ต่าง ๆ เข้าไป
    เมื่อคำนวนเสร็จ ก็มาถึงขั้นตอนการนำข้อมูล Texture เหล่านั้นมา Blend (ผสม) ให้อยู่ภายในพิกเซลเดียว จากนั้นเมื่อได้ข้อมูลแล้วก็นำไปสู่ขั้นตอนต่อมาคือการใส่เอฟเฟกต์หมอก และสุดท้ายทำการ Alpha Blending เพื่อให้ทราบว่าจะมีความเข้มจางของพิกเซลมากน้อยแค่ไหน เท่านี้เป็นอันสิ้นสุดการคำนวณ

    หลักๆก็ประมาณนี้ครับ แต่อาจจะมีแตกต่างกันไปตามแต่สถาปัติยกรรมของการ์ด หรือ Generation ของการ์ดครับ

    อันนี้ผมก๊อปมานะครับ ไม่ได้เขียนเอง แต่นานแล้วเลยจำแหล่งที่มาไม่ได้ครับ^^

  4. #4
    OverclockZone Member ssss's Avatar
    Join Date
    18 Sep 2006
    Location
    มีสทีน สุขาภิบาล3 รามคำแหง

    Default

    ถ้างั้นมีมากก็ยิ่งดีใช่ไหมครับ

  5. #5
    OverclockZone Member nicolas's Avatar
    Join Date
    21 Sep 2006

    Default

    มากไว้ก่อนดีแน่นอนคร้าบ


Bookmarks

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •