Tải bản đầy đủ (.doc) (104 trang)

Nghiên cứu và xây dựng thử nghiệm với 3d engine

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.92 MB, 104 trang )

TÀI LIỆU THAM KHẢO
 directX 9.0 sdk Update Summer 2004, Microsoft, 2004.
 Jake Simpsom. Game Engines Anatomy 101, April 12,
2002.
 Bendik Stang, Game Engines, IMMDTU, 2003.
 David H. Rberrly, 3D Game Engine Design, Morrgan
Kaufinann Publisshers, 2003.
 Wolfgang F.Engel, Shader X2: Introductions & Tutorials with
DirectX9. Wolfgang Publishing, Inc,2004.
 Wolfgang F. Engel, Shader X: shader programming tips anh
tricks with DirectX9, Wordware Publishing, Inc, 2004.
 Lris Gray, DirectX9 Programmable Graphics Pipeline.
Microsoft Press, 2003.
 William Ford, William Topp, Data Structures with C++ Using
STL Second Editor, Prentice Hall, 2002.
 Jim Adams, Advanced Animation with DirectX, Premier press
Game Development, 2003.
3
 Evan Phipho, Focus on 3D Models, Premier Press Fame
Development, 2003.
 Jim Adams, Programming Role Playing Game With DirextX.
Premier Press Game Development, 2002.
 maco monster, Doom3 Models, September, 2004.
 website: /> website:
 Website: /> website: e dev.net.
 Website: flipcode.org.
 Website: www.doom3word.org
 website: www.ati.com
 Website: www.nvidia.com
4
CH ƯƠNG I: GIỚI THIỆU VỀ NƠI THỰC TẬP


Trường trung học phổ thông Kỹ Thuật Việt Trì được thành lập
ngày 03/7/2003. Là một trường nằm trong hệ thống các trường
trung học phổ thông công lập tỉnh Phú Thọ. Những ngày thành lập
trường mới có 18 cán bộ giáo viên công nhân viên với 180 học sinh,
sau gần 4 năm đội ngũ cán bộ giáo viên công nhân viên của nhà
trường đã phát triển mạnh mẽ về số lượng và chất lượng, năm
2007-2008 trường có 44 cán hộ giáo viên công nhân viên với gần
500 học sinh
Qua hai năm học 2006-2007, 2007-2008, trường có 12 lớp
( bao gồm 04 lớp khối 10, 04 lớp khối 11, 04 lớp khối 12). Tuy có
nhiều khó khăn nhưng nhà trường đã tổ chức tốt việc dạy và học.
Kết quả có 12 học sinh giỏi cấp tỉnh các môn: ngữ văn, hoá học, vật
lý lịch sử,. Tin học.
Được sự quan tâm của tỉnh uỷ hội đồng nhân dân tỉnh ,UBND
tỉnh Phú Thọ của sở Giáo Dục Đào Tạo trường được cấp vốn xây
dựng đợt một, dự kiến học kỳ hai năm học 2008-2009 sẽ có một
ngôi trường công lập với quy mô 30 lớp hiện đại khang trang nhất
trong cả nước tại thôn Thậm Thình xã Vân Phú. Thực hiện chương
trình thí đua thay đổi nội dung, phương pháp giảng dạy tiên tiến của
khối trung học phổ thông. Đáp ứng nhu cầu học tập ngày càng cao
của học sinh khu vực phía bắc thành phố Việt Trì và các xã lân cận
thuộc huyện Phù Ninh, Lâm Thao
Là một trường vừa dạy chương trình văn hoá phổ thông vừa
dạy nghề với mục đích học sinh ra trường vừa có bằng trung học
phổ thông hệ chính quy vừa có bằng tay nghề bậc 2/7. vì thế chương
trình dạy nghề rất nhiều mà công nghệ thông tin là một trong những
nghề được học sinh yêu thích và đăng ký nhiều nhất
Chương trình đào tạo nghề như sau:
lớp 10: 4 tiết /1 tuần.
lớp 11: 8 tiết /1 tuần.

Lớp 12: 5,5 tiết/1 tuần.
5
Vì sau khi ra trường học sinh chỉ nhận bằng tay nghề bậc 2/7,
trong khi đó các công ty, các cơ sở tuyển dụng yêu cầu với tay nghề
bậc 3/7 vì thế, nhà trường đã liên kết với các trường và trung tâm
dạy nghề. Đào tạo tiếp các em có nhu cầu sau khi tốt nghiệp cần học
thêm để lấy tay nghề cao hơn phục vụ cho công việc sau này.
6
CHƯƠNG II: GIỚI THIỆU VỀ ĐỀ TÀI THỰC TẬP
2.1. Lý do chọn đề tài: “nghiên cứu và xây dựng thử
nghiệm với 3d engine”
Ngày nay, các sản phẩm giải trí mà đặc biệt là game đã mang
lại một nguồn lợi nhuận to lớn cho ngành công nghiệp máy tính. Do
nhu cầu của thị trường tăng nhanh, các game ngày càng có chất
lượng cao và thời gian xây dựng ngày càng được rút ngắn. Các
game 3d trên thị trường hiện nay rất đa dạng về nội dung và chủng
loại nhưng cùng có điểm chung là xây dựng trên các game engine.
Chất lượng của game sẽ phụ thuộc vào chất lượng của game engine
mà nó sử dụng.
Game engine chính là phần cốt lõi để xây dựng game hiện nay
và 3d engine chính là phần quan trọng nhất của game engine. Việc
sử dụng game engine để xây sựng game là một xu thế tất yếu để có
những game chất lượng cao trong thời gian ngắn. Tiếc thay. Hiện
nay ở nước ta việc xây dựng game 3d cũng như game engine vẫn
còn là điều mới mẻ. Chính vì vậy, em thực hiện đề tài “ nghiên cứu
và xây dựng thử nghiệm 3d engine” với mong muốn góp vào những
viên gạch đầu tiên để xây dựng nên ngành công nghiệp game của
nước nhà trong tương lai.
Thực hiện đề tài này em muốn giới thiệu với các thầy cô giáo
trong trường trung học phổ thông kỹ thuật việt trì, cũng như các em

học sinh một công nghệ làm game 3d mới. Em hi vọng rằng sau khi
xem song đề tài này những em học sinh trong trường sẽ có một cách
nhìn khác về lập trình game và biết đâu trong số những học sinh đó
sẽ trở thành lập trình game chuyên nghiệp trong tương lai, đưa game
việt nam có một vị trí tương đối trong làng game thế giới.
2.2. L ịch sử phát triển game engine
Game engine', thuật ngữ đã trở nên quá quen thuộc đối với
những người mê game trong những năm gần đây, là một thành phần
tối quan trọng không thể thiếu trong việc phát triển trò chơi ngày
nay.
Với cấu trúc cồng kềnh và ngày càng trở nên tinh vi của các
7
trò chơi, nếu không có sự hỗ trợ của game engine, các nhà phát triển
lẫn phát hành thường sẽ phải đối mặt với những thử thách nguy
hiểm: thời gian phát triển game kéo dài, chi phí tăng vọt, chưa kể
các rắc rối phát sinh. Một ví dụ đơn cử: khi gas powered games thực
hiện dungeon siege (ra mắt năm 2002), họ không có trong tay một
game engine nào cả và để thực hiện được trò chơi này, mọi thứ (kể
cả việc xây dựng engine cho game) phải làm từ đầu, kết quả là hãng
phát triển game của chris taylor phải mất ròng rã ba năm để hoàn tất
trò chơi. Trong khi đó, firaxis chỉ cần thuê engine gamebryo và họ
tốn chưa tới hai năm để hoàn thành sid meier’s pirates.
Theo từ điển bách khoa toàn thư wikipedia, game engine là
một bộ công cụ phần mềm, tập hợp của nhiều yếu tố như: cơ chế
dựng hình (2d hoặc 3d), hệ thống vật lý, ai, âm thanh... Cho phép trò
chơi chạy trên nhiều nền tảng khác nhau, với việc sử dụng được đơn
giản hóa, tiết kiệm chi phí.
Vào đầu thập niên 90 (và trước đó nữa), việc thực hiện trò chơi rất
dễ dàng, mau chóng bởi yêu cầu về hình họa và lối chơi vô cùng
giản đơn. Cũng chính vì quá đơn giản, nên phần lớn những nhà phát

triển game thời bấy giờ chưa có được một khái niệm hay định hình
về “game engine”. Tại sao phải phức tạp hóa một dự án game vốn
chỉ cần vài người đảm trách cùng lúc nhiều vai trò khác nhau? Trò
chơi nhập vai lừng danh một thuở của interplay, stonekeep, là điển
hình của sự tư duy kiểu cũ này. Theo dự tính, game chỉ cần 9 tháng
là hoàn thành, với ngân quỹ vào khoảng 50.000 usd và chỉ mất có...
Hai người để thực hiện.
Tuy nhiên, không ai ngờ tới khi công nghệ máy tính đột ngột
chuyển mình mạnh mẽ trong giai đoạn 1992-1995, thị hiếu thị
trường cũng thay đổi theo và điều tất yếu là sự phức tạp trong việc
phát triển trò chơi tăng nhanh khó đoán. Stonekeep, một “nạn nhân”
của việc không phòng bị trước – chỉ có độc mỗi engine đồ họa thô
sơ, đã phải loay hoay nâng cấp dự án của mình: rót thêm 5 triệu usd
kinh phí, nâng số nhân viên lên hơn 200 người và mất 5 năm mới ra
mắt (vào năm 1995).
Trong khi đó ở cùng thời điểm, id software với khả năng “nhìn
8
thấu tương lai” đã chuẩn bị trước cho mình một bộ công cụ tích hợp
đủ tính năng, đáp ứng được nhu cầu thị trường lúc bấy giờ là
wolfenstein 3d engine, và lẽ tất yếu thành công không nằm quá tầm
tay họ. Điều quan trọng nhất thời điểm đó là id software đã đặt nền
tảng cho khái niệm một “game engine” đúng nghĩa: tập hợp nhiều
thành phần cần thiết cho việc xây dựng một trò chơi, giảm tải chi
phí, thời gian và nhân lực phát sinh.
Sau wolfenstein 3d (1992), một kỷ nguyên fps ra mắt, thúc
đẩy thêm nhiều cải tiến vượt trội đối với game engine và bắt đầu lấn
sân sang các thể loại game khác. Giờ đây, tuy có nhiều kiểu game
engine khác nhau, nhưng tựu trung khi nhắc đến cụm từ này, người
ta vẫn xem thể loại fps là một “biểu tượng” đặc trưng, thể hiện rõ
nét nhất hai chữ: game engine.

Song song với giai đoạn hoàn thiện bản thân, thì game engine
còn được khai thác ở một khía cạnh khác là kinh tế. Chúng được
thương mại hóa bằng cách cho thuê. Việc cho thuê này sẽ giúp
người đi thuê tiết kiệm được chi phí và thời gian làm game: họ chỉ
việc lấy engine đó về và “đắp da, đắp thịt” cho phần nội dung game
(đồ họa, nhân vật, vũ khí và màn chơi) dựa trên khung sườn có sẵn.
Với người cho thuê, có trong tay một số tiền sẽ giúp họ có kinh phí
thực hiện các dự án khác hoặc nâng cấp cho engine hiện tại của
mình. Một engine có thể cho nhiều hãng phát triển game thuê cùng
lúc và tùy theo nhu cầu, nó có thể được chỉnh sửa. Giá cả thuê sẽ xê
dịch khác nhau tùy theo chất lượng và tên tuổi của engine đó, chẳng
hạn khi warcraft iii ra mắt thành công (2002), engine thực hiện
game này đã được “hét giá” trên thị trường lúc đó vào khoảng... 4
triệu usd.
Đi đầu và sớm nhất trong việc nắm bắt thị trường thuê game
engine, có thể kể đến hai tên tuổi lẫy lừng: quake iii arena (id
software) và unreal tournament (epic games). Cả hai gần như “thống
trị” thị trường giai đoạn 1999 – 2002, phần lớn game ra mắt lúc đó
thay phiên nhau sử dụng một trong hai engine này làm nền tảng. Khi
half-life 2 ra mắt vào năm 2004, giới thiệu engine source đến với
mọi người thì cả hai engine kia đã bước sang thế hệ thứ hai, và thị
9
trường giai đoạn 2004 – 2006 chứng kiến thế chân vạc phân chia
giữa id software, epic games và valve corporation.
Cuối thời điểm 2006, khi thế hệ console “next-gen” rộ lên thì
cũng là lúc epic games đưa ra một quyết định táo bạo: tấn công
vùng đất mới này! Kết quả là họ cho ra mắt engine unreal 3 – hỗ trợ
nhiều công nghệ hiện đại, bao gồm cả directx 10, với sản phẩm đình
đám gears of war (xbox 360). Thông qua cuộc bứt phá ngoạn mục
này, epic đã bỏ rơi hai đối thủ đáng gờm lại phía sau một bước:

valve thì vẫn giậm chân tại chỗ, không thêm thắt cải tiến, trong khi
id software lật đật nghiên cứu và trình làng thế hệ engine mới (id
tech 5), dù chưa có sản phẩm ứng dụng nào có mặt trên thị trường.
Tính đến thời điểm này, hiện danh sách các game sử dụng engine
unreal 3 đã vượt hơn con số 60 và sẽ còn tiếp tục được thêm vào, bỏ
xa source ở vị trí thứ nhì (tầm 30 game) và rất, rất xa so với engine
doom 3 (id tech 4) chỉ chưa đầy chục game ứng dụng.
2.3. Các công cụ thiết kế game engine
2.3.1. Engine unreal 3
Để đạt đến thành công như ngày hôm nay, engine unreal 3 phải
có trong người “võ công” thuộc hàng thượng thừa trong giới. Theo
tương truyền thì unreal 3 có tới... 17 bí kíp võ công khác nhau,
nhưng tựu trung lại thì hướng vào ba ý chủ đạo, đó là:
- thiết kế mô hình hướng đối tượng với ngôn ngữ c++ làm nền, dễ
dàng làm việc trên các hệ điều hành khác nhau, ở bất cứ nơi đâu.
- người sử dụng sẽ là đối tượng được phục vụ chính, với nhiều bộ
công cụ và tiện ích hỗ trợ mạnh mẽ, có thể làm được bất cứ gì dựa
trên ý tưởng sáng tạo của mình.
- có thể được sử dụng để phát triển game trên nhiều hệ máy khác
nhau, dễ nâng cấp, thêm thắt các đoạn mã, plug-in khác nhau.
Những tính năng đáng chú ý của unreal 3
scripting (lập trình mã)
Unreal 3 sử dụng bộ mã riêng của mình để lập trình có tên là
unrealscript. Bộ mã này được xem là gần gũi do được viết trên ngôn
ngữ c++, dễ dàng tương thích với các bộ mã nguồn khác nhau. Có
10
thể tương tác với trình unrealed có sẵn để tạo nên lối chơi, thiết kế
màn chơi của game một cách dễ dàng.
Ngoài ra, công cụ visual ai scripting tool còn giúp cho lập
trình viên rất nhiều trong việc thiết kế nhiệm vụ, các sự kiện đặc

biệt trong game và trí thông minh của máy...
Physics (các hiệu ứng vật lý)
Engine hỗ trợ 4 cơ chế vật lý là basic physics (hiệu ứng vật lý
cơ bản), collision detection (phụ trách mảng va chạm, cháy nổ sẽ
xảy ra trong game), rigid body (vật lý từng phần, phụ trách các hiệu
ứng như rag-doll, tháo rời từng mảnh...) và vehicle physics (tương
tác giữa nhân vật và các phương tiện cơ giới khác, a.i...)
Lighting (hiệu ứng ánh sáng)
Hỗ trợ các cơ chế thời thượng nhất hiện nay như: per-vertex,
per-pixel, volumetric, lightmapping, gloss maps và anisotropic...
Shadows (hiệu ứng đổ bóng)
Hỗ trợ ba cơ chế shadow mapping, projected planar và shadow
volume với chất lượng ở mức cao nhất. Người lập trình có thể sử
dụng những bộ công cụ riêng biệt của các hãng thứ ba để kết hợp
với những hiệu ứng có sẵn, tạo ra những hiệu ứng đặc sắc khác.
Texturing (vân bề mặt)
Hỗ trợ hầu hết các cơ chế phủ vân bề mặt tiên tiến như basic,
multi-texturing, bumpmapping (tạo hiệu ứng bề mặt sần sùi),
mipmapping, volumetric, projected, procedural.
Shaders (tô bóng)
Hỗ trợ các cơ chế như vertex, pixel, high level với độ tích hợp
cao.
Scene management (dựng và quản lý cảnh)
dựng cảnh, môi trường ngoài trời hay trong nhà, được hỗ trợ tốt với
đầy đủ các hiệu ứng ánh sáng, đổ bóng nhờ những bộ công cụ
general, bsp, portals và lod.
Animation (chuyển động vật thể)
11
Với các cơ chế inverse kinematics, keyframe animation,
skeletal animation, facial animation, animation blending. Đặc biệt,

cơ chế dựng skeletal animation (chuyển động khung xương) được
hỗ trợ tốt với bốn khớp xương được thể hiện trong một vertex
(đỉnh). Ngoài ra, engine còn tương thích với nhiều chương trình
dựng hình nổi tiếng như 3d studio max, maya...
Meshes (mô hình lưới)
Để dựng được một mô hình, bạn phải bắt đầu từ việc vẽ các
điểm ảnh, sau đó nối các điểm ảnh này với nhau để tạo thành những
mắt lưới. Càng nhiều mắt lưới thì mô hình càng chi tiết. Unreal 3 hỗ
trợ các hiệu ứng như mesh loading, skinning, progressive,
tessellation, deformation.
Các mô hình thường được dựng trên hai lớp lưới: đó là realtime
mesh (mô hình lưới thực), với hàng ngàn đa giác ảnh trên đó và
detail mesh (mô hình lưới chi tiết) với hàng triệu đa giác.
Các hiệu ứng đặc biệt
Tập trung đủ các hiệu ứng thời thượng hiện nay như
environment mapping, lens flares, billboarding, particle system,
depth of field (tạo hiệu ứng chiều sâu tầm nhìn), motion blur (hiệu
ứng nhòe hình khi vật chuyển động), sky, water, fire, explosion,
decals (vết đạn dính trên vật thể), fog, weather, mirror (gương).
Terrain (địa hình)
Người sử dụng có thể dựng địa hình với nhiều lớp (layer)
riêng biệt được xếp lên nhau, dễ dàng tạo nên những khung cảnh,
môi trường rộng lớn với độ chi tiết cao. Ngoài ra, engine còn cho
phép thêm các hiệu ứng thời tiết, mùa màng vào địa hình như: cỏ
cây, hoa lá dính trên đá, cánh đồng tuyết trắng xóa...
Hệ thống mạng
Hỗ trợ trên nhiều hệ máy, nhiều hệ điều hành với số lượng
người chơi ở mức 64. Dễ dàng cho người dùng chỉnh sửa và thêm
thắt nhiều tiện ích khác nhau cho mục chơi mạng của game.
Âm thanh

12
Âm thanh nổi, vòm, 3d chất lượng cao, có sẵn bộ công cụ để
biên tập và chỉnh sửa.
Trí thông minh nhân tạo
Với bốn cơ chế hỗ trợ là pathfinding (khả năng nhận biết
đường đi), decision making (xử lý tình huống), finite state
machines, scripted (tự chỉnh sửa và lập trình cho a.i).
Rendering (kết xuất đồ họa – dựng hình)
Hỗ trợ dựng hình high dynamic range trên cơ chế 64 bit với độ
phân giải cao, hỗ trợ luôn cả các hiệu ứng post processing như: light
blooms, lenticular halos, hay depth-of-field. Dễ biên tập theo ý thích
của người sử dụng.
Sức mạnh chinh phục
Với một nền tảng tính năng mạnh mẽ như vậy, unreal 3 không
khó để trở thành tâm điểm hướng tới của các game. Những trò chơi
“đình đám” nhất hiện nay khi sử dụng unreal 3 đều thể hiện những
đặc điểm chung hết sức cơ bản của engine này, bên cạnh những
“biến tấu” mang đậm phong cách của riêng mình. Có thể thấy qua
những mặt sau:
2.3.1.1. Thể hiện ánh sáng rất hiệu quả
Nếu như trong rainbow six vegas, khung cảnh đa phần là
những khu vực rực rỡ ánh sáng của mặt trời, của đèn điện đủ màu
sắc chiếu rực cả một thành phố las vegas về đêm, thì ngược lại trong
bioshock, khung cảnh lại là một thành phố dưới đáy biển tối tăm và
ẩm thấp. Cả hai game đều thể hiện rất tốt các luồng ánh sáng, tạo
nên những khung cảnh hài hòa, phù hợp với xu hướng chủ đạo của
game. Còn với “siêu phẩm điện ảnh” stranglehold của đạo diễn ngô
vũ sâm, dấu ấn ánh sáng cũng rất rõ nét với những cảnh trong nhà
và ngoài trời được dựng vô cùng chân thật, tạo nên một khung cảnh
nền sống động với những cảnh phim “đẹp mê ly” hệt như trong các

siêu phẩm anh hùng, ngọa hổ tàng long hay thập diện mai phục...
Trong khi đó, gears of war lại mang “hơi hướng” của những thước
phim hành động phương tây với tông màu bàng bạc của khói và bụi.
13
Và cũng chính nhờ hiệu ứng ánh sáng, thể hiện mặt nước trở
nên thật hơn, đặc biệt là trong bioshock. Các hiệu ứng của nước
được dựng rất công phu, thêm nữa là việc nhúng các hiệu ứng của
directx 10 vào làm cho tương tác với mặt nước không còn chỉ là các
vân (texture) đắp lên bề mặt nữa, mà giờ đây đã mềm mại hơn rất
nhiều.
2.3.1.2. Khả năng tương tác vật lý rất tốt
Bioshock là một thí dụ điển hình cho khả năng này. Với siêu
năng lực, người chơi có thể tương tác với vô số các vật thể bằng
nhiều cách khác nhau: từ di chuyển đến đốt cháy hay va đập đều thể
hiện rất ấn tượng. Hay như trong medal of honor: airborne, một
điểm tiến bộ là phát đạn sượt qua đầu có thể “mượn tạm” cái mũ
của kẻ thù. Giờ đây cái nón không còn là một phần dính liền của vật
thể hình ảnh, mà nó có thể dễ dàng tương tác được. Cách giải quyết
vật lý trong stranglehold lại cho thấy tính linh động của unreal 3 khi
có đến ba engine vật lý khác nhau được sử dụng: physx của ageia
được tích hợp mặc định, havok để xử lý các tương tác vật lý thông
thường, massived được midway dựng riêng phục vụ cho ý đồ phá
hủy hàng loạt của trò chơi. Giờ đây, những vật cản như cột bê tông,
thùng gỗ, vách tường... Không còn là nơi trú ẩn an toàn cho các
game thủ. Tất cả đều dễ dàng bị thổi tung mất dạng.
2.3.1.3. Phủ vân bề mặt tạo nên những mô hình cực kỳ
chi tiết.
Dễ thấy nhất là qua gears of war, khi mô hình các nhân vật vô
cùng sống động đến từng đường nét khuôn mặt.
Bioshock cũng không hề kém cạnh khi thể hiện những big daddy

nặng nề và chậm chạp, chi tiết đến từng chỗ rỉ sét trên bộ đồ lặn cũ
kỹ.
2.3.1.4. Snap-to-cover
Một chức năng khá lý thú của phần nhiều các game sử dụng
unreal 3 là “snap-to-cover” (khả năng ẩn nấp). Khi ẩn nấp, góc nhìn
hiện tại được chuyển sang góc nhìn người thứ ba. Lúc này, người
14
chơi có tầm quan sát bao quát hơn và có thể thấy được độ chi tiết
của nhân vật mình điều khiển.
Bên cạnh những ưu điểm được thể hiện, các game sử dụng
unreal 3 vẫn còn tồn tại khá nhiều khuyết điểm. Việc phủ các vân bề
mặt (texture) chi tiết cũng là một “con dao hai lưỡi” khiến cho việc
xử lý trở nên nặng nề hơn. Với một số game như bioshock và medal
of honor: airborne, tốc độ nạp các texture không kịp sẽ gây ra hiện
tượng mất vân bề mặt khi vừa nạp màn xong. Hay tệ hơn nữa, trong
bioshock có thể gây ra lỗi “kẹt” các texture, làm mất màu hoàn toàn
hoặc một bộ phận nào đó của màn chơi.
Trong khi đó, với cơ chế vật lý “hạng nặng”, các game cũng
đem lại những bất hợp lý. Với rainbow six vegas, các mô hình nhân
vật đều có thể tương tác vật lý được, tuy nhiên, sau khi bị bắn hạ thì
lại mất hoàn toàn yếu tố vật lý, có thể nằm vắt vẻo... Xuyên qua vật
thể! Đối với medal of honor: airborne thì mọi việc còn tồi tệ hơn
nữa: các mô hình nhân vật rất dễ biến dạng một cách kỳ quái. Chẳng
hạn, ở màn market garden thường xuất hiện các “quái vật cổ dài”,
theo nguyên tắc vật lý của engine thì phần đầu khi bị bắn trúng phải
đứt rời ra, nhưng giờ đây “dính lại”, tạo thành một hình ảnh hết sức
khôi hài. Hay một hiện tượng khác là việc các mô hình nhân vật bị
“thổi bay” một cách thái quá dưới sức ép của vụ nổ. Dường như các
nhân viên của ea đã “giảm cân” tối đa cho các nhân vật của mình,
khiến chúng nhẹ tênh như giấy vậy.

Ánh sáng là một ưu thế của unreal 3 nhưng cũng lại mang
khuyết điểm trong việc đổ bóng. Nếu một người lính trong medal of
honor: airborne đứng gần một bức tường, thì lập tức sẽ xuất hiện hai
bóng trên bức tường và... Phía bên kia tường. Ngay cả trong
bioshock cũng gặp phải lỗi tương tự.
Một nền tảng tốt...
... Nhưng cần phải trau chuốt. Đặc điểm của các game thể hiện
trên nền unreal 3 là có khá nhiều lỗi vụn vặt giống nhau như lỗi đổ
bóng, lỗi thể hiện vật lý... Cộng với một cơ chế cồng kềnh bất hợp
lý làm cho cấu hình đòi hỏi của các game khá nặng. Tuy nhiên, thể
hiện hiện tại của unreal 3 trên các game đã phát hành là rất ấn
tượng! Sản phẩm đã tạo ra một môi trường làm việc rất tốt, tích hợp
15
đầy đủ các tính năng mạnh mẽ để những nhà phát triển tự do phát
huy ý tưởng sáng tạo của mình. Trong tương lai, có thể epic sẽ cho
ra đời hệ thống chỉnh sửa unreal tournament 3 như đã từng làm với
phiên bản 2004, cho phép game thủ can thiệp sâu vào nội dung của
game.
Với những ưu điểm nổi trội như vậy, sẽ không có gì đáng ngạc
nhiên khi engine unreal 3 ngày càng trở nên thu hút sự quan tâm của
giới phát triển trò chơi và ngày càng có nhiều game “đỉnh” ra mắt
cộng đồng game thủ. Có thể ví von engine này giống như những
nguyên liệu tốt, rất cần thiết để chế biến ra một món ăn ngon, mặc
dù các đầu bếp tài hoa phải thật khéo tay để nhặt cho kỳ hết những
hạt sạn còn tồn tại...
Cạnh tranh với engine unreal 3 hiện nay trong thể loại fps là
vô số các engine của nhiều game khác nhau. Tuy nhiên, để được gọi
là bộ engine “hoàn chỉnh” – tích hợp đầy đủ tính năng như unreal 3
thì chỉ đếm được vài con số trên đầu ngón tay. Có thể kể vài engine
tiêu biểu như:

2.3.2. Source engine
Ra đời vào 10/2004, được phát triển bởi valve corporation dựa
trên engine goldsrc cũ (engine này được xem là một bản “mod”
(hiệu chỉnh) từ engine quake của id software). Một đối thủ khá khó
chịu của unreal 3. Nếu nói về những điểm mạnh của source thì có
thể kể ra vô số. Đầu tiên, một sự thật không ai có thể phủ nhận là
khả năng hỗ trợ vật lý cực tốt (ví dụ cụ thể nhất là khẩu súng trọng
lực của gordon freeman trong half-life 2), hỗ trợ hiệu ứng lip-sync
cực chuẩn. Kế đến là cấu hình yêu cầu đối với những tựa game sử
dụng source khá nhẹ, điều kiện cần cho các game thi đấu. Thứ ba,
source rất dễ nâng cấp và sửa lỗi với nhiều tính năng, hiệu ứng mới
ở từng phiên bản một. Đồng thời, khả năng hỗ trợ cộng đồng mod
thuộc hàng thượng thừa. Tuy nhiên, về khoản cháy nổ, máu me thì
source thật khó mà so được với unreal 3!
2.3.3. Id tech engine
16
Id tech có nhiều phiên bản. Bắt đầu từ phiên bản đầu tiên có
tên gọi là doom engine, xuất hiện cùng lúc với trò chơi doom nổi
tiếng. Sau đó, id tech 2 ra đời với tên quake engine, tất nhiên kèm
theo đó là trò chơi quake của hãng. Tiếp theo là id tech 3 xuất hiện
trong quake iii arena. Vào thời bấy giờ thì id tech 3 được xem là đối
thủ trực tiếp với unreal engine. Engine này cũng được sử dụng để
thực hiện nhiều game khá nổi tiếng, trong đó có call of duty, medal
of honor: allied assault. Id tech 4 (hay doom 3 engine) xuất hiện
đồng thời với doom iii, mang nhiều tính năng và hiệu ứng đặc biệt,
nổi trội như: ánh sáng, đổ bóng hoàn hảo, vân bề mặt với độ chi tiết
cao, hỗ trợ chơi mạng tốt (điển hình là trò chơi quake iv). Tuy
nhiên, engine chỉ thể hiện tốt những cảnh trong nhà, còn ngoại cảnh
thì kém hơn rất nhiều. Hiện nay, id tech 5 vẫn đang được id
software phát triển, hứa hẹn nhiều cải tiến mới, và đặc biệt là hỗ trợ

directx 10.
2.3.4. Cryengine
Bắt đầu từ một bản demo quảng cáo công nghệ cho card màn
hình nvidia, cryengine được crytek phát triển lên thành engine cho
tựa game far cry của hãng. Hiện nay, phiên bản cryengine 2 đang
được crytek phát triển và dùng trong trò chơi crysis sắp ra mắt của
họ. Qua nhiều đoạn trailer, hình ảnh ban đầu thì cryengine 2 thực sự
tạo ấn tượng với người xem thông qua những hiệu ứng hình ảnh
đẹp, với độ chi tiết sắc nét. Tuy vậy, trong phiên bản thử nghiệm
beta chơi mạng mới tung ra gần đây của crysis, theo nhận xét của
nhiều người thì game đòi hỏi cấu hình quá nặng mà hiệu quả hình
ảnh đem lại cũng không có nhiều ấn tượng, vô hình chung đã “giết
chết” mục chơi mạng của game.
3. Lý thuyết về game engine và 3d engine
4. Lý thuyết về game engine và 3d engine
Cùng với sự du nhập của hàng loạt ngành nghề liên quan,
ngành công nghiệp phát triển game (game development) đang thực
sự tạo nên một cơn “sốt” trong giới yêu game thích sáng tạo.
Nói rằng game development mới chỉ được các bạn trẻ yêu
17
game việt nam biết đến trong vài ba năm gần đây thì chưa hoàn toàn
chính xác, vì thực ra đã có không ít người nghiên cứu và tìm hiểu về
lĩnh vực này từ trước năm 2002. Chỉ có điều lúc bấy giờ định kiến
về tác hại của game rất nặng nề và nền tảng công nghệ thông tin –
viễn thông trong nước còn non kém. Cơ hội tiếp xúc với internet
của đa phần giới trẻ còn là cái gì đó quá “xa xỉ” và mới lạ, nên tất cả
vẫn chỉ dừng lại ở con số 0 tròn trĩnh.
Nhưng chỉ trong vài năm gần đây, từ khi game online thống
lĩnh thị trường game trong nước và kéo theo nền công nghiệp game
phát triển không ngừng, thì số lượng người chơi game ngày càng

tăng, sự am hiểu về game ngày càng sâu sắc. Và cùng với sự phát
triển nhanh chóng của mạng lưới internet, những kiến thức về phát
triển game du nhập vào việt nam là một tất yếu.
Phát triển game, nói một cách đơn giản là quá trình tạo ra trò
chơi ngay lập tức thu hút sự quan tâm của một phần không nhỏ các
bạn trẻ thích tìm hiểu. Những diễn đàn game bắt đầu thành lập
những khu thảo luận nhỏ như box game programming của
gamevn.com, game thủ v..vv. Tất nhiên, ban đầu những bài viết
xoay quanh vấn đề này còn lẻ tẻ, nhưng càng ngày số lượng người
tham gia càng đông. Và nếu như bạn đã từng theo dõi quá trình ấy,
thì chắc chắn sẽ đồng ý với tôi rằng sự du nhập của 2 game engine
rpg maker và game maker chính là những tác nhân đầu tiên thổi
bùng lên niềm đam mê tạo game của các game thủ.
Đặc điểm của các game engine này là chúng rất đơn giản, sử
dụng công nghệ 2d và hầu như ai cũng có thể dễ dàng tiếp cận sau
một thời gian ngắn tìm hiểu. Chính vì vậy, không lâu sau đó, hàng
loạt “tác phẩm” đầu tay của những bạn trẻ không chuyên cũng đã
xuất hiện trên mạng internet.
Không dừng lại ở những sản phẩm 2d đơn giản, cộng đồng
phát triển game việt nam tiếp tục đi những bước tiếp theo, game 3d
“made in vn”. Mặc dù nếu so sánh với những tựa game thương mại
trên thế giới thì còn quá khập khiễng,
Game engine thực chất chỉ là 1 tập các các thư viện hàm độc
lập ( hay không độc lập ) . Các thư viện này thường đảm nhận 1 vai
18
trò khác nhau về mặt chức năng nhằm đáp ứng 1 tính năng ứng
dụng game yêu cầu. Ví dụ, bạn nghĩ trong đầu, mình muốn làm 1
game 3d, có âm thanh, hiệu ứng vật lý, hỗ trợ chơi qua mạng. Ở
mức cực kỳ đơn giản mỗi chức năng đó bạn sẽ viết 1 hay 2 lớp để
xử lý chúng ( ví dụ crenderer, csound, cphysic. Cnetwork v.v.... ).

Nhưng thường thì nếu chỉ 1 vài tính năng sẽ không thể nào đáp ứng
nổi yêu cầu ngày càng mở rộng của trò chơi, bạn phải phát triển 1
chức năng thành nhiều lớp, hàm. Khi khối lượng 1 chức năng khá
lớn người ta thường gói lại thành những bộ thư viện (.lib hay .dll)
để dễ sử dụng ( lúc này bạn có renderer.dll, sound.dll, physic.dll,
network.dll ). Và cứ như thế mở rộng ra 1 chức năng có thể bao
gồm nhiều dll ( ví dụ renderer.dll -> renderer_dx9.dll,
renderer_dx10.dll, renderer_gl.dll v.v... ), mở rộng bao nhiêu dll thì
sẽ phụ thuộc và người thiết kế và cấu trúc của thư viện. Các thư
viện này thường được viết hết sức độc lập với game ( để có thể
dùng để viết nhiều game khác nhau, ví dụ engine source dùng để
viết hl2, vampire v.v... ).
Mặt khác 1 game dùng khá nhiều loại dữ liệu ( dữ liệu mesh ,
dữ liệu va chạm vật lý, dữ liệu terrain, dữ liệu các vật thể trong thế
giới 3d v.v... ), người ta không thể dùng tay để tạo ra tất cả các loại
dữ liệu này được, nên thường họ sẽ phát triển các tool để sử dụng 1
cách trực quan hơn. Ví dụ : mô hình 3d đã có tool 3ds max xuất ra
nhưng engine ko đọc được file .3ds -> người ta phải viết 1 tool đề
convert định dạng file .3ds sang định dạng file mà game sử dụng, cụ
thằng doom 3 có tool chuyển từ file maya .mb sang .md5mesh
hay .md5anim
Thông thường thuật ngữ game engine dùng để chỉ tập hợp tất
cả các bộ thư viện + các tool này. Tùy vào game engine mà hỗ trợ
các thư viện và các tool khác nhau, có thể hỗ trợ cái này mà không
hỗ trợ cái kia v.v... Còn các khái niệm về 3d engine hay physic
engine là để ám chỉ các bộ thư viện con của game engine. Thông
thường 1 hãng game khó lòng sản xuất được 1 game engine có toàn
bộ tất cả tính năng ( 3d, sound, vật lý v.v.. ) nên họ thường mua lại
các thư viện sẳn có của hãng thứ 3 ( ví dụ unreal engine mua thư
viện vật lý novodex để hỗ trợ tính năng vật lý cho unreal game

19
engine ). Nói cách khác 3d engine hay physic engine mà bạn thường
nghe là các thư viện con của game engine ( ví dụ thằng ogre chỉ
được coi là 3d engine vì nó thiếu các tính năng khác như vật lý,
network, sound, và cái thiếu nhất là các tool hỗ trợ ... ).
4.1.1. Game engine gồm các thành phần cơ bản sau:
• Hệ thống toán học ( math system ).
• Hệ thống xử lý tập tin dữ liệu ( file system).
• Hệ thống hiển thị đồ hoạ ( render system).
• Hệ thống quản lý diễn hoạt ( animation system ).
• Hệ thống xử lý nhập và xuất ( input and output system).
• Hệ thống xử lý các tương tác vật lý ( physics system ).
• Hệ thống xử lý mạng ( network system ).
• Hệ thống tạo hiệu ứng khác như khói lửa, âm thanh. … (effect
system ).
Trong các game khác nhau thì vai trò của các thành phần trên
sẽ khác nhau. Thông thường xây dựng game ta chỉ cần một sổ trong
các thành phần trên mà thôi. Việc xây dựng và quản lý tất cả các
thành phần trên của một game engine đòi hỏi một lượng lớn thời
gian cũng như công sức và đôi khi đòi hỏi nhiều kỹ thuật và kiến
thức của nhiều lĩnh vực khác nhau.
3d engine bao gồm một tập các hệ thống trong game engine
nhằm giải quyết các vấn đề chính của đồ hoạ 3d engine nên em tập
trung vào xây dựng hệ thống hiển thị và hệ thống quản lý tập tin.
Do 3d engine là một thành phần đặc trưng của game engine
nên chúng ta sẽ tìm hiểu về 3d engine thông qua việc tìm hiểu về
game engine.
4.1.2. Mối quan hệ giữa game engine và game
20
Game engine chính là thành phần cốt lõi làm nền móng xây

dựng nên game. Sự khác biệt giữa game engine và bản thân game
tương tự như sự khác biệt giữa động cơ và chiếc xe. Chúng ta có thể
đem động cơ ra khỏi xe, chỉnh sửa và dùng lại. Một game engine có
thể được xem như là một phần không phụ thuộc vào game, nó cũng
có thể được thay đổi độc lập với game mà không làm thay đổi cấu
trúc logic của game.
4.1.3. Phân loại game engine
4.1.4. isometric engine
Đây là game engine dùng trong các trò chơi 2d. Các game
engine này hiện nay có một số phần là 2d nhưng một số phần là 3d
và có thể trong thời gian sắp đến sẽ chuyển hẳn sang 3d. Lý do
chính của việc chuyển đổi sang 3d là để tận dụng các tính năng về
ánh sáng (light ) và đổ bóng (shadơ ) lên các đối tượng 2d.
Các game engine này thường được sử dụng trong các
Game chiến lược ( strategy ) và trong các thể loại game nhập
vai ( rpg: role game play genre). Một số game được xây dựng trên
isometric engine có thể kể đến như baldur’s gate 2, diablo 2 và
warlords battle cry 2.
Isometric engine không phải là một game engine tốt cho việc
xây dựng các game chuyên về đồ họa 3d engine mà chỉ có một số
chức năng 3d.
21
4.1.5. 3d fps ( first person shooter ) engine
Đây là game engine dùng nhiều nhất trong các 3d game hiện
nay. Với sự phát triển vượt bậc về công nghệ game trong vài thập
niên gần đây thì người dùng mong muốn có những game bắt mắt
nhất và loại game engine này đã đáp ứng được nhu cầu đó.
Một số trong rất nhiều game được xây dựng trên các 3d fps
engine như: doom, quake. Half life, counter strike, unreal, duke
nuke’m, deusex, … 3d fps engine đã tạo ra những thay đổi lớn lao

trong các engine xây dựng thực tại ảo.
Các game engine này thông thường còn kèm theo các công cụ
để tạo ra các sản phẩm mang tính nghệ thuật và tương tác cao. Các
ứng dụng tạo ra các mô hình 3d nổi tiếng như 3dsmax, maya và
softimage đều có thể kết xuất (export) kết quả vào các game engine
này. Các đặc trưng cơ bản của các game engine này là nó hỗ trợ
nhiều chức năng như tô bóng điểm ( pixel shader ), quản lý diễn
hoạt (animation), mô phỏng vật lý, mô phỏng chuyển động của cậht
nhỏ ( như bụi, lửa. Khói), mô phỏng chất lỏng, áo quần, và cáchiệu
ứngkhác mà ta hiếm khi được tấy ở các 2d engine
4.1.6. mmog ( massive multiplayer online game )
engine
Sự khác biệt chính giữa các game engine đã đề cập và mmog
engine là game engine này dựa trên việc lập trình trên mạng và quản
lý dữ liệu thông qua mạng. Các game xây dựng dựa trên mmog
engine thường chứa một cơ sở dữ liệu lớn và thực hiện trên một
mạng phân tán và xử lý cho một số lượng lớn người chơi trong cùng
lúc. Cũng chính vì vậy mà sự tối ưu trong việc sử dụng băng thông
mạng hết sức quan trọng và có thể nói là yếu tố sống còn của mmog
engine. Việc nén dữ liệu và chọn lọc dữ liệu truyền trên mạng tốt có
thể tiết kiệm được rất nhiều chi phí.
Hầu hết các mmog engine hiện nay đều tương thích và được
tích hợp với một fps engine. Nhờ vậy ngoài các yếu tố liên quan đến
mạng thì loại engine này có các chức năng đáp ứng được các ứng
22
dụng thực tại ảo và các yếu tố nghệ thuật được đảm bảo và đây là
một yếu tố quan trọng để các người chơi hứng thú ngồi hàng giờ để
chơi các game mạng.
Một số game được xây dựng trên mmog engine có thể kể đến
như: ultima online ever ouest asheron’s call và anarchy online.

4.1.7. Một số game engine hiện nay
Ngày nay trên thế giới có rất nhiều game engine. Mỗi game
engine được tạo ra với những mục đích, đặc tính và độ phứctạp
khác nhau và do đó sẽ rất khó khăn cho người dùng trong việc chọn
ra một game engine cho chính mình sử dụng. Hầu hết các game
engine ngày nay cung cấp tốt các tính năng cơ bản của một game
engine và tuỳ thuộc vào nhu cầu cũng như khả năng mà chúng ta
chọn ta một game engine phù hợp cho ứng dụng của mình. Một số
game engine tiêu biểu có thể kể đến như: unreal-$10000, quake2-
$10000, quake3-$250000, torque-$100, 3d game studio-$80,….
Ta có thể có một sự so sánh sơ bộ giữa các game engine về các
chức năng mà chúng cung cấp cùng với giá tiền để có chúng qua
bảng tóm tắt sau:
Game
Engine
Dark
Basi
c
Quak
e
1
Unreal Halflif
e
Genesi
s
Nebul
a
Quake
2
Hệ thống

culling
Bsp Bsp Bsp Bsp Bsp - Bsp
Mipmap Có Có Có Có Có Có Có
Map môi
trường
Cubi
c
Có Có Có Có Có Có
Lightma
ps
Có Có Có Có Có - Có
Tô bóng
động
Có - Có - Có - -
Nội suy - - Có - - Có Có
23
mesh
Terrain Có - Có - - Có -
Hệ thống
particle
Có Có Có Có Có Có Có
Mirrors Có - Có - Có - Có
Các mặt
cong
- - Có - Có - -
Đổ bóng Có - - - - Có -
Diễn
hoạt
khung
xương

Có - Có Có Có Có -
Nhiều
người
chơi
Có Có Có Có - Có Có
Nhiều
cảnh
game
- - Có - - - Có
Engine
vật lý
- - - - - - -
Ngôn
ngữ kịch
bản
- Basic C Basic C C
Giá cả $100 $10.00
0
$10.00
0
$10.00
0

Game
Engine
Game
studio
Quak
e
3

Lich_
tech 2
Vulpin
e
Torqu
e
Crysta
l space
Power
render
Hệ thống
culling
Bsp Bsp Portal Portal Bsp Bsp C ó
Mipmap Có Có Có Có Có Có Có
Map môi
trường
Có Có Có Có Có Có Có
24
Lightmaps Có Có Có Có Có Có Có
Tô bóng
động
Có - Có Có Có Có Có
Nội suy
mesh
Có Có Có Có Có - Có
Terrain Có - Có Có - Có -
Hệ thống
particle
Có Có Có Có Có - Có
Mirrors Có Có Có Có Có

Các mặt
cong
- Có Có Có - Có Có
Đổ bóng - Có Có Có - Có
Diễn hoạt
khung
xương
- - Có Có Có - Có
Nhiều
người
chơi
Có Có Có Có Có - Có
Nhiều
cảnh game
Dev Có Có Có Có - Có
Engine vật

- - Có Có - -
Ngôn ngữ
kịch bản
Ltc C++ Java C++ C/pyth Pytho
n
C++
Giá cả $80 $250.
000
$75.00
0
$100 $500 $5.500
Bảng 1.1 so sánh một số game engine
25

CHƯƠNG 3 VERTEX SHADER VÀ PIXEL SHADER
3.1. tổng quát
Chưa có khi nào mà phần cứng dành cho đồ hoạ 3D phát triển như
hiện nay. Phần cứng hiện nay phát triển dựa theo tiêu chí nhanh hơn, mạnh
hơn, đẹp hơn. Dưới sự trợ giúp của các card đồ hoạ 3D tiên tiến, danh giới
giữa ảo và thực ngày càng trở lên vô cùng mong manh. Với sự ra đời của
công nghệ Vertex Shader và Pixel Shader trên phần cứng, công nghiệp làm
Game đã có bước tiến nhẩy vọt chưa từng có, cho ra đời hàng loạt Game có
chất lượng đồ hoạ y như thật. Vậy đâu là điều làm lên thế mạnh của công
nghệ này, làm cách nào mà ta có thể ứng dụng đựơc nó, câu hỏi đó sẽ được
giải đáp trong chương này. Không đi sâu vào các khía cạnh khác, nội dung
của chương này chủ yếu đề cập tới khía cạnh kỹ thuật và lý thuyết của công
nghệ này.
Vì công nghệ Vertex Shader và Pixel Shader không phải là công nghệ
độc lập với môi trường do có sự phụ thuộc vào 3D API được sử dụng nên
trong toàn bộ báo cáo này mọi vấn đề liên quan đến Shader đều được đề cập
trên môi trường 3D API direct3d của Microsoft( phiên bản 9.0c).
3.2. Qui trình xử lý đồ hoạ (Graphic Pipeline)
Công nghệ Shaders gồm 2 thành phần cơ bản là: Vertex Shader ( còn
được gọi là Vertex Program) và Pixel Shader (Hay Fragment Program) là
công nghệ được tích hợp sẵn trên phần cứng cho phép người lập trình 3D
hoàn toàn làm chủ quy trình xử lý dữ liệu và hình ảnh trên phần cứng
( Graphic Pipeline). Trong Direct3D, Vertex Shader và Pixel Shader được
gọi chung là Programmable Pipeline để có thể phân biệt với Fixed function
Pipeline. Cần phải nói thêm Fixed function Pipeline là quy trình xử lý dữ
liệu và hình ảnh 3D được cung cấp sẵn của Direct3D, quy trình này theo một
thuật toán dựng hình cố định đối với mọi loại dữ liệu 3D đầu vào. Hình vẽ
sau đây minh hoạ cho quá trình xử lý đồ hoạ ( Graphic Pipeline) của
Direct3D.
26

Sơ đồ trên gói gọn toàn bộ quy trình xử lý 3D trên phần cứng của
phần cứng direct3d, toàn bộ quy trình này được chia làm nhiều tầng xử lý
hoàn toàn riêng biệt. Như chúng ta thấy trên sơ đồ toàn bộ quy trình xử lý
3D bao gồm:
Xử lý dữ liệu đỉnh ( Vertex processing). Biến đổi Vertex từ không gian
vật thể ( Model space ) sang không gian chiếu ( Projection space).
Xử lý đối tượng cơ sở ( Primitive Processing ). Chuyển đổi dữ liệu
vertex trong không gian chiếu thành các dữ liệu cơ sở.
Quá trình xử lý điểm ảnh ( Pixel Processing). Chuyển đổi dữ liệu cơ
sở thành các điểm ảnh trên màn hình ( Rendered Pixels).
Trước khi đi xa hơn ta cần nắm bắt 1 số khái niệm hay thuật ngữ
chuyên môn dùng trong phần này:
Fixed Function Pipeline. Quy trình xử lý đồ hoạ cố định được đưa ra
bởi Direct3D. Qui trình này sử dụng nhiều thuật toán 3D xử lý cố định trên
các dữ liệu vào ( các thuật toán này là không thể thay đổi).
Programmanle Pipeline. Qui trình xử lý đồ hoạ có sử dụng Vertex
Shader
Graphi Pipeline. Qui trình xử lý đồ hoạ 3D nói chung ( bao gồm luôn
cả Fixed Function Pipeline và Programmable Pipeline).
Vertex. Dữ liệu đỉnh 3D. Dữ liệu trong 1 đỉnh gồm nhiều thành phần
như toạ độ vị trí (position), pháp tuyến (normal), toạ độ texrure (texture
coordinate), màu diffuse (diffuse color ), màu phnr chiếu (specular color)…
Pixel. Điểm ảnh trên màn hình
Primitive. Đối tượng đồ hoạ cơ sở như tam giác, đường thảng, hình
tròn, hình vuông…
HLSL. – High Level Shader Langguage. Ngôn ngữ Shaders cấp cao
do Microsoft phát triển tích hợp trong phiên bản Dỉect3D 9.0.
3.3. Vertex Shader
Vertex Shader là chương trình có vai trò xử lý dữ liệu vertex khi được
thi hành. Vertex Shader trên Dỉect3D chủ yếu viết bằng hợp nhữ và HLSL

(được phát triển kể từ phiên bản Direct3D 9.0 ). Vertex Shader là công nghệ
phát triển theo các thế hệ phần cứng do đó nó có rất nhiều phiên bản khác
nhau, các phiên bản cao hơn không thể chạy trên các thế hệ phần cứng cữ
nhưng ngược lại thì được. Các phiên bản Vertex Shader hiện nay gồm có
vs_1_1, vs_2_0, vs_2_x, vs_3_0.
Vertex Shader và Fixed Function sẽ loại trừ lẫn nhau trong khi thi
hành, do đó ta phải nắm đwocj quy trình xử lý vertex của Fixed Function
trước khi có thể tự viết cho mình một Vertex Shader như ý muốn.
27

×