1 पॉइंट द्वारा GN⁺ 2023-10-24 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • एकसमान ambient light में 100% reflective object को background से अलग दिखना नहीं चाहिए, और इस गुण से renderer की physical consistency को तेज़ी से verify किया जा सकता है
  • matte, mirror, या उनके बीच का material हो, अगर वह पूरी तरह reflective है और उस पर एकसमान रोशनी पड़ रही है, तो वह environment जैसा ही दिखना चाहिए, यानी जैसे गायब हो गया हो
  • ताज़ी बर्फ का albedo 90~98% तक जा सकता है, इसलिए बादलों वाले मौसम या fog के साथ मिलकर sky और snow के बीच फर्क मिटने वाला whiteout हो सकता है
  • यह test जांचता है कि BRDF energy खोता है या बनाता तो नहीं, और gray environment में ज़रूरत से ज़्यादा reflected energy और ज़्यादा उजली दिखती है, इसलिए error ढूंढना आसान होता है
  • pure white Lambertian BRDF सरल है और उसका energy conservation साफ़ होता है, इसलिए sampling distribution, weight, PDF, और π या 2 जैसे factors छूट जाने वाले integration bugs को पकड़ने के लिए यह एक उपयोगी basic check है

एकसमान रोशनी में वस्तु क्यों गायब हो जानी चाहिए

  • अगर 100% reflective object पर uniform environment से रोशनी पड़ती है, तो वह background से अलग दिखना नहीं चाहिए
  • यह गुण इस बात से स्वतंत्र है कि वस्तु matte है, mirror-like reflect करती है, या बीच के किसी material की है
  • अगर rendering result में object दिखाई नहीं देता, तो यह संकेत है कि परिणाम गणितीय अपेक्षा के अनुरूप है

वास्तविक दुनिया का मिलता-जुलता उदाहरण: whiteout

  • ताज़ी बर्फ का albedo 90~98% तक ऊँचा हो सकता है, इसलिए वह लगभग पूरी तरह सफेद के करीब होती है
  • जब बादलों वाला मौसम या fog इसके साथ जुड़ जाता है, तो snow और sky के बीच अंतर मिटने वाली whiteout स्थिति बन सकती है
  • उस समय हर दिशा एकसमान सफेद जैसी दिखती है, इसलिए ठीक सामने की ढलान भी आँखों से पहचानना मुश्किल हो सकता है

BRDF के energy conservation की जाँच

  • White Furnace Test का उपयोग अक्सर यह जाँचने के लिए किया जाता है कि BRDF energy conservation को संतुष्ट करता है या नहीं
  • मुख्य बात यह देखना है कि reflection process में energy गायब तो नहीं हो रही या नई पैदा तो नहीं हो रही
  • उदाहरण के लिए, roughness बढ़ने पर material का ज़्यादा dark दिखना, या ऐसी स्थिति जहाँ multiple reflections को नज़रअंदाज़ करना मुश्किल हो जाए, इन्हें इससे परखा जा सकता है
  • सिर्फ white environment ही नहीं, gray environment भी उपयोगी है
    • अगर reflected energy ज़रूरत से ज़्यादा है, तो वह आसपास से अधिक bright दिखेगी और error सामने आ जाएगा

renderer के integration implementation की जाँच कैसे करें

  • White Furnace Test सिर्फ BRDF ही नहीं, renderer के integration part की जाँच में भी प्रभावी है
  • 100% albedo वाला Lambertian BRDF पूरी तरह energy-conserving होता है और उसका implementation भी सरल है, इसलिए renderer implementation bugs उजागर करने के लिए यह अच्छा है
  • समस्या पैदा होने के कई बिंदु हो सकते हैं
    • sampling distribution
    • sample weights
    • PDF calculation
    • π या 2 जैसे factors का छूट जाना
  • ऐसी गलतियाँ result image को फिर भी देखने में plausible बनाए रख सकती हैं, इसलिए उन्हें ढूंढना कठिन होता है

failure examples और debugging में उपयोग

  • जब path tracer या उसका कोई variant लिखा जा रहा हो, pre-convolved environment map बनाया जा रहा हो, या दूसरी sampling distributions को परखा जा रहा हो, तब pure white Lambertian BRDF के साथ पहले White Furnace Test पास कराना उपयोगी होता है
  • यह चरण पार हो जाने पर implementation पर कुछ हद तक भरोसा करके फिर BRDF को अलग से test किया जा सकता है
  • Hacker News comments के बाद ShaderToy example में test failure देखने के लिए SIMULATE_INCORRECT_INTEGRATION macro जोड़ा गया
  • यह macro ऐसे incorrect integration bugs की नकल करता है, जैसे यह भूल जाना कि hemisphere integration का मान 2π होता है, या sampling distribution को ध्यान में न रखना
  • जब bug सक्रिय होता है, तो sphere सही मात्रा की energy reflect नहीं कर पाता और स्क्रीन पर दिखाई देने लगता है

1 टिप्पणियां

 
GN⁺ 2023-10-24
Hacker News की राय
  • मैंने हाल ही में learnopengl के PBR tutorial का अनुसरण करके physically based renderer (PBR) लागू किया, लेकिन white furnace test पास नहीं कर पाया
    इससे मुझे एहसास हुआ कि जिस math को मैंने लागू किया था, उसे मैं उतना अच्छी तरह समझता ही नहीं था, और लेखक के कहे अनुसार π या 2 को मनमाने ढंग से गुणा कर देने से बात नहीं बनी

    • अब तक मैंने जो ज़्यादातर BRDF देखे हैं, वे लेख में बताए अनुसार roughness बढ़ने पर और गहरे हो जाते हैं
      कुछ models ऐसे भी हैं जो BRDF बनाने वाली theoretical microfacets के बीच interreflection को ध्यान में रखते हैं, और वे बेहतर हैं, लेकिन वे भी इस test को ज्यों का त्यों पास करते हैं या नहीं, इस पर भरोसे से कहना मुश्किल है
      वास्तव में, व्यापक रूप से इस्तेमाल होने वाले ज़्यादातर तरीके ऊर्जा खो देते हैं, और इसकी भरपाई के लिए कभी-कभी BRDF के ऊपर lookup table भी जोड़कर इस्तेमाल किया जाता था
  • यह दिलचस्प है कि HN के शीर्ष पर यह पोस्ट आई। वास्तव में furnace test के दो प्रकार हैं, और दूसरा वाला वह test है जिसमें 0.5 emission और 0.5 albedo की शर्त पर noise pixel error को छोड़कर परिणाम 1.0 आना चाहिए

    • मुझे ray tracing की सिर्फ बहुत बुनियादी जानकारी है, फिर भी मैं लेख के साथ चल पाया। लेख साफ़, रोचक और अच्छी तरह लिखा गया है
  • बहुत पहले https://graphics.stanford.edu/~boulos/papers/brdftog.pdf में energy conservation और data reproducibility के बीच समझौता करने की कोशिश की गई थी, लेकिन इसकी कीमत reciprocity छोड़कर चुकानी पड़ी
    आखिरकार BRDF में material data को अपने-आप फिट करने की बात की किसी ने ज़्यादा परवाह नहीं की, और अगर रुचि थी भी तो symmetric और पर्याप्त रूप से conservative BSDF को ज़्यादा पसंद किया गया
    बाद का शोध भी ज़्यादातर उसी दिशा को बेहतर बनाने पर गया, खासकर क्योंकि symmetry टूटने पर bidirectional path tracing जैसी तकनीकें काफ़ी अजीब हो जाती हैं

  • मैं सोच रहा हूँ कि test के नाम में furnace क्यों है। पूरी अवधारणा समझ में आती है, लेकिन नाम काफ़ी मनमाना लगता है, इसलिए जिज्ञासा है कि क्या इसके पीछे कोई आधार है

    • यह नाम classical blackbody radiation experiments से आया है, जिनमें oven, kiln, या furnace का उपयोग होता था
      यहाँ भी अवधारणा मिलती-जुलती है: वस्तु को एक ऐसी cavity के अंदर रखा जाता है जिसका emission spectrum एकसमान हो। बस इस मामले में blackbody नहीं, white है
    • क्योंकि गरम furnace का अंदरूनी हिस्सा उसी तरह uniform illumination से चमकता है जैसा इस test में simulate किया जाता है
    • यह मूलतः ऐसे test के लिए mnemonic name जैसा है जो एक समान सफेद रोशनी वाले environment के अंदर की स्थिति को देखता है, इसलिए बहुत गरम furnace जैसी छवि याद दिलाता है
  • संयोग से कुछ दिन पहले YouTube recommendations में इस विषय पर एक वीडियो आया था, और वह आने वाली Blender 4.0 release के बारे में था
    BSDF में नई Multiscatter GGX function जोड़ी जा रही है, और वीडियो इसमें काफ़ी गहराई तक जाता है और बहुत से examples भी दिखाता है
    https://www.youtube.com/watch?v=v6qXbV_Q7z4

  • मुझे नहीं पता कि embedded ShaderToy सामान्य रूप से कैसा दिखना चाहिए। Play दबाकर एक मिनट से ज़्यादा इंतज़ार करने पर भी कुछ नहीं होता
    अगर असफल test के कुछ screenshots ही होते, तो लेख काफ़ी बेहतर हो सकता था

    • शुरुआत में यह gray दिखता है, फिर sphere की रूपरेखा दिखाई देती है और उसके बाद background fade in होता है। लाल sphere, नीला sphere, और सफेद sphere बीच के gray/white sphere के आसपास दिखाई देते हैं, फिर दृश्य वापस gray होकर गायब हो जाता है
      उसके बाद लाल sphere और नीला sphere फिर से आते हैं, और बीच वाले sphere पर reflection जैसी कुछ चीज़ दिखती है, लेकिन बीच वाला sphere background में “घुल” जाता है, इसलिए यह पहचानना मुश्किल हो जाता है कि वह sphere है
    • लगता है WebGL की ज़रूरत होगी। क्या आप देख सकते हैं कि browser में WebGL enabled है या नहीं?