இப்பகுதியில், வடிவியல் செயலிகளைப் பற்றிக் கொஞ்சம் ஆழமாக ஆராய்வோம். குறிப்பாக, இவற்றின்,
- அடிப்படை கட்டமைப்பு குறிக்கோள்கள் (basic design goals)
- கட்டமைப்பு விளக்கங்கள், மற்றும் முன்னேற்றங்கள் (architectural details and developments)
- மென்பொருள் நிரலமைப்பு (software programming model)
அடிப்படை கட்டமைப்பு குறிக்கோள்கள்
- உடன் நிகழ்வு (real time applications) பயன்பாடுகளுக்குச் செயலிகள் ஒரு மைக்ரோ நொடியில் (10 லட்சத்தில் ஒரு பங்கு) செயலாற்ற வேண்டும். இன்றைய வீடியோ விளையாட்டுகள் 100 கோடி படமூலங்களை ஒரு நொடிக்குள் கையாள வேண்டும்.
- இணையாளல் மிகவும் அவசியமான ஓர் உத்தி. பட அடிப்படை மூலங்களை (basic graphical elements) இணையாளல் இல்லையேல், எத்தனை வேகம் இருந்தாலும், வேலை உடனே நடந்து முடியாது. இதைப் பற்றி விரிவாகப் பிறகு பார்ப்போம்.
- மனித கண்கள் மில்லி நொடி (நொடியில் 1,000 பங்கு) மாற்றங்களையே பார்க்க வல்லது. இன்றைய வடிவியல் செயலிகள், சில நானோ நொடிகளில் (ஒரு மில்லி நொடியில், பத்து லட்சம் பங்கு) ஒரு பட அடிப்படை மூலச் செயல்களை கையாளக் கூடியவை. இதனால், சரியாக வடிவமைக்கப்பட்ட செயலியால், 10 லட்சம் கையாளல்களை ஒரு மில்லி நொடியில் ஆற்றக்கூடியவை. அத்துடன், முன்னே சொன்னது போல, பின் நோக்குதல் (look ahead processing), தவறுகளைச் சரி பார்த்தல் (error correction) போன்ற விஷயங்களுக்கு இங்கு இடமில்லை
ஆரம்ப காலப் பொது செயலிகளைப் போல, வடிவியல் செயலிகளும் விஞ்ஞான பயன்பாடுகளின் தேவைகளைப் பூர்த்திச் செய்ய, தடுமாறியே முன்னேறி வந்துள்ளன. இதில் உள்ள பெரிய சவால் என்னவென்றால், எப்படியோ, மூன்று விஷயங்களைச் சமாளித்தாக வேண்டும்:
- அதிவேக தேவைக்காக வன்பொருள் அமைப்புகளைப் பயன்படுத்தும் திறமையை அளிக்க வேண்டும்
- எப்படியாவது, வடிவியல் சமாச்சாரங்களை விஞ்ஞானிகளிடமிருந்து மறைத்து, அடிப்படை அதிவேகத்தை உபயோகிக்கும் முறைகளை உருவாக்க வேண்டும். பிரச்னைக்கேற்ப செயலாற்றுதல் அவசியம். விஞ்ஞான உலகில் உள்ள பிரச்னைகள் அனைத்தும் வடிவியல் பிரச்னைகள் அல்ல
- விஞ்ஞான கணினி நிரலர்களுக்கு மிக எளிதான ஒரு நிரல் அமைப்பை உருவாக்க வேண்டும். இதன் பயனாக, செயலிகளின் கட்டமைப்பு பற்றி நிரலர்கள் கவலைப்படாமல், தங்களுடைய பிரச்னையைத் தீர்ப்பதில் கவனம் செலுத்தலாம்
மேலே சொன்ன சவால்கள் மிகவும் கடினமானவை. இத்துறை மூன்று கட்டங்களாக இன்று வெகுவாக முன்னேறியுள்ளது.
- முதல் கட்டம் – அடித்துப் பிடித்து, எப்படியாவது வடிவியல் செயலிகளை வேலை செய்ய வைப்பதே இதன் குறிக்கோளாக இருந்தது
- இரண்டாம் கட்டம் – எளிதாக வடிவியல் வேலைகள் (வீடியோ விளையாட்டுக்கள்) நடந்தாலும், விஞ்ஞானக் கணக்கிடல்களுக்கு மிகவும் மெனக்கிட வேண்டியிருந்தது
- மூன்றாம் கட்டம் – விஞ்ஞான கணக்கிடல் பயன்பாடுகள் உருவாக்குதல் எளிமைப் படுத்தப்பட்டு மிகப் பெரிய விஞ்ஞானப் பிரச்னைகளைத் தீர்க்க வடிவியல் செயலிகள் பல துறைகளிலும் உபயோகத்தில் வரத் தொடங்கியுள்ளது. இன்று நாம் மூன்றாவது கட்டத்தை எட்டி விட்டோம். அத்துடன், இன்று ஏராளமான வடிவியல் செய்லிகளை ஒருங்கிணைக்கும் சூப்பர் கணினிகளும் வந்து விட்டது
வடிவியல் செயலி கட்டமைப்பு
முதலில், வடிவியல் செயலிகள், வடிவியல் துறையில் எப்படி வேலை செய்கிறது என்று பார்ப்போம். அனிமேஷன் கட்டுரைகளில் முன்னமே சொன்னது போல, வடிவமைப்பின் அடிப்படை அமைப்பு முக்கோணம்.
“சரி, முக்கோண மெஷ் முறை எப்படி வேலை செய்கிறது? நிறைய வளைவுகள் நிறைந்த ஒரு பொம்மையை எடுத்துக் கொள்ளுங்கள். அதைச் சுற்றி ஒரு மெல்லிய ப்ளாஸ்டிக் உறையால் சுற்றுகிறீர்கள். எவ்வளவு இறுக்கமாகச் சுற்றுகிறீர்களோ, அவ்வளவு அந்தப் பொம்மையின் வடிவம், சுற்றியுள்ள ப்ளாஸ்டிக்கிற்கு வரும். வளைவான பகுதியை எடுத்துக் கொள்வோம். வளைவான பகுதியை சுற்றி வளையும் ப்ளாஸ்டிக் நூல்களால் சுற்றப்படுவதாக நினைத்துக் கொள்ளுங்கள். ஒவ்வொரு ப்ளாஸ்டிக் நூலும் ஒரு கோட்டைப் போல. எவ்வளவு அதிகம் கோடுகள் இருக்கின்றனவோ அவ்வளவு அழகாக அந்த வளைவு உருவாக்கப்படலாம். இரு பரிமாணத்தில் மிகவும் அடிப்படையான அமைப்பு ஒரு கோடு. முப்பரிமாணத்தில் அதைப்போல முக்கோணம். ஒரு பரப்பை (surface) மிகச் சிறிய முக்கோணங்களால் நிரப்பி விடலாம். அது ஒரு மேஜையாகட்டும் அல்லது உட்டியின் முகமாகட்டும். அனைத்து மேற்பரப்பும் முக்கோணங்களே. மேலும் மேற்பரப்பத்தவிர உள்ளே எல்லாம் காலிதான். யாரும் அதைப் பார்க்கப் போவதில்லை! ஒவ்வொரு பொருளையும் முப்பரிமாண அனிமேஷன் உலகில் ஒரு முக்கோண த் தொகுப்பு என்று கொள்ளலாம். நாம் பார்த்த க்ளிப்பில் பஸ்ஸின் ஹெல்மெட்டைப் பாருங்கள். அது , ஏறக்குறைய தெள்ளத் தெளிவாக உள்ளது. உட்டியுடைய ஹெல்மெட் சற்று சருகுகளால் உருவாக்கியது போல உள்ளது. நாம் பார்த்த குழந்தை தொட்டில் மரத்தால் செய்து வெள்ளை பெயிண்ட் அடித்தது போலத் தோற்றமளிக்கிறது. அதாவது, ஒவ்வொரு முக்கோண தொகுப்பிற்கும் ஒவ்வொரு விதமான தன்மைகளை ச் சேர்த்தால், அது வேறு மாதிரி தோற்றம் அளிக்கிறது. இம்முக்கோணத் தொகுப்புகள் அடிப்படையான பொருட்களை உருவாக்க உதவுகின்றன. கணினியால் பல்லாயிரம் முக்கோணங்களை வினாடியில் வரைய முடியும். ஆனால், இத்துடன் வண்ணங்கள், ஒளியமைப்பு மற்றும் நிழலமைப்பு அனைத்தும் சேர்க்கப்பட்டால் ஓர் அழகான அசைவற்ற பொருளை கணினியில் உருவாக்க முடியும்”
சுருக்கமாகச் சொல்வதென்றால், வடிவியல் செயலிகளின் வேலை, பல கோடி முக்கோணங்களை எப்படி நொடியில் கையாள்வது என்பதுதான். இந்த கையாள்மை ஒரு வடிவமைப்பு குழாய் மூலம் (graphics pipeline) நடக்கிறது. குழாய் என்றவுடன் தண்ணி லாரிக்கு தாவி விடாதீர்கள்! அந்த உதாரணம் உதவாது. இந்தக் குழாய், தண்ணி லாரியை நிரப்பும் குழாய் என்று ஒரு புரிதலுக்காக நினைத்துக் கொள்ளலாம் ! எந்த ஒரு படத்தின் ஒரு சிறு பகுதியையும், கணினிகள், முக்கோணங்களாய்ப் பார்க்கின்றன. ஒரு காட்சி மாறுகிறது என்றால், முக்கோணங்கள் மாற்றி அமைக்கப்படுகின்றன என்று பொருள். இதில் பல நுணுக்கமான படிகள் உள்ளன. உதாரணத்திற்கு, குகைக்குள், பகைவனைத் தேடி ஒருவர் செல்லுகிறார் என்று வைத்துக் கொள்வோம். குறிப்பாக, குகைக்குள், அடி எடுத்து வைக்கிறார் என்று வைத்துக் கொள்வோம். சில விஷயங்களை இங்கே நினைவில் கொள்ள வேண்டும்:
- குகைக்குள் வெளிச்சம் வெளியைவிடக் குறைவு
- குகைக்குள் பாறைகளில் பட்டு வெளிவரும் வெளிச்சம் ஏராளமாக மாறுபடும்
- குகையின் உட்புறம், வெளிச்சம் குறைந்து, சாம்பலிலிருந்து, கருமை நிறம் வரை காட்சிக்கு தகுந்தவாறு மாறுபடும்
- குகைக்கு அருகே உள்ள தாவரங்கள் அழகாகப் பச்சை நிறத்தில் சூரிய ஒளியில் மிளிர வேண்டும்
- நடக்கும் நபரின் அசைவுகள் இயற்கையாகக் காட்சியளிக்க வேண்டும்
குகைக்குள் ஓரடி எடுத்து வைக்க இத்தனை விஷயங்களா, என்று தோன்றலாம். எளிமைப் படுத்துவதற்காக, ஏராளமான விவரங்களை இங்கே விட்டு விட்டேன். இன்றைய வீடியோ விளையாட்டுக்களில், குகைக்குள் நீர்ச் சொட்டுவதைக் கூட விட்டு வைப்பதில்லை!
குகைக் காட்சியில் ஒரு ஃப்ரேமை எடுத்துக் கொண்டால், முந்தைய ஃப்ரேமைவிடச் சில மாற்றங்கள் உள்ளன. அதாவது, சில பல கோடி முக்கோணங்கள் மாறிவிட்டன! முந்தைய காட்சியின் பலகோடி முக்கோணங்கள் வடிவியல் செயலியின் மெமரியில் இருக்கும். இதன் வேலை, அடுத்தக் காட்சியை மனித கண்களுக்கு இயற்கையாகத் தோன்றுவது போல, விநாடியின் 1000 பங்கிற்குள் உருவாக்குவது. என்னென்ன செய்ய வேண்டும்?
- முக்கோணம் ஒவ்வொன்றின் உச்சிகளையும் (vertex) ஆராய்ந்து, அவற்றின் நிழற்றல் (shading) மாற்றங்கள் மற்றும் ஒளி அமைப்பை கணிக்க வேண்டும். இதில் முக்கியமாக, அருகாமையில் உள்ள உச்சியின், நிழற்றல் மற்றும் ஒளியமைப்பைப் பொருத்து இந்தப் பணியைச் செய்ய வேண்டும். இதில் உள்ள முக்கிய அடிப்படைத் தேவை கேத்திர கணிதம் (geometry). இதை வன்பொருள் அழகாகக் கையாளும் (கூலிப்படை சுத்தம் செய்யும் பணியைப் போல)
- உச்சிகளை முக்கோணங்களாக மாற்றும் பணி. இதையும் வன்பொருள் அழகாகக் கையாளும்
- அடுத்த வேலை, பரவலாற்றல் அல்லது rasterization என்பது. திரையின், எந்த படமூலத்தை (pixel), எந்த முக்கோணம் நிரப்பும் என்ற கணிப்பு. இங்கு முக்கியமாக கவனிக்கப்பட வேண்டியது, ஒரு படமூலத்திற்கு, பல முக்கோணங்கள் தேவைப்படலாம். இதற்காகப் படத்துண்டுகள் (fragments) உருவாக்குதல் அவசியமாகிறது.
- அடுத்தபடியாக, படத்துண்டுகளை வைத்து, உச்சிகளின் நிறங்களைக் (vertex colors) கொண்டு, நிறம், நிழற்றல் மற்றும் ஒளி அளவினை கணக்கிடல். இதற்காக, முந்தைய காட்சியின் அளவுகள் மிகவும் தேவையாகிறது. கணினியின் மெமரியில் முன்காட்சி இருப்பதால், தக்க நேரத்தில் அதைப் பயன்படுத்திக் கொள்ள முடிகிறது. இதனால், படங்களில் இழையமைப்புத் (texture) தன்மையை உருவாக்குதல் சாத்தியமாகிறது. இதனால்தான், நம்மால், ஒரு குகைக்கல்லின் வளைவுகள், கூர்மைகள், அதில் விழும் வெளிச்சத்திற்கேற்ப நம்மால் கணினித் திரையில் காண முடிகிறது. மிக ஏராளமான கணினி சக்தி தேவையான ஒரு படி இது. உச்சிகளைக் கையாள்வதைப் போல, வன்பொருள் இணையாளல், இதற்கு மிகவும் உதவும் விஷயம்.
- கடைசியாக, படத்துண்டுகள், படமூலத்திற்கேற்ப சேர்க்கப்பட வேண்டும். அனிமேஷன் தொடரில் சொன்னது போல, ஒரு கற்பனை காமிரா ஒவ்வொரு காட்சியிலும் இருக்கும். காமிராவிலிருந்து அருகில் இருக்கும் படமூலங்கள் அதிக ஒளிர்வுடனும், தூரத்தில் இருக்கும் படமூலங்கள் குறைந்த ஒளிர்வுடனும் இருத்தல் அவசியம்
அட, குகைக்குள் ஒருவர் காலடி எடுத்து வைக்க, இத்தனை வேலைகளை கணினி செய்ய வேண்டுமா? உச்சி குளிரும் விஷயம், இந்த வடிவியல்! உச்சியைக் கையாண்டு, முக்கோணங்களாக மாற்றி, மீண்டும் முக்கோணங்களை படத்துண்டுகளாக மாற்றி, பத்துண்டுகளைக் கையாண்டு, அவற்றை படமூலமாக்குவது இந்தக் கூலிப்படையின் தனித்திறன்! இவை அனைத்தும் வடிவமைப்பு குழாய் மூலம் நொடியின் கோடி பங்கிற்குள் நடந்து முடிந்து விடுகிறது!
முதலில் உச்சிக் கையாள்மையும் (vertex processing) , படத்துண்டு கையாள்மையும் (fragment processing) வெவ்வேறு கட்டளை அமைப்புடன் (instruction set) இருந்தன. இன்று, ஒரே கட்டளை அமைப்புபடி இவை இரண்டும் இயங்கத் தொடங்கிவிட்டன. இதை இன்று ஒருங்கிணைந்த நிழற்றல் மாடல் (Unified Shader model) என்று கணினி பொறியாளர்கள் சொல்லுகிறார்கள்.
முன்னே சொன்ன சில விஷயங்களோடு, இந்தப் பணியை, நாம் சரி பார்த்தல் அவசியம். இல்லையெனில், மேல்சொன்ன படிகளுக்கும் மற்ற வடிவியல் செயலி மேல்வாரியான விளக்கங்களுக்கும் பாலம் அமைப்பது கடினம். நாம் அறிமுகப்படுத்திய, வடிவமைப்புப் குழாயில், பல கோடி உச்சிகளும், படத்துண்டுகளும் மற்றும் பல வடிவியல் அமைப்புகளும் நகர்ந்து கொண்டே இருக்கும். இதை ஒரு பெண்டியம் போன்ற பொதுச் செயலி எப்படி கையாளும் என்று முதலில் தெரிந்து கொள்வோம்.
- உச்சிகளை ஒன்றன் பின் ஒன்றாக (அல்லது சில நூறு உச்சிகள்) கணித்து, எல்லா உச்சிகளையும் முதலில் கையாளும்
- அடுத்த படியாக, உச்சிகளை முக்கோணங்களாக மாற்றும் பணி நிகழும்
- இப்படி ஒவ்வொன்றாக செயல்படும்
வடிவியல் செயலிகள் வேறு விதமாகச் செயல்படும்:
- அத்தனை உச்சிகளையும் உச்சி கையாளல் வன்பொருளுக்கு அனுப்பிவிடும்
- பல்லாயிரம் மைய செயல்தளங்கள் (processing cores) பட உச்சிகளை ஒரே நேரத்தில் கையாளும்
- உச்சி கையாள்மை முடிந்தவுடன், அந்த வன்பொருளே, படத்துண்டு கையாளும் பகுதிக்கு அனுப்பிவிடும்
- வேலைக்கு தயாராக இருக்கும் மூலக்கூறுகள், ஒரே நேரத்தில், படத்துண்டு கையாள்மையை மேற்கொள்கின்றன
- முக்கியமாக, படத்துண்டு, உச்சிகளுக்காக காத்திருப்பதில்லை. எல்லாம் ஒரே நேரத்தில் நடப்பதால், இதை இணையாளல் என்கிறோம்
பொது செயலிகள் அதிவேகமாகச் செயல்படும். ஆனால், அதைவிடக் குறைவான வேகத்தில், பல மூலக்கூறுகள் மூலம், இணையாளல் இது போன்ற வடிவியல் தேவைகளை எளிதாகப் பூர்த்திச் செய்கிறது. மேலே நாம் சொன்ன வடிவியல் செயலிகளின் செயல் படிகளில் எப்பொழுதும் முன்நோக்கும் அமைபே உண்டு. இதை feed forward அமைப்பு என்கிறார்கள்.
ஒருங்கிணைந்த நிழற்றல் மாடல் (Unified Shader model) மற்றும் பல புதிய முன்னேற்றங்கள் இன்று, இரு பெரும் ஆற்றல்களை வடிவியல் செயலிகளுக்கு வழங்கியுள்ளது:
- வடிவியல் செயல்களின் இணையாளல் இன்று சாத்தியம் (graphical task parallelism)
- வடிவியல் தரவு இணையாளல் இன்று சாத்தியம் (graphical data parallelism)
முக்கியமாக கணினி நிரலர்கள், பல்வேறு பாகங்களூக்கு நிரல்கள் எழுதிய காலம் மாறி, ஒரே ஒருங்கிணைந்த நிழற்றல் மாடலை மையமாகக் கொண்டு நிரல்களை எழுதலாம்.
மென்பொருள் நிரலமைப்பு மற்றும் புதிய முன்னேற்றங்களை அடுத்தப் பகுதியில் பார்க்கலாம். கடைசியாக, சற்று நகைசுவையாக வடிவியல் செயலிகளைப் பற்றிய ஒரு விடியோ இங்கே:
பின்குறிப்பு
தமிழ்ச்சொற்கள் எல்லோருக்கும் புரிய வேண்டும் என்று சில ஆங்கிலச்சொற்களை கட்டுரையில் பயன்படுத்தியுள்ளேன். இச்சொற்களுக்கு நிகரான சில தமிழ்ச்சொற்களை இங்கு பரிசீலனைக்கென முன்வைக்கிறேன்
# ஆங்கிலச்சொல் | தமிழ்ப்பரிந்துரை |
Basic design goals | அடிப்படை கட்டமைப்பு குறிக்கோள்கள் |
Geometry | கேத்திர கணிதம் |
Graphical data parallelism | வடிவியல் தரவு இணையாளல் |
Graphical fragment processing | படத்துண்டு கையாள்மையும் |
Graphical task parallelism | வடிவியல் செயல்களின் இணையாளல் |
Graphical vertex processing | உச்சிக் கையாள்மையும் |
Graphics Pipeline | வடிவமைப்பு குழாய் |
Instruction set | கணினி கட்டளை பட்டியல் |
Processing cores | மைய செயல்தளங்கள் |
Rasterization | பரவலாற்றல் |
Real time applications | உடன் நிகழ்வு பயன்பாடுகள் |
Shading | நிழற்றல் |
Software programming model | மென்பொருள் நிரலமைப்பு |
Texture | இழையமைப்பு |
Unified Shader model | ஒருங்கிணைந்த நிழற்றல் மாடல் |
Vertex | உச்சி |