Aracılığıyla paylaş


Gelişmiş Renk ile ICC profil davranışı

Advanced Color, standart ekranlara göre çok daha yüksek renk doğruluğuna sahip ekranlar için işletim sistemi teknolojilerinin bir şemsiye terimidir. Daha fazla bilgi için yüksek/standart dinamik aralıkta Gelişmiş Renk ile DirectX kullanma bölümüne bakın. Gelişmiş Renk ve otomatik renk yönetimi, tüm uygulamalar için tutarlı ve kromatolojik olarak doğru bir görüntü rengi sağlar: hem eski hem de modern. Ancak uygulamanız, Uluslararası Renk Konsorsiyumu (ICC) renk profillerini kullanarak kendi açık renk yönetimini zaten gerçekleştirebilir.

Gelişmiş Renk SDR veya HDR ekranlarda etkin olduğunda, ekran ICC profillerinin davranışı geriye dönük olmayan uyumlu şekillerde değişir. Uygulamanız görünen ICC profilleriyle çalışıyorsa Windows, uygulamanızın doğru davranışı almaya devam ettiğinden emin olmak için uyumluluk yardımcıları sunar. Windows, profili soyutlayan uygulamaya yönelik yeni API'ler sağladığından, Gelişmiş Renk algılayan uygulamalar görüntü ICC profilleriyle doğrudan etkileşimden uzaklaşmalıdır; Gelişmiş Renk ile DirectX'i yüksek/standart dinamik aralıkta kullanmasayfasında tam kılavuz sağlanır.

Bu konu başlığında ICC profili davranışındaki değişiklikler açıklanmaktadır. Ayrıca, renkle yönetilen uygulamanızın görüntü ICC profillerini kullanmaya devam etmesi gerekiyorsa, bu konu başlığında uygulamanızı Gelişmiş Renk avantajlarından artımlı olarak yararlanacak şekilde nasıl uyarlanacağı gösterilir.

Eski Windows renk yönetimi davranışı

Gelişmiş Renk etkin olmadığında, Windows uygulamanızın görsel içerik çıkışında herhangi bir renk yönetimi gerçekleştirmez (örneğin, GDI hDC, DirectX takas zinciri veya oluşturma görseli); uygulama içeriğinizin standart sRGB renk alanında olduğunu varsayar. Etkin ekranda doğru renk üretimi istiyorsanız, uygulamanızın en sık Uluslararası Renk Konsorsiyumu (ICC) renk profillerini kullanarak kendi renk yönetimini gerçekleştirmesi gerekir. Ana kavramsal adımlar şunlardır:

  1. Ekranın renk özelliklerini alın.
  2. Ekranın renk alanına renk alanı dönüştürme işlemi gerçekleştirin.
  3. Ekranın gamutunu kısıtlamak için gamut eşlemesi gerçekleştirin.

Burada üç adımın her biri hakkında daha fazla ayrıntı bulabilirsiniz.

Ekranın renk özelliklerini alma

Win32 uygulaması, ekranın kullanılabilir renk gamı da dahil olmak üzere renk özelliklerini belirten varsayılan ICC profilini elde etmek için Windows Renk Sistemi profil yönetimi işlevlerini kullanır.

Evrensel Windows Platformu uygulaması bunun yerine DisplayInformation.GetColorProfileAsync Metodu kullanır.

Ekranın renk alanına renk alanı dönüştürme işlemi gerçekleştirme

Ekranın renk alanı içeriğinizin renk alanıyla eşleşmiyorsa bir renk alanı dönüştürmesi yapmanız gerekir. Örneğin dijital içerik genellikle sRGB olarak kodlanır, ancak ekranınız geniş DCI-P3 gamı olabilir. Genellikle ICC profilini okuyan ve içeriğinizin renk değerlerini eşleşecek şekilde dönüştüren bir ICC renk yönetimi kitaplığı kullanırsınız. Windows birden çok ICC renk yönetimi motoru sağlar; örneğin, Direct2D renk yönetimi efekti.

ICC profili tabanlı renk yönetiminin görüntüye başvurulu veya çıkış başvurulu olduğunu unutmayın. Bu, renk değerlerinin mutlak (sahne başvurulan) renkler olarak depolanmadığı, bunun yerine ekranın renk alanına (çıkış cihazı) göre kodlandığı anlamına gelir. Örneğin, uygulamanız sRGB kırmızı işleniyorsa bu, işlenen çıkışınızda RGB(1, 0, 0) olarak gösterilir. Ancak bu içeriği bir Adobe RGB ekranında işlüyorsanız, RGB(1, 0, 0) yalnızca ekran tarafından en doygun kırmızısı (Adobe RGB kırmızısı) olarak yorumlanır ve bu yanlıştır. Bir ICC renk dönüşümü uyguladığınızda, rengi RGB(0.858659, 0, 0)olarak yeniden kodlar ve Adobe RGB ekran tarafından işlendiğinde, sRGB kırmızısı olarak doğru şekilde yeniden oluşturulur.

Ekranın gamutunu kısıtlamak için gamut eşlemesi gerçekleştirme

Renk değerlerini ekranın renk alanıyla eşleşecek şekilde yeniden yorumlamaya ek olarak, ekranın içeriğinizdeki tüm renkleri fiziksel olarak yeniden oluşturamama durumunu işlemeniz gerekir; içeriğinizin renk gamı ekranınkinden daha büyükse. Bu işleme gamut eşlemesi adı verilir.

Gamut eşlemesi kayıplı çünkü içeriğin daha büyük gamını yaklaşık olarak nasıl ayarlayabileceğiniz konusunda bir denge kurmanız gerekir. En basit yöntem, ekranın gamutunun içindeki renklerin korunduğu ve gamut dışında olan renklerin en yakın oyun içi değere kırpıldığı renkölçerdir.

ICC profili tabanlı bir iş akışında, gamut eşlemesi genellikle renk yönetimi kitaplığında otomatik olarak işlenir. İşleme amacını seçerek eşleme davranışı üzerinde biraz denetim sahibi olursunuz (bkz. İşleme amacı modları).

Not

Gelişmiş bir renk iş akışında olduğunuzda, hdr ve bazı WCG ekranları için kullanılandan daha küçük renk gamlarına sahip SDR kaynakları ve hedefleri için tasarlandığından, genellikle algısal işleme amacını kaynak veya hedef için de kullanmanızı önermeyiz; bu nedenle bunları kullanmak beklenmeyen davranışlara neden olabilir.

Windows otomatik sistem renk yönetimi

Gelişmiş Renk etkin olduğunda, Windows otomatik sistem renk yönetimi gerçekleştirir; uygulamanızın renk içeriğinin ekranda doğru bir şekilde yeniden üretilmesini sağlar. Bu, uygulamanızda gerekli eylemleri önemli ölçüde basitleştirir, ancak gelişmiş uygulamalar maksimum renk ve algı doğruluğu için ek işlem gerçekleştirmeye devam edebilir. Daha fazla bilgi için yüksek/standart dinamik aralıkta Gelişmiş Renk ile DirectX kullanma bölümüne bakın.

Ekranın renk özelliklerini alma

Gelişmiş Renk algılayan uygulamalar, görüntü ICC profiliyle doğrudan etkileşim kurmamalıdır. Bunun yerine DisplayInformation::GetAdvancedColorInfo veya IDXGIOutput6kullanarak ekranın renk özelliklerini elde edebilirsiniz.

Ekranın renk alanına renk alanı dönüştürme işlemi gerçekleştirme

Windows, geçerli varsayılan renk profili tarafından belirlenen ekranın renk alanına renk alanı dönüştürme işlemini gerçekleştirir. Profil yoksa EDID colorimetry verileri kullanılır. Uygulamanız otomatik olarak sahne tarafından başvurulan renk davranışı alır; örneğin, sRGB kırmızısını RGB(1, 0, 0) olarak kodlanmış olarak işler ve bir Adobe RGB monitörde görüntülerseniz, Windows bunu doğru şekilde sRGB kırmızısı olarak yeniden oluşturur. Gelişmiş Renk algılayan uygulamalar, IDXGISwapChain3::SetColorSpace1kullanarak Windows'a bilgi vermek için içeriklerini doğru renk alanıyla etiketlemelidir. Standart bir tamsayı piksel biçimine (örneğin, 8 bit RGBA) işlenen Gelişmiş Renk algılayan olmayan tüm uygulamalar için Windows, uygulamayı açıkça sRGB olarak ele alır. AdobeRGB kırmızısını Gelişmiş Renk senaryosunda işlemek istiyorsanız, RGB(1.158157,0,0) scRGB etiketli bir yüzeyde işlemeniz gerekir (ekranın gamut'u tarafından kısıtlanır).

Ekranın gamutunu kısıtlamak için gamut eşlemesi gerçekleştirme

GPU'nun görüntü işlem hattı, oyun dışı renklerde sayısal kırpma gerçekleştirir. Uygulamanız daha karmaşık bir eşleme kullanmak istiyorsa, bunu kendiniz yapmanız gerekir.

Gelişmiş Renk ile ICC profili varsayılan davranışı

Otomatik sistem renk yönetimi, mevcut ICC profil tabanlı uygulamaların davranışını mutlaka etkiler çünkü artık işletim sistemi (OS) tarafından işlenen birçok eylemi kendileri gerçekleştirmektedir. Windows, varsayılan davranışı (aşağıda açıklanmıştır) ICC profili tabanlı uygulamalara uygular. Bu, bu uygulamaların yanlış davranışa sahip olmamasını sağlar. Ancak, daha fazla çalışma yapmadan genişletilmiş renk özelliklerinden hiçbirine erişemezler.

Özellikle, ICC profil tabanlı uygulamanız, monitör aslında daha geniş bir gamut olsa bile varsayılan olarak sRGB gamut ile sınırlıdır. Windows ayrıca ICC uygulamanızın ekranın tüm gamutuna erişmesini sağlayabilecek bir ICC uyumluluk yardımcısı sağlar. Daha fazla bilgi için bu konudaki ICC profili uyumluluğunu görüntüleme yardımcı bölümüne bakın.

Ekranın renk özelliklerini alma

Gelişmiş Renk etkin olduğunda, bir ekranın varsayılan profilini almak için renk profili yönetimi API'lerine yapılan tüm çağrılar, gerçekte hangi profillerin yüklü olduğuna bakılmaksızın "profil yok" döndürür. Kurala göre "profil yok" sRGB olarak yorumlanmalıdır.

Görüntü ICC profilleri hala geçerlidir ve Gelişmiş Renk ile kullanılır, ancak bunlar yalnızca sistem düzeyinde kullanılır ve çoğu uygulama bunlarla doğrudan etkileşim kurmamalıdır. Aşağıdaki bilgiler genellikle yalnızca uygulamanız tüm görüntüleme profillerini numaralandıran veya profilleri yazan/yükleyen bir yardımcı programsa gereklidir.

Bunu zorunlu kılmak için Windows, STANDARD ve EXTENDED renk profili alt türleri kavramını ekler. Bu, COLORPROFILESUBTYPEkullanan tüm renk profili yönetim API'leri için geçerlidir:

CPST_STANDARD_DISPLAY_COLOR_MODE
CPST_EXTENDED_DISPLAY_COLOR_MODE

Not

STANDARD ve EXTENDED alt türleri profilin içinde depolanan bir özellik değildir; bunun yerine, profilin bir görüntüyle ilişkisine uygulanır (yani profil, ekranın profil ilişkilendirme listesine eklendiğinde). Tek bir profil, bir görüntü için hem STANDARD hem de EXTENDED alt türleriyle ilişkilendirilebilir, yani hem standart hem de Gelişmiş Renk senaryolarında kullanılabilir.

İster normal SDR ister Gelişmiş Renk SDR olsun, SDR'de kullanılması amaçlanan profil ilişkilerinin alt türü STANDARD vardır (değer belirtilmezse varsayılan değer budur). HDR modunda kullanılmak üzere görüntü profili ilişkilendirmeleri EXTENDEDalt ttype'tır. Uygulamanız bir alt tür belirtmezse, bu STANDARDolarak yorumlanır.

COLORPROFILESUBTYPE kullanan tüm getter API'leri yalnızca eşleşen STANDARD veya EXTENDED alt türüne sahip profilleri döndürür. Örneğin HDR etkinse, yalnızca EXTENDED alt türüne sahip görüntü profilleri kullanım için geçerlidir ve STANDARD alt tür profilleri kullanılmaz. Ayarlayıcı API'leri alt türü belirtebilir (STANDARD varsayılandır).

Ekranın renk alanına renk alanı dönüştürme işlemi gerçekleştirme

Gelişmiş Renk etkinken ICC profil yönetimi API'leri sRGB döndüreceği için, ICC profil tabanlı uygulamanız sRGB'ye kadar renk yönetimine sahip olur ve Windows bunu ekranda sRGB olarak doğru şekilde yeniden oluşturur.

Ekranın gamutunu kısıtlamak için gamut eşlemesi gerçekleştirme

Mevcut tüm gamut eşleme davranışları korunur.

ICC profili uyumluluk yardımcılarını görüntüleme

Gelişmiş Renk etkin olduğunda Windows, ekranın tüm gamutuna erişim sağlayan görüntü ICC profilleri için bir uyumluluk yardımcısı sağlar. Bu şekilde uygulamanız, bugün Eski Gelişmiş Olmayan Renk modunda bulunan kalibre edilmiş geniş gamut monitörlerde kullanılabilen işlevlerin aynısı olan, ekranın bildirilen özelliğine kadar doğru ve geniş gamut renkleri almaya devam eder. Bu yardımcı olmadan, uygulamanız sRGB olan varsayılan davranışla sınırlandırılır (bkz. Gelişmiş Renk ile ICC profili varsayılan davranışı).

Bu yardımcı Windows 11'den itibaren kullanılabilir. Daha yüksek duyarlık/bit derinliği veya yüksek dinamik aralığa erişim dahil olmak üzere Gelişmiş Renk'in diğer avantajlarını sağlamaz; uygulamanızı Gelişmiş Renk duyarlı olacak şekilde değiştirmeniz gerekir.

ICC uyumluluk yardımcısını görüntülemeyi etkinleştirme

Görüntü ICC uyumluluğu yardımcısı, uygulama bazında etkinleştirilir. Varsayılan olarak etkin değildir.

Kullanıcılar, yürütülebilir dosyanın özelliklerinin Uyumluluk sekmesine gidip Eski görüntüleme ICC renk yönetimikullan'ı seçerek uygulamayı bir uygulama için etkinleştirebilir. Uyumluluk yardımcısı işlemin tamamına uygulanır ve yalnızca gelişmiş renk görüntü için etkinleştirildiğinde etkindir; standart bir SDR ekranı üzerinde hiçbir etkisi yoktur.

YürütülebilirUI to enable display ICC compatibility helper for an executableUI to enable display ICC compatibility helper for an executablegörüntü ICC uyumluluk yardımcısını etkinleştirmek için kullanıcı arabirimini

Windows, ICC renk profili yönetimini kullandığı bilinen bazı popüler uygulamalar için yardımcıyı otomatik olarak etkinleştirir.

Bu uyumluluk yardımcısını uygulamanız için etkinleştirmenin programlı bir yolu yoktur.

Ekranın renk özelliklerini alma

Uyumluluk yardımcısı etkinse, uygulamanız STANDARDkullanarak varsayılan renk profilini sorguladığında, Windows Gelişmiş Renk görüntüleme özellikleri API'lerini dolduran aynı verileri kullanarak yapay bir ICC profili oluşturur. Yapay profilin verileri, geçerli renk profilinin bir bileşiminden, ekranın EDID veya DisplayID'sinden veya diğer kaynaklardan gelebilir.

Uygulamanız varsayılan EXTENDED renk profilini sorgularsa, bu durum uygulamanızın Gelişmiş Renk kullanan olduğunu gösterir ve gerçek EXTENDED profilini alır.

Ekranın renk alanına renk alanı dönüştürme işlemi gerçekleştirme

Uyumluluk yardımcısı etkinse uygulamanızın yapay görüntü profilini hedeflemek için ICC renk yönetimini kullanması beklenir. Windows, uygulamanızın bu renk alanını hedeflediğini varsayar ve ekranda doğru şekilde işlendiğinden emin olmak için doğru renk alanı dönüştürme işlemini gerçekleştirir.

Renk alanı dönüştürme uygulama işleminin tamamına uygulanır, bu nedenle uygulamanızın görsel içeriğinin tümü, bazıları renkle yönetilmese ve sRGB'yi (örneğin, kullanıcı arabirimi) nominal olarak hedeflese bile, ekranın renk alanını hedefleme olarak kabul edilir. Renk alanı dönüştürme, grafik API'sine (GDI, DirectX, XAML vb.), piksel biçimine veya işlenen içeriğinizin diğer özelliklerine bakılmaksızın da uygulanır.

Ekranın gamutunu kısıtlamak için gamut eşlemesi gerçekleştirme

Mevcut tüm gamut eşleme davranışları korunur.

Kullanıcı tarafından görünen davranış değişiklikleri

Kullanıcılar, uyumluluk özellikleri sekmesini denetleyerek görüntü ICC uyumluluk yardımcısının yürütülebilir dosya için etkin olup olmadığını doğrulayabilir. Uygulamanız varsayılan görüntü ICC profili hakkında bilgi gösteriyorsa, kullanıcılar bunun yapay bir profil olduğunu görür. Profilin açıklayıcı içeriği (ad dahil) bir uygulama ayrıntısıdır.

Gerçek renk davranışı, Gelişmiş Renk devre dışı bırakıldığındakiyle aynı olmalıdır. Her iki durumda da uygulamanız, ICC profilinde açıklandığı gibi ekranın tam gamutuna erişebilen doğru renkleri işler.