3 पॉइंट द्वारा GN⁺ 2025-01-09 | 1 टिप्पणियां | WhatsApp पर शेयर करें

परिचय

  • Fidget एक लाइब्रेरी है जो बड़े पैमाने के गणितीय expression को represent, compile और evaluate करने के लिए डिज़ाइन की गई है, और यह मुख्यतः implicit surface के backend के रूप में बनाई गई है।
  • इसे अलग-अलग उपयोग मामलों में बहुत लचीले तरीके से इस्तेमाल किया जा सकता है।

अप्रत्यक्ष सतह क्या है?

  • अप्रत्यक्ष सतह को सामान्यतः f(x, y, z) → d जैसी expression से व्यक्त किया जाता है; यदि d पॉज़िटिव हो तो point मॉडल के बाहर होता है और यदि d नेगेटिव हो तो अंदर।
  • उदाहरण के लिए, रेडियस 1 वाली sphere को f(x,y,z)=x²+y²+z²−1 से व्यक्त किया जा सकता है।
  • Fidget का मुख्य फोकस उन closed-form implicit surfaces पर है जो केवल बेसिक arithmetic ऑपरेशन्स से बने हों।

अप्रत्यक्ष सतहों के फायदे

  • implicit surface कॉम्पैक्ट होती हैं और बड़े पैमाने पर parallel evaluation के लिए उपयुक्त हैं।
  • CSG operations (union, intersection आदि) को सरल तरीके से संभाला जा सकता है।
  • closed-form equations optimization के लिए अनुकूल हैं और evaluation के दौरान चुना गया branch ट्रैक किया जा सकता है।

उत्पत्ति

  • पिछले 10 वर्षों से implicit surface के rendering और evaluation पर शोध किया गया है।
  • Fidget एक निजी शोध परियोजना है, जो Rust में लिखी गई है ताकि libfive जैसी मौजूद kernels की तुलना में इसे उपयोग करना आसान हो।

लाइब्रेरी की संरचना

  • Fidget तीन अलग-थलग मुख्य layers और demo applications से मिलकर बना है।

फ्रंटएंड: गणितीय expression निर्माण

  • Fidget गणितीय expression बनाने के लिए Rhai scripting language का उपयोग करता है।
  • गणितीय tree को directed acyclic graph (DAG) में बदलकर duplicate हटाए जाते हैं।
  • SSA tape graph को लाइनियर code के रूप में फ्लैटन करता है।

बैकएंड: तेज़ और लचीला evaluation

  • Fidget backend frontend से अलग है और कई evaluation modes को support करता है।
  • JIT compiler bytecode को machine instructions में बदलकर performance को अधिकतम करता है।

एल्गोरिद्म

  • Fidget तेज़ evaluation पर आधारित होकर अलग-अलग rendering और meshing algorithms implement करता है।
  • Meshing में Manifold Dual Contouring का उपयोग किया जाता है, जिससे watertightness, manifoldness और sharp feature preservation सुनिश्चित होता है।

डेमो

  • Fidget कई demos के साथ आता है और web GUI इसका सबसे रोचक हिस्सा है।
  • इसे web development की latest technologies खोजने के अवसर के रूप में इस्तेमाल किया गया।

भविष्य की संभावनाएँ

  • GPU backend जोड़ना, meshing सुधारना, standard library बनाना और higher-level language bindings जैसी चीज़ें अगली प्राथमिकताओं में हैं।

निष्कर्ष

  • Fidget अब सार्वजनिक रूप से उपलब्ध है और इसे किसी Rust प्रोजेक्ट में आसानी से जोड़ा जा सकता है।
  • इसे ओपन सोर्स तथा commercial उपयोग के लिए अनुकूल लाइसेंस के साथ जारी किया गया है।

1 टिप्पणियां

 
GN⁺ 2025-01-09
Hacker News टिप्पणी
  • यह परियोजना कई कंप्यूटर साइंस क्षेत्रों को कवर करती है, जिसमें डेटा स्ट्रक्चर, अल्गोरिदम, लो-लेवल परफॉर्मेंस वर्क, कंपाइलर, रेंडरिंग/कंप्यूटर ग्राफिक्स, UI/UX डिजाइन टूल्स और GPGPU प्रोग्रामिंग शामिल हैं।

    • सोशल मीडिया या ब्लॉग RSS फीड के ज़रिए अतिरिक्त अपडेट्स मिलते हैं।
  • लेखक अन्य अच्छे पोस्ट पढ़ रहे थे।

  • लेखक को लगता है कि जब उन्होंने अपना implicit surface drawer लिखा था, तब यह प्रोजेक्ट बहुत उपयोगी होता।

    • उनका अपना तरीका कुछ हद तक समान है, लेकिन कम ऑप्टिमाइज़्ड है और सीधे GLSL जेनरेट करता है।
    • उन्हें इसे अपनाकर बदलने का प्रलोभन हो रहा है।
  • libfive मुख्यतः C++ में लिखा लगभग 40K लाइन का कोड है, जिसे मूल लेखक के लिए भी hack करना आसान नहीं।

    • कई महीनों तक कंपाइल न करने पर build अक्सर टूट जाता है, इसलिए CMake बदलना पड़ता है।
    • build की समस्या को लेकर इतना बड़ा मुद्दा बन जाना सुनकर आश्चर्य होता है।
  • सबसे अच्छा code-based CAD सॉफ़्टवेयर खोज रहे हैं; cad query आज़माया, लेकिन कुछ समस्याएँ थीं।

    • 3D प्रिंटिंग के लिए कोई recommended software खोज रहे हैं।
  • कॉलेज के समय एक nuclear physics simulator में लेखक ने implicit surface पर काम किया था।

    • R-function में हर जगह differentiable होने का गुण होता है।
    • यह अनुमान है कि अभी भी काफी legacy Fortran code इस्तेमाल में है।
  • वे सर्फ़ेस निर्माण के लिए SDF के साथ abstract tree पर काम करना चाहते हैं।

    • लक्ष्य mesh/point cloud से चाही गई shape के मैच करने वाला tree खोजने का आइडिया।
  • लेखक ने implicit surface पर पेपर और डेमो देखे हैं, और कल्पना के सहारे मॉडल बना सकते हैं।

    • यह जानने की उत्सुकता है कि b-rep kernel में क्या-क्या संभव है।
    • तेज़, ओपन सोर्स और समानांतर प्रोसेसिंग सक्षम kernel देखना चाहेंगे।
  • यह Ian Henry के प्रोजेक्ट की याद दिलाता है।

  • ग्राफ़िक्स वर्क में कोई अनुभव न रखने वाले व्यक्ति के लिए यह प्रोजेक्ट बेहद दिलचस्प लगता है।

    • काश और ज्यादा demos उपलब्ध होते।
    • सुझाव है कि वेब एडिटर में विभिन्न प्रोग्राम आज़माने के लिए ड्रॉपडाउन मेनू होना चाहिए।