3.3.3.Cấu trúc của một chương trìnhVertex Sgader bằng hợp ngữ

Một phần của tài liệu Nghiên cứu và xây dựng thử nghiệm với 3d engine (Trang 28 - 30)

bằng hợp ngữ

Vertex Shader nguyín thuỷe đựoc xđy dựng bằng hợp ngữ. Câc ngôn ngữ cấp cao hơn dănh cho Vertex Shader chỉ xuất hiện sau năy như HLSL ( chỉ có trong Direct3D 9.0 trở lín) hay GLSL (được phât triển trong phiín bản opengl 2.0). Phần năy sễ đề cập tới cấu trúc 1 chương trình Vertex Shader viết bằng hợp ngữ, câc ngôn ngư cấp cao sẽ được trình băy ở cuối chương năy.

Một chương trình Vertex Shader viết bằng hợp ngữ căn bản đựợc chia thănh câc phần sau đđy:

Chỉ thị phiín bản ( Version Instruction). Lă thănh phần đầu tiín trong chương trình, nó cho biết phiín bản Vertex shader được biín dịch thănh. Trong ví dụ trín chương trình sẽ chạy được trín phần cứng hỗ trợ vs_1_1 trở lín.

Ghi chú ( Comments). Được dùng để ghi câc ghi chú trong chương trình như ý nghĩa của dữ liệu chứa trong thanh ghi… ghi chú được bắt đầu bằng (//) hay (;) cho ghi chú 1 dòng vă ( /* ….*/) cho ghi chú nhiều dòng.

Câc hằng thanh ghi (constants). Câc hằng được định nghĩa sau từ khoâ def. Câc hằng thanh ghi có thể chứa tới 4 giâ trị cho mỗi thanh ghi. Như ở ví dụ trín thanh ghi c8được gân giả lă ( 0,1,2,3). Câc hằng thanh ghi còn có thể đựơc gân giâ trị bín trong chương trình chính thông qua phương thức

idirect3ddevice9::setvertexshaderconsstantx.

Định nghĩa dữ liệu trong thanh ghi đầu văo ( input Register

Declarations). Câc thanh ghi dữliệu văo như v0,v1… cần phải được định nghĩa dữ liệu trước khi sử dụng. Việc định nghĩa năy sẽ giúp Direct3D ânh xạ được câc dữ liệu thănh phần trong Vertex trín bộ nhớ văo đúng câc thanh ghi tương ứng. Trong ví dụ trín, thanh ghi v0 sẽ chứa toạ độ vị trí, vă v1 sẽ chứa toạ độ texture của vertex

Câc vi lệnh (Instructions). Phần cuối cùng của 1 chương trình Vertex Shader lă câc vi lệnh hợp ngữ. Mọi chương trình Vertex Shader đều phải xuất giâ trị ra ít nhất lă văo thanh ghi vị trí opos. Trong cí dụ trín chương

trình xuất văo 2 thanh ghi lă thanh ghi vị trí opos vă thanh ghi toạ độ Texture ot0.

3.4. Pixel Shader

Pixel Shader lă chương trình tính toân vă xử lý mău trín 1 hay nhiều điểm ảnh. Pixel Shader sẽ được thực thi 1 lần cho mỗi điểm ảnh được dựng lín măn hình từ dữ liệu vertex vì thế pixel Shader khi chạy sẽ tốn nhiều thời gian hơn Vertex Shader ( chỉ xử lý 1 lần cho mỗi vertex). Pixel Shader có thể được viết bằng hợp ngữ hay HLSL. Câc phiín bản hiện nay của Pixel Shader gồm có ps_1_1,ps_1_2,ps_1_3. Ps_1_4, ps_2_0,ps_2_x vă cuối cùng lă ps_3_0.

Cũng giống như Vertex Shader, Poxel Shader khi thi hănh sẽ loại trừ với Fixed Function, do đố tìm hiều qui trình xử lý pixel của Fixed Function lă điều cần thiết.

Một phần của tài liệu Nghiên cứu và xây dựng thử nghiệm với 3d engine (Trang 28 - 30)