Hình ảnh HDR tuyến tính nửa nổi nửa hình như kết cấu (khuếch tán / albedo)?


10

Vì vậy, tôi đã suy nghĩ về điều này trong một thời gian và cố gắng tìm kiếm câu trả lời nhưng không thành công.

Nếu tất cả các kết cấu của bạn là hình ảnh LDR 8 bit, như JPEG, thì không thể gây ra xung đột với ánh xạ điều khiển / tông màu khi hiển thị. Đó là nếu bạn điều chỉnh độ phơi sáng hiển thị của hình ảnh sẽ hiển thị chi tiết trong kết cấu không thực sự ở đó, vì chúng bị kẹp bởi dải động thấp. Vì vậy, sẽ không có ý nghĩa gì khi có kết cấu như hình ảnh HDR, được lưu dưới dạng .exr, trong không gian màu tuyến tính với nửa nổi 16 bit để có được màu đại diện tốt (độ nổi "đầy đủ" 32 bit có thể bị quá mức?). Để có các giá trị màu sắc chi tiết và chính xác hơn, tôi có thể có ảnh hưởng đến GI và cách tính màu chảy máu?

Hoặc đơn giản là nó không cần thiết vì kết quả cuối cùng của kết xuất mà chúng ta muốn có lẽ sẽ tương tự như mức độ phơi sáng của kết cấu khi nó được chụp bằng bất kỳ cách nào? Và vì máy ảnh chủ yếu quay ở tốc độ 12 - 14 bit, bạn sẽ phải chụp nhiều lần phơi sáng kết cấu và thực hiện tất cả công việc bổ sung đó để ghép tất cả chúng lại với nhau thành một HDRI.

Chỉnh sửa: Để làm rõ, tôi chủ yếu quan tâm đến điều này từ quan điểm kết xuất hình ảnh thực tế, với các trình kết xuất dấu vết tia (như tia thần kinh, V-Ray, Arnold, v.v.) với mô phỏng ánh sáng đầy đủ và chiếu sáng toàn cầu, thay vào đó là cho công cụ trò chơi thời gian thực.

Câu trả lời:


8

Trong sản xuất phim, chúng tôi hầu như không bao giờ sử dụng họa tiết 8 bit cho màu / albedo, vì dải màu, v.v. (JPEG đặc biệt có vấn đề vì thông số kỹ thuật, đó là sRGB thay vì giá trị tuyến tính.) ) hoặc các giá trị nguyên không dấu 16 bit cho kết cấu màu / albedo.


1
Ồ, cảm ơn @LarryGritz! Xem xét bạn làm việc cho Sony Pictures Imageworks, tôi sẽ coi bạn là một nguồn rất đáng tin cậy! :) Nhưng làm thế nào để bạn nắm bắt những kết cấu này? Hầu hết các máy ảnh chỉ quay trong các tệp RAW 14 bit, bạn có máy ảnh đặc biệt với cảm biến tuyến tính 16 bit không? Hoặc bạn có thực hiện nhiều lần phơi sáng cho kết cấu, giống như cách thực hiện đối với ánh sáng dựa trên hình ảnh HDRI không? Hay bạn chỉ đơn giản là chụp bằng camera RAW 14 bit và lưu nó thành "16 bit"? Ow và định dạng tệp nào bạn sử dụng, .tiff (.tx, .tex) hoặc .exr? Cảm ơn một lần nữa cho đầu vào của bạn !! :)
Kristoffer Helander

1
@KristofferHelander: Chuyển đổi từ bắt 14 bit thành biểu diễn 16 bit của phạm vi 0-1 có thể dễ dàng đạt được bằng cách nhân. Nhưng hầu hết các kết cấu của chúng tôi được vẽ, không được chụp ảnh - đôi khi chúng được vẽ trực tiếp ở định dạng 16 bit, đôi khi chúng được vẽ bằng sRGB và sau đó được chuyển đổi thành 16 bit khi được "tuyến tính hóa" để sử dụng làm họa tiết. Không cần HDR cho kết cấu albedo.
Larry Gritz

1
@KristofferHelander: Đối với kết cấu albedo, chúng tôi có xu hướng sử dụng TIFF với dữ liệu số nguyên 16 bit (cái mà chúng tôi gọi là .tx chỉ là định dạng TIFF nhưng được lát gạch và với đa biến ánh xạ MIP được lưu trữ dưới dạng nhiều tệp con trong tệp TIFF). Đối với dữ liệu HDR thực, như chụp môi trường, chúng tôi sử dụng OpenEXR. Đầu ra của trình kết xuất cũng có xu hướng là OpenEXR.
Larry Gritz

8

Có, trong một số trường hợp cực đoan đối với ánh sáng HDR và ​​tonemaps để phơi bày các vấn đề về dải trong kết cấu màu. Trong những trường hợp đó, có độ sâu bit cao hơn cho kết cấu có thể hữu ích. Tuy nhiên, theo kinh nghiệm của tôi, phần lớn các vật liệu và tình huống ánh sáng thông thường không thể hiện vấn đề này và hầu hết các kết cấu trong một trò chơi thông thường đều ổn trong 8 bit (hoặc thậm chí ít trò chơi trên các trò chơi thường sử dụng nén BC1, giúp giảm xuống còn 5 6-5-bit).

Mọi người sử dụng các mục tiêu kết xuất HDR vì một cảnh đơn lẻ có thể chứa cường độ sáng khác nhau rất lớn, chẳng hạn như một căn phòng tối mà bạn có thể nhìn xuyên qua cửa sổ sang bên ngoài sáng hơn 10 lần 100 lần so với phòng. Tuy nhiên, kết cấu màu không có nhiều độ lớn như vậy. Chúng đại diện cho độ phản xạ vốn có trong phạm vi [0, 1] và trong thực tế, một số vật liệu hàng ngày thấp hơn khoảng 2 Phản5%. Vì vậy, một hình ảnh 8 bit (với mã hóa gamma) thường có thể đại diện cho màu sắc khuếch tán và màu sắc với độ chính xác đủ.

Đúng là sự kết hợp của một kết cấu khá tối với ánh sáng rất chói hoặc cài đặt camera cực kỳ quá sáng có thể hiển thị dải trong khung cuối cùng, nhưng đó sẽ là một trường hợp khác thường hơn.

Một trường hợp mà bạn có thể muốn một kết cấu HDR là các vật liệu phát xạ, đặc biệt là cho các dấu hiệu neon và các nguồn sáng tương tự. Kết cấu sẽ xuất hiện với giá trị của nó được tăng lên để xuất hiện dưới dạng nguồn sáng trong trò chơi, vì vậy trong trường hợp đó, hình ảnh 8 bit có thể dễ dàng hiển thị dải.

Cuối cùng, vẫn có thể hữu ích khi làm việc với độ chính xác cao hơn (ví dụ độ chính xác 16 bit) nếu có thể khi chụp và tạo họa tiết, đơn giản vì nó giúp bạn có nhiều khoảng trống hơn để xử lý hình ảnh mà không gây ra vấn đề chính xác. Chẳng hạn, nếu bạn cần điều chỉnh mức độ hoặc cân bằng màu, bạn sẽ mất một chút độ chính xác; có thể giới thiệu dải (đặc biệt nếu bạn thực hiện nhiều lần) khi bắt đầu từ hình ảnh nguồn 8 bit. Nguồn 16 bit sẽ linh hoạt hơn đối với các vấn đề như vậy. Tuy nhiên, kết cấu cuối cùng được sử dụng trong trò chơi có thể vẫn được nén thành 8 bit.


combination of a quite dark texture with very bright lighting or an extremely overexposed camera setting can show banding in the final framecái nhìn sâu sắc rất tốt. Nhưng chúng tôi có thể lưu ý rằng mã hóa gamma chính xác ở đây để giảm thiểu điểm này. Nếu anh ta có vấn đề tại sao không thử một số mũ gamma vượt trội? điều đó sẽ ức chế việc sử dụng các bộ lấy mẫu sRGB phần cứng.
v.oddou

Cảm ơn về thông tin bạn vừa nhập. Nhưng để làm rõ, tôi chủ yếu quan tâm đến điều này từ quan điểm kết xuất hình ảnh thực tế, với các trình kết xuất dấu vết tia (như tia thần kinh, V-Ray, Arnold, v.v.) với mô phỏng ánh sáng đầy đủ và chiếu sáng toàn cầu, thay vào đó là thật công cụ trò chơi thời gian.
Kristoffer Helander

@KristofferHelander Rất tốt để biết, nhưng tôi nghĩ những gì tôi đã viết có lẽ cũng áp dụng cho kết xuất ngoại tuyến. Nhưng tôi thừa nhận rằng tôi không có nhiều kinh nghiệm trực tiếp trong lĩnh vực đó.
Nathan Reed

@NathanReed Vâng, bạn chắc chắn đã thực hiện một số điểm thực sự tốt ở đó :)
Kristoffer Helander

5

Tôi muốn mời độc giả đọc bài viết này về công nghệ rasterization động cơ Quake 2 được giải thích chi tiết , nếu họ có thời gian.

Nếu TLDR, xin vui lòng chú ý đến hình ảnh này: nhập mô tả hình ảnh ở đây

Những gì chúng ta thấy là kênh Albedo , đó là những gì bạn muốn mã hóa thành 16 bit nếu tôi hiểu chính xác câu hỏi của bạn.
Tôi sẽ không nói " nếu nó có thể được mã hóa thành 256 màu cho các trò chơi trong quá khứ, tại sao chúng ta lại cần 281474976710656 (đó là 281 nghìn tỷ) trong các trò chơi mới? " Ngay cả khi tôi muốn nhưng nghe có vẻ như anh chàng cục cằn của pixar Lên. Về mặt xây dựng hơn, nếu bạn ghi chú trong hình ảnh này, mọi thứ đều ở cùng mức độ chiếu sáng . Đặc biệt hơn, cường độ tối đa có thể bảo tồn độ bão hòa mong muốn. (có nghĩa là trong không gian HSV, V được tối đa hóa)

Sự nhấn mạnh là chìa khóa, chúng tôi hầu như không cần bất kỳ bit nào vì albedo không có chiều sâu để mã hóa. Sự năng động đến từ bóng đổ, nó có ý nghĩa để làm việc trong f32mỗi thành phần trong các shader và xuất ra f16các mục tiêu kết xuất. Nhưng lưu trữ kết cấu albedo trong f16đó không chỉ là quá mức cần thiết, đó là một con lợn hiệu suất phi lý nghiêm trọng cho băng thông quý giá của chúng tôi.


Cảm ơn về thông tin bạn vừa nhập. Nhưng để làm rõ, tôi chủ yếu quan tâm đến điều này từ quan điểm kết xuất hình ảnh thực tế, với các trình kết xuất dấu vết tia (như tia thần kinh, V-Ray, Arnold, v.v.) với mô phỏng ánh sáng đầy đủ và chiếu sáng toàn cầu, thay vào đó là thật công cụ trò chơi thời gian. Tôi đã cập nhật bài viết gốc của mình.
Kristoffer Helander
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.