SHADER LÀ GÌ

      61

Fragment shader là gì

Ở chương trước, tôi đã thể hiện shader tương tự với máy bộ in của Gutenberg nhưng mang đến ngành đồ dùng hoạ. Lý do ? Và quan trọng hơn: shader là gì ?

*

Nếu bạn đã từng vẽ trên trang bị tính, chúng ta biết rằng để có được hình bản thân muốn, bạn phải vẽ hình tròn, hình chữ nhật rồi vài con đường thẳng, vài ba hình tam giác. Quy trình đó không không giống gì câu hỏi viết từng chữ một - đó là một trong loạt các chỉ dẫn để máy vi tính thực hiện lần lượt.

Bạn đang xem: Shader là gì

Shader cũng là 1 trong tập hợp các chỉ dẫn, mà lại các hướng dẫn đó sẽ được thực thi cùng lúc đến từng điểm hình ảnh trên màn hình. Điều đó có nghĩa là code chúng ta viết đề nghị xử lý khác biệt tuỳ theo vị trí của điểm ảnh trên màn hình. Y như máy rập chữ, lịch trình của các bạn sẽ hoạt đụng như một hàm dìm vị trí của điểm hình ảnh rồi trả về color của điểm hình ảnh đó. Công tác đó chạy khôn cùng rất nhanh.

*

Làm cách nào shader lại chạy nhanh tới vậy ?

Để trả lời câu hỏi này, tôi xin ra mắt với chúng ta sự kỳ diệu của việc xử lý tuy nhiên song.

Hãy tưởng tượng CPU là một trong dây chuyền công nghiệp lớn, và đầy đủ tác vụ đi qua dây chuyền là một trong khâu. Tất cả vài khâu béo phì hơn những khâu khác, tức là chúng đề nghị nhiều thời hạn và tích điện hơn nhằm xử lý. Ta nói chúng đề nghị nhiều năng lượng xử lý hơn. Loài kiến trúc của máy tính khiến cho mỗi khâu phải triển khai tuần tự; khâu này kết thúc rồi bắt đầu đến khâu tiếp theo. Lắp thêm tính tiến bộ thường có tới 4 cỗ xử lý tựa như như 4 dây chuyền sản xuất này, lần lượt tiến hành từng tác vụ nhỏ. Mỗi dây chuyền nhỏ tuổi trong kia gọi là một trong những thread.

*

Các trò chơi điện tử và các ứng dụng thiết bị hoạ đề nghị nhiều năng lượng xử lý hơn hẳn các ứng dụng khác. Vì các nội dung thiết bị hoạ của chúng yêu mong thực hiện rất nhiều phép toán, cho từng điểm hình ảnh một. Mỗi điểm ảnh trên screen đều phải được xem đến, còn trong số trò chơi 3d thì cả các vật thể lẫn các góc camera cũng phải được xem luôn.

Quay quay trở lại phép đối chiếu về dây chuyền và tác vụ. Mỗi điểm hình ảnh trên màn hình hiển thị đại diện cho một tác vụ nhỏ. Bản thân từng tác vụ chưa phải là sự việc lớn với CPU, tuy nhiên (vấn đề ở đây là) các tác vụ bé xíu đó lại phải được tiến hành cho từng điểm ảnh trên cả màn hình. Có nghĩa là trên màn hình hiển thị cũ có độ sắc nét 800x600, tất cả tới 480.000 điểm ảnh cần đề nghị được xử lý mỗi size hình, tương tự với 14.400.000 phép tính từng giây! Đúng thế! Đó chính là điều khiến bộ vi xử trí bị quá tải. Còn ở screen retina thời văn minh có độ phân giải 2880x1800 hiển thị 60 khung người một giây, thì số phép tính mỗi giây lên đến 311.040.000. Bằng phương pháp nào mà các kỹ sư đồ gia dụng hoạ giải quyết và xử lý được vụ việc này ?

*

Đây là lúc nhưng xử lý song song đổi thay một phương án tốt. Nuốm vì buộc phải trang bị vài bộ vi cách xử trí to phệ và to gan mẽ, hoặc các dây chuyền, sẽ là thông minh hơn nếu để cho hàng loạt các bộ vi xử lý bé bỏng chạy song song. Với đó đó là việc mà các bộ cách xử lý đồ hoạ (GPU) làm.

Xem thêm: Xem Phim Cậu Bé Naruto Shippuuden Tập 93 Vietsub, Naruto Htv Vtv3 Tập 93

*

Hình dung sản phẩm loạt các bộ vi xử lý ốm như những dây chuyền được xếp thành sản phẩm hình chữ nhật, còn tài liệu của từng điểm hình ảnh là một quả bóng bàn. Nhét 14.400.000 trái bóng bàn trong một giây vào một ống riêng biệt sẽ vô cùng khó. Nhưng một nhóm nhiều ống xếp thành mặt hàng 800x600 thì có thể đưa 480.000 quả bóng bàn chui qua cho tới 30 lần một giây một cách dễ dàng. Độ phân giải cao hơn cũng như - hartware càng có năng lượng xử lý song song thì khối lượng công việc mà nó rất có thể giải quyết lại khủng hơn.

Một "siêu năng lực" khác của GPU là các hàm Toán học tập được về tối ưu bằng phần cứng, nên những phép toán phức tạp sẽ được cách xử lý trực tiếp trên hartware thay vị phần mềm. Điều đó tức là các phép tính lượng giác và ma trận sẽ được tính rất là nhanh - như năng lượng điện luôn.

GLSL là gì?

GLSL là viết tắt của OpenGL Shading Language, là một trong những quy chuẩn chỉnh để viết những shader nhưng mà ta sẽ dùng ở các chương tới. Có tương đối nhiều loại shader phụ thuộc vào vào phần cứng cùng hệ điều hành. Ở đây họ sẽ sử dụng quy chuẩn củaKhronos Group. Phát âm về lịch sử hào hùng hình thành của OpenGL để giúp đỡ ích trong việc vượt qua được một vài rào cản kỳ dị của nó, chính vì vậy tôi giới thiệu quyển sách này: OpenGL là

Shader nổi tiếng khó nhằn, sao lại vậy ?

Như chú Ben nói "Quyền lực càng cao, trách nhiệm càng lớn", cùng việc giám sát song tuy nhiên cũng vâng lệnh quy tắc này; thiết kế kiến trúc rất mạnh mẽ của GPU cũng đi kèm với các ràng buộc cùng giới hạn.

Để các dây chuyền, tức các thread, rất có thể chạy tuy nhiên song, thì chúng bắt buộc độc lập. Nói theo một cách khác rằng các thread bị khi không thể biết được các thread không giống đang có tác dụng gì. Giới hạn này dẫn đến việc toàn thể dữ liệu yêu cầu đi theo 1 chiều. Yêu cầu thread này không thể biết kết quả của thread tê hay biến hóa dữ liệu nguồn vào hoặc lấy tài liệu đầu ra của một thread nọ nhằm chuyển cho một thread khác nữa.

Và GPU cũng luôn để cho các bộ vi xử lý (các dây chuyền) của mình phải bận rộn; cứ dây chuyền nào dứt việc thì sẽ nhận được thông tin mới để giải pháp xử lý tiếp. Phải mỗi thread còn chưa biết nó vừa xong xong câu hỏi gì. Nó hoàn toàn có thể vừa new vẽ xong xuôi 1 nút bấm trên đồ họa của hệ điều hành, rồi vẽ một trong những phần bầu trời trong 1 trò chơi nào đó, tiếp đến lại đề xuất hiển thị nội dung của một cái email. Mỗi thread không chỉ có bị ngoài ra mất trí nhớ nữa. Kề bên việc viết code shader tương đối trừu tượng do phải viết một hàm dùng bình thường cho rất nhiều điểm hình ảnh nhưng tác dụng thì dựa vào vào địa chỉ của điểm ảnh đó, thì các ràng buộc về việc bị mù cùng mất trí nhớ ở trên cũng chính là nguyên do khiến cho shader không theo thông tin được biết đền những bởi các lập trình viên new vào nghề.

Nhưng đừng lo! Ở những chương tới, ta vẫn học mỗi bước một, từ dễ dàng tới phức tạp. Nếu như bạn đang gọi trên một trình chú tâm đời mới, chúng ta cũng có thể sẽ thích shop với những ví dụ. Đừng trì hoãn sự vui vẻ nữa nhưng hãy click nút Next >> để dancing thẳng vào code nào!

tăng like fanpage | 68gamebai | new88 | game bài đổi thưởng |
iwinclub.icu | kucasino | C54 MOBI | F8bet | j88