มีตัวอย่างของเอฟเฟกต์ที่คุณพูดถึงในหลาย ๆ เกม อย่างแรกคือความชัดลึก (Depth of field ) ซึ่งทำให้วัตถุในระยะไกลดูเบลอราวกับว่ากล้องกำลังโฟกัสไปที่สิ่งต่าง ๆ ที่อยู่ใกล้มันเท่านั้นเช่นในตัวอย่างนี้ คุณสามารถสำรวจตัวอย่างเพิ่มเติมที่เกี่ยวข้องกับสิ่งนี้ได้ในแพ็คเกจ DirectX SDK ซึ่งมีรหัสตัวอย่างด้วย สำหรับ OpenGL คุณจะได้รับมันทางอินเทอร์เน็ตหากคุณค้นหา
สิ่งที่สองที่คุณอาจต้องการเห็นคือสิ่งที่รู้จักกันในชื่อGeometry MipMaping หรือ Progressive Meshesซึ่งเหมือนกับชื่อที่แนะนำนั้นคล้ายกับการทำแผนที่พื้นผิว mip แต่สำหรับรูปทรงเรขาคณิต จำนวนรูปหลายเหลี่ยมในตาข่ายลดลงเมื่อวัตถุอยู่ห่างจากกล้องมากขึ้น สิ่งนี้ช่วยในการเพิ่มประสิทธิภาพ ใน D3D มีฟังก์ชั่นที่จะช่วยในการสร้าง Progressive mesh โดยอัตโนมัติ นี่มันคือ:
HRESULT WINAPI D3DXGeneratePMesh(
LPD3DXMESH pMesh,
const DWORD *pAdjacency,
const D3DXATTRIBUTEWEIGHTS *pVertexAttributeWeights,
const FLOAT *pVertexWeights,
DWORD MinValue,
DWORD Options,
LPD3DXPMESH *ppPMesh
);
นี่คือตัวอย่างของสิ่งนี้:
แก้ไข:
พิจารณาภาพต่อไปนี้ -
นี่คือ frustum ที่คัดมาของกล้อง เส้นที่ลากผ่านตรงกลางคือเวกเตอร์ LookAt ทีนี้สมมติว่าผู้เล่นต้องการโฟกัสที่ศูนย์กลางของหน้าจอเสมอคุณกำหนดมุม x วัตถุใด ๆ ที่จะวางตำแหน่งในมุมที่มากกว่า x ที่ตัดสินใจจะมีการเรนเดอร์ความละเอียดต่ำและวัตถุที่อยู่ในมุมนั้นจะถูกแสดงด้วยรายละเอียด เช่นนี้วัตถุที่อยู่ตรงกลางของหน้าจอจะมีรายละเอียดมากกว่าวัตถุที่อยู่ด้านข้าง สำหรับหากผู้เล่นไม่ได้มองไปที่ศูนย์กลางจากนั้นเพียงแค่ปรับเส้นกลางที่เป็นทิศทางที่ผู้เล่นกำลังดู (หรืออาจจะหมุนทั้งกล้องไปในทิศทางนั้น)