Shading language
શેડિંગ લેંગ્વેજ એ ગ્રાફિક્સ પ્રોગ્રામિંગ લેંગ્વેજ છે જે પ્રોગ્રામિંગ શેડર ઇફેક્ટ્સ માટે અનુકૂળ છે. શેડિંગ ભાષાઓમાં સામાન્ય રીતે "વેક્ટર", "મેટ્રિક્સ", "કલર" અને "નોર્મલ" જેવા વિશેષ ડેટા પ્રકારો હોય છે. ઓફલાઇન રેન્ડરિંગમાં ઉપયોગમાં લેવાતી ઓફલાઇન રેન્ડરિંગ શેડિંગ ભાષાઓ કુદરતી ભાષાની નજીક હોય છે, જેથી પ્રોગ્રામિંગના કોઈ વિશેષ જ્ઞાનની જરૂર નથી. ઓફલાઇન રેન્ડરિંગનો ઉદ્દેશ વાસ્તવિક સમયના રેન્ડરિંગ કરતાં વધુ સમય અને ગણતરીના ખર્ચે મહત્તમ ગુણવત્તાવાળી છબીઓનું ઉત્પાદન કરવાનો છે. રેન્ડરમેન શેડિંગ લેંગ્વેજ રેન્ડરમેન શેડિંગ લેંગ્વેજ (આરએસએલ અથવા એસએલ, ટૂંકમાં), જે રેન્ડરમેન ઇન્ટરફેસ સ્પષ્ટીકરણમાં વ્યાખ્યાયિત થયેલ છે, તે ઉત્પાદન-ગુણવત્તાની રેન્ડરિંગ માટે એક સામાન્ય શેડિંગ લેંગ્વેજ છે. તે અત્યાર સુધીમાં અમલમાં મુકવામાં આવેલી પ્રથમ શેડિંગ ભાષાઓમાંની એક છે. તે છ મુખ્ય શેડર પ્રકારોને વ્યાખ્યાયિત કરે છેઃ પ્રકાશ સ્રોત શેડર્સ પ્રકાશ સ્રોત પરના બિંદુથી લક્ષ્ય સપાટી પરના બિંદુ સુધી ઉત્સર્જિત પ્રકાશના રંગની ગણતરી કરે છે. સપાટીના શેડર્સ આવતા પ્રકાશ અને ઑબ્જેક્ટના ભૌતિક ગુણધર્મોના આધારે ઑબ્જેક્ટની સપાટી પરના બિંદુઓના રંગ અને સ્થિતિનું મોડેલ બનાવે છે. વિસ્થાપન શેડર્સ રંગથી સ્વતંત્ર સપાટીની ભૂમિતિમાં હેરફેર કરે છે. ડિફૉર્મેશન શેડર્સ સમગ્ર જગ્યાને પરિવર્તિત કરે છે. માત્ર એક જ રેન્ડરમેન અમલીકરણ, સિટેક્સ ગ્રાફિક્સ દ્વારા AIR રેન્ડરર, આ શેડર પ્રકારનો અમલ કરે છે, જે જગ્યા પર લાગુ કરવામાં આવેલા માત્ર એક જ રેખીય પરિવર્તનને ટેકો આપે છે. વોલ્યુમ શેડર્સ પ્રકાશના રંગને હેરફેર કરે છે કારણ કે તે વોલ્યુમમાંથી પસાર થાય છે. તેઓ ધુમ્મસ જેવી અસરો પેદા કરે છે. ઇમેજર શેડર્સ અંતિમ પિક્સેલ મૂલ્યોમાં રંગ પરિવર્તનનું વર્ણન કરે છે. આ ઇમેજ ફિલ્ટર જેવું છે, સિવાય કે ઇમેજર શેડર ક્વોન્ટાઇઝેશન પહેલાં ડેટા પર કામ કરે છે. આવા ડેટામાં લાક્ષણિક આઉટપુટ ઉપકરણ પર પ્રદર્શિત કરી શકાય તેના કરતા વધુ ગતિશીલ શ્રેણી અને રંગ રીઝોલ્યુશન હોય છે. હૌદિની વીઇએક્સ શેડિંગ લેંગ્વેજ હૌદિની વીઇએક્સ (વેક્ટર એક્સપ્રેશન) શેડિંગ લેંગ્વેજ (ઘણીવાર "વીઇએક્સ" તરીકે સંક્ષિપ્ત કરવામાં આવે છે) રેન્ડરમેન પછી નજીકથી તૈયાર કરવામાં આવે છે. જો કે, સંપૂર્ણ 3D પેકેજમાં તેના એકીકરણનો અર્થ એ છે કે શેડર લેખક શેડરની અંદરની માહિતીને ઍક્સેસ કરી શકે છે, એક સુવિધા જે સામાન્ય રીતે રેન્ડરિંગ સંદર્ભમાં ઉપલબ્ધ નથી. આરએસએલ અને વીઇએક્સ વચ્ચેના ભાષાના તફાવતો મુખ્યત્વે વાક્યરચના છે, ઉપરાંત કેટલાક છાંયડાના નામોના નામોને લગતા તફાવતો પણ છે. ગેલાટો શેડિંગ લેંગ્વેજ ગેલાટોની શેડિંગ લેંગ્વેજ, જેમ કે હૌદિનીની વીઇએક્સ, રેન્ડરમેન પછી નજીકથી તૈયાર કરવામાં આવી છે. ગેલાટો શેડિંગ લેંગ્વેજ અને આરએસએલ વચ્ચેના તફાવતો મુખ્યત્વે વાક્યરચના છે-ગેલાટો કાર્ય વ્યાખ્યાઓમાં દલીલોને અલગ કરવા માટે અલ્પવિરામની જગ્યાએ અર્ધવિરામનો ઉપયોગ કરે છે અને કેટલાક શેડોપ્સમાં વિવિધ નામો અને પરિમાણો હોય છે. ઓપન શેડિંગ લેંગ્વેજ ઓપન શેડિંગ લેંગ્વેજ (ઓએસએલ) સોની પિક્ચર્સ ઈમેજવર્ક્સ દ્વારા તેના આર્નોલ્ડ રેન્ડરરમાં ઉપયોગ માટે વિકસાવવામાં આવી હતી. તેનો ઉપયોગ બ્લેન્ડરના સાયકલ રેન્ડર એન્જિન દ્વારા પણ થાય છે. ઓએસએલની સપાટી અને વોલ્યુમ શેડર્સ વ્યાખ્યાયિત કરે છે કે કેવી રીતે સપાટીઓ અથવા વોલ્યુમ પ્રકાશને એવી રીતે છૂટા પાડે છે જે મહત્વના નમૂના લેવા માટે પરવાનગી આપે છે; આમ, તે શારીરિક-આધારિત રેન્ડરર્સ માટે સારી રીતે અનુકૂળ છે જે રે ટ્રેસિંગ અને વૈશ્વિક પ્રકાશને ટેકો આપે છે. રીઅલ-ટાઇમ રેન્ડરિંગ માટે રીઅલ-ટાઇમ રેન્ડરિંગ શેડિંગ ભાષાઓ હવે વ્યાપક છે. તેઓ અગાઉના દાખલાઓ કરતાં ઉચ્ચ હાર્ડવેર એબ્સ્ટ્રેક્શન અને વધુ લવચીક પ્રોગ્રામિંગ મોડેલ બંને પ્રદાન કરે છે, જે હાર્ડકોડેડ પરિવર્તન અને શેડિંગ સમીકરણો છે. તેઓ ઓછા ઓવરહેડ સાથે વધુ નિયંત્રણ અને સમૃદ્ધ સામગ્રી પ્રદાન કરે છે. શેડર્સ કે જે સીધા જી. પી. યુ. પર ચલાવવા માટે રચાયેલ છે તે તેમના સ્ટ્રીમ પ્રોગ્રામિંગ મોડેલને કારણે ઉચ્ચ-થ્રુપુટ સામાન્ય પ્રક્રિયા માટે ઉપયોગી બન્યા; આ સમાન હાર્ડવેર પર ચાલતા કમ્પ્યુટ શેડર્સના વિકાસ તરફ દોરી ગયું (આ પણ જુઓઃ જી. પી. જી. પી. યુ.). ઐતિહાસિક રીતે, આવી કેટલીક ભાષાઓએ બજારમાં પ્રભુત્વ જમાવ્યું હતું; તેનું વર્ણન નીચે આપવામાં આવ્યું છે. એઆરબી એસેમ્બલી લેંગ્વેજ ઓપનજીએલ આર્કિટેક્ચર રિવ્યૂ બોર્ડે 2002માં એઆરબી એસેમ્બલી લેંગ્વેજની સ્થાપના પ્રોગ્રામેબલ ગ્રાફિક્સ પ્રોસેસર્સ માટે પ્રમાણભૂત નિમ્ન-સ્તરની સૂચના સમૂહ તરીકે કરી હતી. ઉચ્ચ-સ્તરની ઓપનજીએલ શેડિંગ ભાષાઓ ઘણીવાર લોડ કરવા અને અમલ માટે એઆરબી એસેમ્બલીમાં સંકલન કરે છે. ઉચ્ચ-સ્તરની શેડિંગ ભાષાઓથી વિપરીત, એઆરબી એસેમ્બલી નિયંત્રણ પ્રવાહ અથવા શાખાઓને સમર્થન આપતું નથી. જો કે, જ્યારે ક્રોસ-જી. પી. યુ. પોર્ટેબિલિટી જરૂરી હોય ત્યારે તેનો ઉપયોગ ચાલુ રહે છે. ઓપનજીએલ શેડિંગ લેંગ્વેજ જીએલએસએલ અથવા જીએલએસએલ તરીકે પણ ઓળખાય છે, આ પ્રમાણિત શેડિંગ લેંગ્વેજ ઓપનજીએલ સાથે ઉપયોગમાં લેવા માટે છે. આ ભાષા એક જ સૂચના સમૂહમાં શિરોબિંદુ અને ટુકડાની પ્રક્રિયાને એકીકૃત કરે છે, શરતી લૂપ્સ અને શાખાઓને મંજૂરી આપે છે. જી. એલ. એસ. એલ. એ એ. આર. બી. એસેમ્બલી ભાષાથી આગળ હતું. સી. જી. પ્રોગ્રામિંગ લેંગ્વેજ એનવીઆઈડીઆઈએ દ્વારા વિકસાવવામાં આવેલી સી. જી. લેંગ્વેજ સરળ અને કાર્યક્ષમ ઉત્પાદન પાઇપલાઇન એકીકરણ માટે ડિઝાઇન કરવામાં આવી હતી. તે API સ્વતંત્રતા ધરાવે છે અને સંપત્તિ વ્યવસ્થાપનને સુધારવા માટે ઘણા મફત સાધનો સાથે આવે છે. 2012માં સી. જી. નો વિકાસ બંધ કરવામાં આવ્યો હતો અને હવે આ ભાષાને નાપસંદ કરવામાં આવી છે. ડાયરેક્ટએક્સ શેડર એસેમ્બલી લેંગ્વેજ ડાયરેક્ટ3ડી 8 અને 9માં શેડર એસેમ્બલી લેંગ્વેજ એ શેડર મોડલ 1.0/1.1,2 અને 3માં શિરોબિંદુ અને પિક્સેલ શેડર્સ માટેની મુખ્ય પ્રોગ્રામિંગ લેંગ્વેજ છે. તે મધ્યવર્તી શેડર બાઈટકોડની સીધી રજૂઆત છે જે અમલ માટે ગ્રાફિક્સ ડ્રાઇવરને આપવામાં આવે છે. શેડર એસેમ્બલી ભાષાનો ઉપયોગ એકીકૃત શેડર મોડલ 4.0,4.1,5 અને 5.1 ને પ્રોગ્રામ કરવા માટે સીધો કરી શકાતો નથી, જો કે તે ડીબગ હેતુઓ માટે મધ્યવર્તી બાઈટકોડની રજૂઆત તરીકે તેનું કાર્ય જાળવી રાખે છે. ડાયરેક્ટએક્સ હાઇ-લેવલ શેડર લેંગ્વેજ હાઇ-લેવલ શેડિંગ લેંગ્વેજ (એચએલએસએલ) એ ડાયરેક્ટએક્સ 9 અને તેનાથી ઉપરના અને એક્સબોક્સ ગેમ કન્સોલ માટે સી-સ્ટાઇલ શેડર લેંગ્વેજ છે. તે એનવીડિયાના સી. જી. સાથે સંબંધિત છે, પરંતુ તે ફક્ત ડાયરેક્ટએક્સ અને એક્સબોક્સ દ્વારા સમર્થિત છે. એચ. એલ. એસ. એલ. કાર્યક્રમો ડાયરેક્ટએક્સ શેડર એસેમ્બલી લેંગ્વેજની સમકક્ષ બાઈટકોડમાં સંકલિત કરવામાં આવે છે. એચ. એલ. એસ. એલ. ને ડાયરેક્ટ3ડી 9માં શેડર એસેમ્બલી લેંગ્વેજના વૈકલ્પિક વિકલ્પ તરીકે રજૂ કરવામાં આવ્યું હતું, પરંતુ ડાયરેક્ટ3ડી 10 અને તેનાથી ઉપરની ભાષામાં જરૂરિયાત બની ગઈ હતી, જ્યાં શેડર એસેમ્બલી લેંગ્વેજને નાપસંદ કરવામાં આવે છે. એડોબ પિક્સેલ બેન્ડર અને એડોબ ગ્રાફિક્સ એસેમ્બલી લેંગ્વેજ એડોબ સિસ્ટમ્સે એડોબ ફ્લેશ 10 એપીઆઈના ભાગ રૂપે પિક્સેલ બેન્ડર ઉમેર્યું. પિક્સેલ બેન્ડર માત્ર પિક્સેલ પર પ્રક્રિયા કરી શકે છે પરંતુ 3D-વર્ટેક્સ ડેટા પર નહીં. ફ્લેશ 11 એ સ્ટેજ 3ડી નામની સંપૂર્ણપણે નવી 3ડી એપીઆઈ રજૂ કરી, જે એડોબ ગ્રાફિક્સ એસેમ્બલી લેંગ્વેજ (એજીએએલ) નામની તેની પોતાની શેડિંગ ભાષાનો ઉપયોગ કરે છે, જે સંપૂર્ણ 3ડી પ્રવેગક સપોર્ટ પ્રદાન કરે છે. પિક્સેલ બેન્ડર માટે જી. પી. યુ. પ્રવેગને ફ્લેશ 11.8 માં દૂર કરવામાં આવ્યું હતું. એ. જી. એ. એલ. એ નિમ્ન-સ્તરની પરંતુ પ્લેટફોર્મ-સ્વતંત્ર શેડિંગ ભાષા છે, જેને સંકલિત કરી શકાય છે, ઉદાહરણ તરીકે, અથવા જી. એલ. એસ. એલ. પ્લેસ્ટેશન શેડર લેંગ્વેજ સોનીએ પ્લેસ્ટેશન શેડર લેંગ્વેજ (પી. એસ. એસ. એલ.) ની જાહેરાત સી. જી./એચ. એલ. એસ. એલ. જેવી જ શેડિંગ લેંગ્વેજ તરીકે કરી હતી, પરંતુ તે પ્લેસ્ટેશન 4 માટે વિશિષ્ટ હતી. પી. એસ. એસ. એલ. મોટાભાગે પી. સી. પર એચ. એલ. એસ. એલ. શેડર્સ સાથે સુસંગત હોવાનું કહેવાય છે, પરંતુ પી. એસ. 4 પ્લેટફોર્મ માટે વધારાની સુવિધાઓ સાથે. મેટલ શેડિંગ લેંગ્વેજ એપલે લો-લેવલ ગ્રાફિક્સ API બનાવ્યું છે, જેને મેટલ કહેવાય છે, જે 2012 થી બનેલા મોટાભાગના મેક, 5S થી આઇફોન અને આઈપેડ એરથી આઈપેડ પર ચાલે છે. મેટલની પોતાની શેડિંગ લેંગ્વેજ છે જેને મેટલ શેડિંગ લેંગ્વેજ (MSL) કહેવાય છે, જે C + + 14 પર આધારિત છે અને ક્લાંગ અને LLVM નો ઉપયોગ કરીને અમલમાં મૂકવામાં આવે છે. એમ. એસ. એલ. શિરોબિંદુ, ટુકડો અને ગણતરી પ્રક્રિયાને એકીકૃત કરે છે. વેબજીપીયુ શેડિંગ લેંગ્વેજ વેબજીપીયુ શેડિંગ લેંગ્વેજ (ડબલ્યુજીએસએલ) એ વેબજીપીયુ માટે શેડર લેંગ્વેજ છે. એટલે કે, વેબજીપીયુ એપીઆઈનો ઉપયોગ કરતી એપ્લિકેશન જીપીયુ પર ચાલતા શેડર્સ તરીકે ઓળખાતા કાર્યક્રમોને વ્યક્ત કરવા માટે ડબલ્યુજીએસએલનો ઉપયોગ કરે છે. અનુવાદ શેડર્સને એક શેડિંગ લેંગ્વેજમાંથી બીજી ભાષામાં પોર્ટ કરવા માટે, કેટલાક અભિગમોનો ઉપયોગ કરવામાં આવે છેઃ એક સામાન્ય ઇન્ટરફેસને વ્યાખ્યાયિત કરો. ઉદાહરણ તરીકે, સી. જી./એચ. એલ. એસ. એલ., જી. એલ. એસ. એલ. અને એમ. એસ. એલ. બધા સી. પ્રીપ્રોસેસર મેક્રોને અમલમાં મૂકે છે, તેથી તમામ વિવિધ કામગીરીઓને સામાન્ય ઇન્ટરફેસમાં લપેટી શકાય છે. વાલ્વનો સ્રોત 2 અને એનવીઆઈડીઆઈએનો એફએક્સએએ 3.11 આ કરે છે. એક ભાષાનો બીજી ભાષામાં અનુવાદ કરો. ઉદાહરણ તરીકે, ડાયરેક્ટએક્સ બાઈટકોડને એચએલએસએલસીસી દ્વારા આંશિક રીતે જીએલએસએલમાં રૂપાંતરિત કરી શકાય છે, અને જીએલએસએલને એચએલએસએલમાં રૂપાંતરિત કરવા માટે ઘણા સાધનો અસ્તિત્વમાં છે જેમ કે એએનજીએલઇ અને એચએલએસએલ2જીએલએસએલ. મધ્યવર્તી ભાષાને વ્યાખ્યાયિત કરો. એસ. પી. આઈ. આર.-વી આંશિક રીતે આ હેતુ માટે રચાયેલ છે. તે એચ. એલ. એસ. એલ. અથવા જી. એલ. એસ. એલ. માંથી પેદા કરી શકાય છે, અને તેને એચ. એલ. એસ. એલ., જી. એલ. એસ. એલ. અથવા એમ. એસ. એલ. માં વિભાજીત કરી શકાય છે. સંદર્ભો નોંધો ઓપનજીએલ માટે અગાઉની વર્ટેક્સ શેડિંગ ભાષાઓમાં (કોઈ ચોક્કસ ક્રમમાં નહીં) EXT _ vertex _ shader, NV _ vertex _ પ્રોગ્રામ, ઉપરોક્ત એઆરબી _ vertex _ પ્રોગ્રામ, NV _ vertex _ પ્રોગ્રામ 2 અને NV _ vertex _ પ્રોગ્રામ 3 નો સમાવેશ થાય છે. ફ્રેગમેન્ટ શેડિંગ માટે એનવીપર્સ સંભવતઃ પ્રથમ શેડિંગ ભાષા છે જે એનવી _ રજિસ્ટર _ કોમ્બિનર્સ, પિક્સેલ ગણિત માટે એનવી _ રજિસ્ટર _ કોમ્બિનર્સ 2 અને ટેક્સચર લુકઅપ્સ માટે એનવી _ ટેક્સચર _ શેડર, એનવી _ ટેક્સચર _ શેડર 2 અને એનવી _ ટેક્સચર _ શેડર 3 પર આધારિત ઉચ્ચ-સ્તરની અમૂર્તતા દર્શાવે છે. ATI _ fragment _ shader એ "શબ્દમાળા લક્ષી" પદચ્છેદન સુવિધા પણ પૂરી પાડી ન હતી (જોકે તે પછીથી ATI _ ટેક્સ્ટ _ ફ્રેગમેન્ટ _ શેડર દ્વારા ઉમેરવામાં આવી છે). એઆરબી _ ફ્રેગમેન્ટ _ પ્રોગ્રામ, ખૂબ જ સફળ રહ્યો છે. એનવી _ ફ્રેગમેન્ટ _ પ્રોગ્રામ અને એનવી _ ફ્રેગમેન્ટ _ પ્રોગ્રામ 2 વાસ્તવમાં સમાન છે, જોકે બાદમાં અન્યના સંદર્ભમાં વધુ અદ્યતન કાર્યક્ષમતા પ્રદાન કરે છે. એનવીઆઈડીઆઈએ હોમ પેજ પરથી એફએક્સ કમ્પોઝર, રૂડી કોર્ટેસ અને સત્ય રાઘવચારીઃ ધ રેન્ડરમેન શેડિંગ લેંગ્વેજ ગાઇડ, કોર્સ ટેક્નોલોજી પીટીઆર, 1 આવૃત્તિ (ડિસેમ્બર 27,2007), પ્રોગ્રામિંગ લેંગ્વેજ ક્લાસિફિકેશન