Tôi khá mới với lập trình đồ họa và tôi vừa mới đọc một số sách và đã quét qua các hướng dẫn, vì vậy hãy tha thứ cho tôi nếu điều này có vẻ là một câu hỏi ngớ ngẩn.Trình tạo pixel thực sự làm gì?
Tôi đã có các khái niệm cơ bản về directx11 và đang chạy, đồng thời tôi đang tìm một số điều thú vị. vì vậy tự nhiên tôi đã đọc rất nhiều vào các đường ống đổ bóng, và tôi đã bị cuốn hút. Ý tưởng viết một đoạn mã đơn giản, nhỏ gọn, đủ hiệu quả để chạy hàng chục nghìn lần mỗi giây mà không lãng phí tài nguyên khiến tôi vội vã nắm bắt khái niệm trước khi tiếp tục và có thể làm một mớ hỗn độn của mọi thứ. Những gì tôi gặp khó khăn là nắm bắt những gì các pixel shader thực sự đang làm.
Vertex shaders rất đơn giản, bạn tổ chức các đỉnh của đối tượng trong cấu trúc dữ liệu đồng nhất liên quan đến thông tin về vị trí và tọa độ kết cấu, sau đó chuyển từng đỉnh vào bóng đổ được chuyển đổi từ 3d sang 2d cách của ma trận trasformation. Miễn là tôi hiểu nó, tôi có thể làm việc ra làm thế nào để mã nó.
Nhưng tôi không nhận được trình tạo pixel. Những gì tôi nhận được là đầu ra của vertex shader là đầu vào của pixel shader. Vì vậy, sẽ không chỉ được giao các pixel shader tọa độ 2d của các đỉnh của đa giác? Điều tôi đã hiểu là pixel shader nhận các pixel riêng lẻ và thực hiện các phép tính trên chúng để xác định những thứ như màu sắc và ánh sáng. Nhưng nếu đó là sự thật, thì pixel nào? toàn bộ màn hình hoặc chỉ các pixel nằm trong đa giác 2d đã được chuyển đổi?
hoặc tôi đã hiểu nhầm điều gì đó hoàn toàn?
okay, tôi nghĩ tôi đã hiểu ngay bây giờ. Bởi vì tôi là một người học thị giác mặc dù, tôi đã thực hiện một sơ đồ của những gì tôi nghĩ rằng bạn đã mô tả, vì vậy xin vui lòng cho tôi biết nếu tôi đang thiếu bất cứ điều gì. http://postimage.org/image/9oy2nroqr/ – FatalCatharsis
Một sai lầm: tọa độ post-vertexshader là ** không ** tọa độ pixel, nhưng _normalized_. Đối với Direct3D, điều này có nghĩa là chúng nằm trong khoảng từ 0.0 đến 1.0 (-1.0 và 1.0 trong OpenGL). Đây không phải là rất trực quan lúc đầu, bởi vì màn hình thường không vuông, nhưng nó "chỉ hoạt động" (không phải lo lắng, không có gì đặc biệt để bạn làm!) Và nó hiệu quả hơn cho phần cứng để làm tính toán (ví dụ cắt) trong không gian. Phần còn lại có vẻ tốt (shader geom, tesselation, và clipping được gọi là "công cụ xảy ra ở giữa"). – Damon
ah gotcha, tôi thích tọa độ chuẩn hóa thực sự, vì mọi thứ sẽ ở trên cùng một tỷ lệ bất kể độ phân giải màn hình đã chọn của bạn, (opengl có vẻ hơi kỳ lạ một chút, -1 đến 1). Vì vậy, các shader hình học và các giai đoạn tesselation xảy ra ở giữa? tôi đã có thể tìm thấy họ đến đầu tiên như các đỉnh mới sau đó có thể được đưa vào đổ bóng và chuyển đổi thành hợp âm màn hình. là các đỉnh mới được tạo tự động quay 2d? – FatalCatharsis