ஷேடர்கள்: ஷேடர் லேப் மற்றும் நிலையான செயல்பாட்டு ஷேடர்கள் - ஒற்றுமை ஷேடர் குறிப்பு

Shaders Shaderlab Fixed Function Shaders Unity Shader Reference



ஷேடர்கள்: ஷேடர் லேப் மற்றும் நிலையான செயல்பாடு ஷேடர்கள்

ஷேடர்கள்: ஷேடர் லேப் மற்றும் நிலையான பைப்லைன் ஷேடர்கள்

இந்த ஆவணம் முக்கியமாக உத்தியோகபூர்வ ஒற்றுமை கையேட்டின் தனிப்பட்ட புரிதல் மற்றும் சுருக்கமாகும் (உண்மையில், மொழிபெயர்ப்பு பதிவுகளின் அடிப்படையில்:>)
தனிப்பட்ட பயன்பாட்டிற்கு மட்டுமே மற்றும் வணிக நோக்கங்களுக்காக பயன்படுத்தக்கூடாது. மறுபதிப்பு வரவேற்கத்தக்கது, தயவுசெய்து மூலத்தைக் குறிக்கவும்.
கட்டுரையில் சம்பந்தப்பட்ட செயல்பாடுகள் Unity2018.2 பதிப்பை அடிப்படையாகக் கொண்டவை.
குறிப்பு இணைப்பு: https://docs.unity3d.com/Manual/ShaderTut1.html

இந்த டுடோரியல் உங்கள் சொந்த ஷேடர்களை உருவாக்குவதற்கான முதல் படிகளை உங்களுக்குக் கற்பிக்கிறது, உங்கள் விளையாட்டின் தோற்றத்தைக் கட்டுப்படுத்தவும், கிராபிக்ஸ் செயல்திறனை மேம்படுத்தவும் உதவுகிறது.
இந்த டுடோரியல் உங்கள் விளையாட்டின் விளைவுகளை கட்டுப்படுத்தவும், உங்கள் கிராபிக்ஸ் செயல்திறனை மேம்படுத்தவும் உதவும் வகையில் உங்கள் சொந்த ஷேடரை உருவாக்குவதற்கான முதல் படியை உங்களுக்குக் கற்பிக்கும்.



ஒற்றுமை ஷேடர் லேப் எனப்படும் சக்திவாய்ந்த நிழல் மற்றும் பொருள் மொழியுடன் பொருத்தப்பட்டுள்ளது. பாணியில் இது சிஜிஎஃப்எக்ஸ் மற்றும் டைரக்ட் 3 டி எஃபெக்ட்ஸ் (.எஃப்எக்ஸ்) மொழிகளைப் போன்றது - இது ஒரு பொருளைக் காண்பிக்க தேவையான அனைத்தையும் விவரிக்கிறது.
ஒற்றுமை ஷேடர் லேப் எனப்படும் சக்திவாய்ந்த வண்ணமயமாக்கல் மற்றும் பொருள் மொழியுடன் வருகிறது. பாணியில், இது CgFX மற்றும் Direct3D விளைவுகள் (.FX) மொழிகளைப் போன்றது - இது தேவையான அனைத்தையும் காட்டும் பொருளை விவரிக்கிறது.



வெவ்வேறு கிராபிக்ஸ் வன்பொருள் திறன்களை இலக்காகக் கொண்ட யூனிட்டியின் மெட்டீரியல் இன்ஸ்பெக்டர் மற்றும் பல ஷேடர் செயலாக்கங்களில் (சப்ஷேடர்கள்) வெளிப்படும் பண்புகளை ஷேடர்கள் விவரிக்கின்றன, ஒவ்வொன்றும் முழுமையான கிராபிக்ஸ் வன்பொருள் ரெண்டரிங் நிலையை விவரிக்கிறது, மற்றும் பயன்படுத்த வேண்டிய வெர்டெக்ஸ் / துண்டு நிரல்கள். ஷேடர் நிரல்கள் உயர் மட்ட சிஜி / எச்எல்எஸ்எல் நிரலாக்க மொழியில் எழுதப்பட்டுள்ளன.
யுனிட்டியின் பொருள் இன்ஸ்பெக்டர் மற்றும் பல ஷேடர் செயலாக்கங்களில் (சப்ஷேடர்கள்) வெளிப்படும் பண்புகளை ஷேடர் விவரிக்கிறது, இது வெவ்வேறு கிராபிக்ஸ் வன்பொருள் செயல்பாடுகளுக்கான முழுமையான கிராபிக்ஸ் வன்பொருளை விவரிக்கிறது. ரெண்டரிங் நிலை, மற்றும் பயன்படுத்த வேண்டிய வெர்டெக்ஸ் / துண்டு நிரல். நிழல் நிரல்கள் மேம்பட்ட Cg / HLSL நிரலாக்க மொழியில் எழுதப்பட்டுள்ளன.



இந்த டுடோரியலில் “நிலையான செயல்பாடு” குறியீட்டைப் பயன்படுத்தி மிக எளிய ஷேடர்களை எவ்வாறு எழுதுவது என்பதை விவரிப்போம். அடுத்த அத்தியாயத்தில் நாம் வெர்டெக்ஸ் மற்றும் துண்டு ஷேடர் நிரல்களை அறிமுகப்படுத்துவோம். ஓப்பன்ஜிஎல் அல்லது டைரக்ட் 3 டி ரெண்டர் நிலைகளைப் பற்றி வாசகருக்கு அடிப்படை புரிதல் இருப்பதாகவும், எச்.எல்.எஸ்.எல், சி.ஜி., ஜி.எல்.எஸ்.எல் அல்லது மெட்டல் ஷேடர் நிரலாக்க மொழிகளில் சில அறிவைக் கொண்டிருப்பதாகவும் நாங்கள் கருதுகிறோம்.
இந்த டுடோரியலில், 'நிலையான பைப்லைன்' குறிச்சொற்களைப் பயன்படுத்தி மிக எளிய ஷேடர்களை எவ்வாறு எழுதுவது என்பதை விவரிப்போம். அடுத்த அத்தியாயத்தில், நாம் வெர்டெக்ஸ் மற்றும் துண்டு ஷேடர்களை உள்ளடக்குவோம். ஓப்பன்ஜிஎல் அல்லது டைரக்ட் 3 டி ரெண்டரிங் நிலையைப் பற்றி வாசகருக்கு அடிப்படை புரிதல் இருப்பதாகவும், எச்.எல்.எஸ்.எல், சி.ஜி., ஜி.எல்.எஸ்.எல் அல்லது மெட்டல் ஷேடிங் புரோகிராமிங் மொழிகளைப் பற்றிய சில அறிவு இருப்பதாகவும் நாங்கள் கருதுகிறோம்.

தொடங்குதல்

புதிய ஷேடரை உருவாக்க, பிரதான மெனுவிலிருந்து சொத்துக்கள்> உருவாக்கு> ஷேடர்> அன்லிட் ஷேடரைத் தேர்வுசெய்யவும் அல்லது ஏற்கனவே இருக்கும் ஷேடரை நகலெடுத்து அதிலிருந்து வேலை செய்யவும். புதிய ஷேடரை திட்டக் காட்சியில் இருமுறை கிளிக் செய்வதன் மூலம் திருத்தலாம்.
புதிய ஷேடரை உருவாக்க, சொத்துக்கள்> உருவாக்கு> ஷேடர்> அன்லிட் ஷேடரைத் தேர்வுசெய்க, அல்லது ஏற்கனவே இருக்கும் ஷேடரை நகலெடுத்து அதிலிருந்து வேலை செய்யுங்கள். புதிய ஷேடரை திட்டக் காட்சியில் இருமுறை கிளிக் செய்வதன் மூலம் திருத்தலாம்.



'நிலையான-செயல்பாடு' குறியீட்டில் மிகவும் எளிமையான ஷேடர்களை எழுத ஒற்றுமைக்கு ஒரு வழி உள்ளது. எளிமைக்காக இதைத் தொடங்குவோம். உட்புறமாக நிலையான செயல்பாட்டு நிழல்கள் நிழல் இறக்குமதி நேரத்தில் வழக்கமான வெர்டெக்ஸ் மற்றும் துண்டு நிரல்களாக மாற்றப்படுகின்றன.
'நிலையான பைப்லைன்' குறிச்சொற்களில் மிகவும் எளிமையான ஷேடர்களை எழுத ஒற்றுமைக்கு ஒரு வழி உள்ளது. எளிமைக்காக, இதைத் தொடங்குவோம். உட்புறத்தில், நிலையான குழாய் நிழல்கள் நிழல் இறக்குமதி செய்யப்படும்போது வழக்கமான வெர்டெக்ஸ் மற்றும் துண்டு நிரல்களாக மாற்றப்படுகின்றன.

நாங்கள் மிகவும் அடிப்படை நிழலுடன் தொடங்குவோம்:

Shader 'Tutorial/Basic' { Properties { _Color ('Main Color', Color) = (1,0.5,0.5,1) } SubShader { Pass { Material { Diffuse [_Color] } Lighting On } } }

இந்த எளிய ஷேடர் சாத்தியமான அடிப்படை ஷேடர்களில் ஒன்றை நிரூபிக்கிறது. இது மெயின் கலர் எனப்படும் வண்ணச் சொத்தை வரையறுத்து இயல்புநிலை இளஞ்சிவப்பு நிறத்தை ஒதுக்குகிறது (சிவப்பு = 100% பச்சை = 50% நீலம் = 50% ஆல்பா = 100%). பின்னர் அது ஒரு பாஸைத் தொடங்குவதன் மூலம் பொருளை வழங்குகிறது, மேலும் அந்த பாஸில் பரவக்கூடிய பொருள் கூறுகளை சொத்து _ வண்ணத்திற்கு அமைத்து, ஒவ்வொரு-வெர்டெக்ஸ் விளக்குகளையும் இயக்குகிறது.
இந்த எளிய ஷேடர் மிக அடிப்படையான ஷேடர்களில் ஒன்றை நிரூபிக்கிறது. இது மெயின் கலர் எனப்படும் வண்ணச் சொத்தை வரையறுத்து இயல்புநிலை இளஞ்சிவப்பு நிறத்தை அளிக்கிறது (சிவப்பு = 100% பச்சை = 50% நீலம் = 50% ஆல்பா = 100%). இது ஒரு பாஸை அழைப்பதன் மூலம் பொருளை வழங்குவதோடு, பரவக்கூடிய பொருள் கூறுகளை சொத்து வண்ணத்திற்கு அமைத்து, செயல்பாட்டின் போது வெர்டெக்ஸ் விளக்குகளை இயக்குகிறது.

இந்த நிழலைச் சோதிக்க, ஒரு புதிய பொருளை உருவாக்கி, கீழ்தோன்றும் மெனுவிலிருந்து (டுடோரியல்-> அடிப்படை) நிழலைத் தேர்ந்தெடுத்து, சில பொருளுக்கு பொருளை ஒதுக்குங்கள். மெட்டீரியல் இன்ஸ்பெக்டரில் வண்ணத்தை மாற்றவும் மற்றும் மாற்றங்களைப் பார்க்கவும். மிகவும் சிக்கலான விஷயங்களுக்கு செல்ல வேண்டிய நேரம்!
இந்த நிழலைச் சோதிக்க, ஒரு புதிய பொருளை உருவாக்கி, கீழ்தோன்றும் மெனுவிலிருந்து (டுடோரியல்-> அடிப்படை) நிழலைத் தேர்ந்தெடுத்து, பொருளை ஒரு பொருளுக்கு ஒதுக்கவும். மாற்றங்களைக் கவனிக்க மெட்டீரியல் இன்ஸ்பெக்டரில் வண்ணத்தை சரிசெய்யவும். இது மிகவும் சிக்கலான விஷயங்களைச் செய்ய வேண்டிய நேரம்!
படம்

அடிப்படை வெர்டெக்ஸ் லைட்டிங் அடிப்படை வெர்டெக்ஸ் லைட்டிங்
நீங்கள் ஏற்கனவே இருக்கும் சிக்கலான நிழலைத் திறந்தால், ஒரு நல்ல கண்ணோட்டத்தைப் பெறுவது சற்று கடினமாக இருக்கும். நீங்கள் தொடங்குவதற்கு, ஒற்றுமையுடன் அனுப்பப்படும் உள்ளமைக்கப்பட்ட வெர்டெக்ஸ்லிட் ஷேடரை நாங்கள் பிரிப்போம். இந்த ஷேடர் நிலையான-செயல்பாட்டு பைப்லைனைப் பயன்படுத்துகிறது.
நீங்கள் ஏற்கனவே இருக்கும் சிக்கலான ஷேடரைத் திறந்தால், நல்ல கண்ணோட்டத்தைப் பெறுவது கடினம். நீங்கள் தொடங்குவதற்கு, உள்ளமைக்கப்பட்ட வெர்டெக்ஸ்லிட் ஷேடரை நாங்கள் கூர்ந்து கவனிப்போம். இந்த ஷேடர் வெர்டெக்ஸ் விளக்குகளை முடிக்க ஒரு நிலையான பைப்லைனைப் பயன்படுத்துகிறது.

Shader 'VertexLit' { Properties { _Color ('Main Color', Color) = (1,1,1,0.5) _SpecColor ('Spec Color', Color) = (1,1,1,1) _Emission ('Emmisive Color', Color) = (0,0,0,0) _Shininess ('Shininess', Range (0.01, 1)) = 0.7 _MainTex ('Base (RGB)', 2D) = 'white' { } } SubShader { Pass { Material { Diffuse [_Color] Ambient [_Color] Shininess [_Shininess] Specular [_SpecColor] Emission [_Emission] } Lighting On SeparateSpecular On SetTexture [_MainTex] { constantColor [_Color] Combine texture * primary DOUBLE, texture * constant } } } }

அனைத்து ஷேடர்களும் ஷேடர் என்ற முக்கிய வார்த்தையுடன் தொடங்குகின்றன, அதைத் தொடர்ந்து ஷேடரின் பெயரைக் குறிக்கும் ஒரு சரம். இன்ஸ்பெக்டரில் காட்டப்பட்டுள்ள பெயர் இது. இந்த ஷேடருக்கான அனைத்து குறியீடுகளும் அதற்குப் பிறகு சுருள் பிரேஸ்களுக்குள் வைக்கப்பட வேண்டும்: {} (ஒரு தொகுதி என்று அழைக்கப்படுகிறது).
அனைத்து ஷேடர்களும் ஷேடர் என்ற முக்கிய வார்த்தையுடன் தொடங்கி பின்னர் ஷேடரின் பெயரைக் குறிக்கும் ஒரு சரம். இன்ஸ்பெக்டரில் காட்டப்படும் பெயர் இது. இந்த ஷேடருக்கான அனைத்து குறியீடுகளும் சுருள் பிரேஸ்களில் இணைக்கப்பட வேண்டும்: {} (ஒரு தொகுதி என்று அழைக்கப்படுகிறது).

  • பெயர் குறுகியதாகவும் விளக்கமாகவும் இருக்க வேண்டும். இது .ஷேடர் கோப்பு பெயருடன் பொருந்த வேண்டியதில்லை. பெயர் குறுகியதாகவும் விளக்கமாகவும் இருக்க வேண்டும். .Shader கோப்பு பெயருடன் இது பொருந்த வேண்டியதில்லை.
  • ஒற்றுமையில் துணைமெனஸில் ஷேடர்களை வைக்க, ஸ்லாஷ்களைப் பயன்படுத்தவும் - எ.கா. மைஷேடர்ஸ் / டெஸ்ட் மைஷேடர்ஸ் அல்லது மைஷேடர்ஸ்-> டெஸ்ட் எனப்படும் துணைமெனுவில் டெஸ்டாகக் காட்டப்படும். மெனு பட்டியில் ஷேடர்களை வைக்க, ஸ்லாஷ்களைப் பயன்படுத்தவும் - எடுத்துக்காட்டாக, மைஷேடர்ஸ் / டெஸ்ட் இது மைஷேடர்ஸ் என்ற பெயரில் உள்ள துணைமெனுவில் டெஸ்டாக காட்டப்படும், அதாவது மைஷேடர்ஸ்-> டெஸ்ட்.

ஷேடர் ஒரு பண்புகள் தொகுப்பால் ஆனது, அதைத் தொடர்ந்து சப்ஷேடர் தொகுதிகள் உள்ளன. இவை ஒவ்வொன்றும் கீழே உள்ள பிரிவுகளில் விவரிக்கப்பட்டுள்ளன.
ஷேடர் ஒரு சொத்துத் தொகுதியைக் கொண்டுள்ளது, அதைத் தொடர்ந்து சப்ஷேடர் தொகுதி உள்ளது. இவை பின்வரும் பிரிவுகளில் விவரிக்கப்பட்டுள்ளன.

பண்புகள்
மெட்டீரியல் இன்ஸ்பெக்டரில் கலைஞர்கள் திருத்தக்கூடிய எந்தவொரு பண்புகளையும் ஷேடர் தொகுதியின் தொடக்கத்தில் நீங்கள் வரையறுக்கலாம். VertexLit எடுத்துக்காட்டில் பண்புகள் இப்படி இருக்கும்:
நிழல் தொகுதியின் தொடக்கத்தில், பொருள் ஆய்வாளரில் கலை திருத்தக்கூடிய எந்த பண்புகளையும் நீங்கள் வரையறுக்கலாம். VertexLit எடுத்துக்காட்டில், பண்புகள் இது போன்றவை:
படம்
பண்புகள் தொகுதிக்குள் தனித்தனி வரிகளில் பட்டியலிடப்பட்டுள்ளன. ஒவ்வொரு சொத்தும் உள் பெயருடன் தொடங்குகிறது (வண்ணம், மெயின்டெக்ஸ்). அடைப்புக்குறிக்குள் இது இன்ஸ்பெக்டரில் காட்டப்பட்டுள்ள பெயர் மற்றும் சொத்தின் வகை. அதன் பிறகு, இந்த சொத்தின் இயல்புநிலை மதிப்பு பட்டியலிடப்பட்டுள்ளது:
பண்புக்கூறு தொகுப்பில் ஒரு தனி வரியில் பண்புக்கூறு பட்டியலிடப்பட்டுள்ளது. ஒவ்வொரு பண்புக்கூறு உள் பெயருடன் தொடங்குகிறது (வண்ணம், மெயின்டெக்ஸ்). இன்ஸ்பெக்டரில் காட்டப்படும் பெயர்கள் மற்றும் பண்புகளின் பெயர்கள் அடைப்புக்குறிக்குள் தோன்றும். இதற்குப் பிறகு, இந்த சொத்தின் இயல்புநிலை மதிப்புகள் பட்டியலிடப்பட்டுள்ளன:
படம்
சாத்தியமான வகைகளின் பட்டியல் பண்புகள் குறிப்பில் உள்ளன. இயல்புநிலை மதிப்பு சொத்து வகையைப் பொறுத்தது. ஒரு வண்ணத்தின் எடுத்துக்காட்டில், இயல்புநிலை மதிப்பு நான்கு கூறு திசையன் இருக்க வேண்டும்.
பண்புகள் குறிப்பு பிரிவில் சாத்தியமான வகைகளை பட்டியலிடுகிறது. இயல்புநிலை மதிப்பு பண்புக்கூறு வகையைப் பொறுத்தது. வண்ண எடுத்துக்காட்டில், இயல்புநிலை மதிப்பு நான்கு ஒருங்கிணைந்த திசையன்களாக இருக்க வேண்டும்.
இப்போது எங்கள் பண்புகள் வரையறுக்கப்பட்டுள்ளன, மேலும் உண்மையான நிழலை எழுதத் தயாராக உள்ளோம்.
நாங்கள் இப்போது பண்புகளை வரையறுத்துள்ளோம், உண்மையான நிழல்களை எழுதத் தயாராக உள்ளோம்.

நிழல் உடல்
நாம் செல்வதற்கு முன், ஒரு ஷேடர் கோப்பின் அடிப்படை கட்டமைப்பை வரையறுப்போம்.
நாம் தொடர்வதற்கு முன் ஒரு ஷேடர் கோப்பின் அடிப்படை கட்டமைப்பை வரையறுப்போம்.
வெவ்வேறு கிராஃபிக் வன்பொருள் வெவ்வேறு திறன்களைக் கொண்டுள்ளது. எடுத்துக்காட்டாக, சில கிராபிக்ஸ் கார்டுகள் துண்டு நிரல்களை ஆதரிக்கின்றன, மற்றவர்கள் சிலருக்கு ஒரு பாஸுக்கு நான்கு அமைப்புகளை இட முடியாது, மற்றவர்கள் இரண்டு அல்லது ஒன்று போன்றவற்றை மட்டுமே செய்ய முடியும்
. உங்கள் பயனர் வைத்திருக்கும் எந்தவொரு வன்பொருளையும் முழுமையாகப் பயன்படுத்த உங்களை அனுமதிக்க, ஒரு ஷேடரில் பல சப்ஷேடர்கள் இருக்கலாம். யூனிட்டி ஒரு ஷேடரை வழங்கும்போது, ​​அது எல்லா சப்ஷேடர்களுக்கும் சென்று வன்பொருள் ஆதரிக்கும் முதல் ஒன்றைப் பயன்படுத்தும்.
வெவ்வேறு கிராபிக்ஸ் வன்பொருள் வெவ்வேறு செயல்பாடுகளைக் கொண்டுள்ளது. எடுத்துக்காட்டாக, சில கிராபிக்ஸ் அட்டைகள் துண்டு நிரல்களை ஆதரிக்கின்றன, மற்றவை ஆதரிக்கவில்லை. சிலர் ஒவ்வொரு சேனலிலும் நான்கு அமைப்புகளை வைக்கலாம், மற்றவர்கள் இரண்டு அல்லது ஒன்று மற்றும் பலவற்றை மட்டுமே கொண்டிருக்க முடியும். உங்கள் பயனர்கள் வைத்திருக்கும் எந்தவொரு வன்பொருளையும் முழுமையாகப் பயன்படுத்த உங்களை அனுமதிக்க, ஒரு ஷேடரில் பல சப்ஷேடர்கள் (சப்ஷேடர்கள்) இருக்கலாம். யூனிட்டி ஒரு ஷேடரை வழங்கும்போது, ​​அது எல்லா குழந்தை ஷேடர்களிலும் மீண்டும் இயங்குகிறது மற்றும் வன்பொருள் ஆதரிக்கும் முதல் ஷேடரைப் பயன்படுத்துகிறது.

Shader 'Structure Example' { Properties { /* ...shader properties... } SubShader { // ...subshader that requires DX11 / GLES3.1 hardware... } SubShader { // ...subshader that might look worse but runs on anything :) } }

இந்த அமைப்பு யூனிட்டியை ஏற்கனவே உள்ள அனைத்து வன்பொருள்களையும் ஆதரிக்க அனுமதிக்கிறது மற்றும் ஒவ்வொன்றிலும் தரத்தை அதிகரிக்கிறது. இருப்பினும், இது சில நீண்ட ஷேடர்களை விளைவிக்கிறது.
இந்த அமைப்பு யூனிட்டி ஏற்கனவே இருக்கும் அனைத்து வன்பொருள்களையும் ஆதரிக்கவும் ஒவ்வொரு வன்பொருளின் தரத்தையும் அதிகரிக்கவும் அனுமதிக்கிறது. இருப்பினும், இது சில நீண்ட நிழல்களை உருவாக்குகிறது.
ஒவ்வொரு சப்ஷேடர் தொகுதிக்கும் உள்ளே நீங்கள் அனைத்து பாஸ்கள் பகிர்ந்த ரெண்டரிங் நிலையை அமைத்து, ரெண்டரிங் பாஸ்களை வரையறுக்கிறீர்கள். கிடைக்கக்கூடிய கட்டளைகளின் முழுமையான பட்டியலை சப்ஷேடர் குறிப்பில் காணலாம்.
ஒவ்வொரு துணை-பொருள் தொகுதியிலும், நீங்கள் அனைத்து சேனல்களின் ரெண்டரிங் நிலையை அமைத்து, ரெண்டரிங் சேனலை வரையறுக்கிறீர்கள். கிடைக்கக்கூடிய கட்டளைகளின் முழுமையான பட்டியலை சப்ஷேடர் குறிப்பு பிரிவில் காணலாம்.

சீட்டுகள்
ஒவ்வொரு சப்ஷேடரும் பாஸின் தொகுப்பாகும். ஒவ்வொரு பாஸிற்கும், பொருள் வடிவியல் காண்பிக்கப்படுகிறது, எனவே குறைந்தது ஒரு பாஸ் இருக்க வேண்டும். எங்கள் வெர்டெக்ஸ்லிட் ஷேடருக்கு ஒரே ஒரு பாஸ் உள்ளது:
ஒவ்வொரு குழந்தை நிழலும் சேனல்களின் தொகுப்பு. ஒவ்வொரு சேனலுக்கும், பொருள் வடிவியல் வழங்கப்படுகிறது, எனவே குறைந்தது ஒரு சேனலையாவது இருக்க வேண்டும். எங்கள் வெர்டெக்ஸ்லிட் ஷேடருக்கு ஒரே ஒரு சேனல் உள்ளது:

// ...snip... Pass { Material { Diffuse [_Color] Ambient [_Color] Shininess [_Shininess] Specular [_SpecColor] Emission [_Emission] } Lighting On SeparateSpecular On SetTexture [_MainTex] { constantColor [_Color] Combine texture * primary DOUBLE, texture * constant } } // ...snip...

ஒரு பாஸில் வரையறுக்கப்பட்ட எந்த கட்டளைகளும் ஒரு குறிப்பிட்ட வழியில் வடிவவியலை வழங்க கிராபிக்ஸ் வன்பொருளை உள்ளமைக்கிறது.
பாஸில் வரையறுக்கப்பட்ட எந்த கட்டளையும் ஒரு குறிப்பிட்ட வழியில் வடிவவியலை வழங்க கிராபிக்ஸ் வன்பொருளை உள்ளமைக்கும்.
மேலேயுள்ள எடுத்துக்காட்டில், எங்கள் சொத்து மதிப்புகளை நிலையான செயல்பாடு விளக்கு பொருள் அமைப்புகளுடன் பிணைக்கும் ஒரு பொருள் தொகுதி உள்ளது. லைட்டிங் ஆன் கட்டளை நிலையான வெர்டெக்ஸ் விளக்குகளை இயக்குகிறது, மற்றும் செப்பரேட் ஸ்பெகுலர் ஆன் ஸ்பெகுலர் ஹைலைட்டுக்கு தனி வண்ணத்தைப் பயன்படுத்த உதவுகிறது.
மேலே உள்ள எடுத்துக்காட்டில், எங்கள் சொத்து மதிப்புகளை நிலையான பைப்லைன் லைட்டிங் பொருள் அமைப்புகளுடன் பிணைக்கும் ஒரு பொருள் தொகுதி எங்களிடம் உள்ளது. லைட்டிங் ஆன் கட்டளை நிலையான வெர்டெக்ஸ் விளக்குகளை இயக்குகிறது, மேலும் சிறப்பம்சங்களைக் காண்பிக்க தனி நிறத்தைப் பயன்படுத்தி தனி ஸ்பெகுலர் இயக்கப்படுகிறது.
இந்த கட்டளைகள் அனைத்தும் நிலையான செயல்பாடு ஓபன்ஜிஎல் / டைரக்ட் 3 டி வன்பொருள் மாதிரியுடன் நேரடியாக வரைபடமாகின்றன. இது குறித்த கூடுதல் தகவலுக்கு OpenGL சிவப்பு புத்தகத்தைப் பாருங்கள்.
இதுவரை, இந்த கட்டளைகள் அனைத்தும் நிலையான பைப்லைன் ஓபன்ஜிஎல் / டைரக்ட் 3 டி வன்பொருள் மாதிரியுடன் நேரடியாக வரைபடமாகின்றன. இது குறித்த கூடுதல் தகவலுக்கு, ஓப்பன்ஜிஎல் சிவப்பு புத்தகத்தைப் பாருங்கள்.
அடுத்த கட்டளை, SetTexture, மிகவும் முக்கியமானது. இந்த கட்டளைகள் நாம் பயன்படுத்த விரும்பும் அமைப்புகளையும், அவற்றை எங்கள் ரெண்டரிங்கில் எவ்வாறு கலப்பது, இணைப்பது மற்றும் பயன்படுத்துவது என்பதையும் வரையறுக்கின்றன. SetTexture கட்டளையைத் தொடர்ந்து நாம் பயன்படுத்த விரும்பும் அமைப்பின் சொத்து பெயர் (_MainTex இங்கே) இதைத் தொடர்ந்து ஒரு கூட்டுத் தொகுதி, அமைப்பு எவ்வாறு பயன்படுத்தப்படுகிறது என்பதை வரையறுக்கிறது. திரையில் காண்பிக்கப்படும் ஒவ்வொரு பிக்சலுக்கும் ஒருங்கிணைந்த தொகுப்பில் உள்ள கட்டளைகள் செயல்படுத்தப்படுகின்றன.
அடுத்த கட்டளை, SetTexture, மிகவும் முக்கியமானது. இந்த கட்டளைகள் நாம் பயன்படுத்த விரும்பும் அமைப்புகளையும், அவற்றை எவ்வாறு கலப்பது, இணைப்பது மற்றும் பயன்படுத்துவது என்பதையும் வரையறுக்கின்றன. SetTexture கட்டளையைத் தொடர்ந்து நாம் பயன்படுத்த விரும்பும் அமைப்பின் சொத்து பெயர் (இங்கே _MainTex), அதைத் தொடர்ந்து ஒரு கலப்புத் தொகுதி, அமைப்பு எவ்வாறு பயன்படுத்தப்படுகிறது என்பதை வரையறுக்கிறது. ஒருங்கிணைந்த தொகுதியில் உள்ள கட்டளைகள் திரையில் காண்பிக்கப்படும் ஒவ்வொரு பிக்சலுக்கும் செயல்படுத்தப்படும்.
இந்த தொகுதிக்குள் ஒரு நிலையான வண்ண மதிப்பை அமைக்கிறோம், அதாவது பொருளின் நிறம், _ வண்ணம். இந்த நிலையான நிறத்தை கீழே பயன்படுத்துவோம்.
இந்த தொகுதியில், ஒரு நிலையான வண்ண மதிப்பை, பொருளின் நிறம், _ வண்ணத்தை அமைக்கிறோம். இந்த நிலையான நிறத்தை கீழே பயன்படுத்துவோம்.
அடுத்த கட்டளையில், வண்ண மதிப்புகளுடன் அமைப்பை எவ்வாறு கலக்க வேண்டும் என்பதைக் குறிப்பிடுகிறோம். கம்பைன் கட்டளையுடன் இதைச் செய்கிறோம், இது அமைப்பை இன்னொருவருடன் அல்லது வண்ணத்துடன் எவ்வாறு கலப்பது என்பதைக் குறிப்பிடுகிறது. பொதுவாக இது போல் தெரிகிறது: கலர் பார்ட், ஆல்பாபார்ட் ஆகியவற்றை இணைக்கவும்
அடுத்த கட்டளையில், வண்ண மதிப்புகளுடன் அமைப்புகளை எவ்வாறு கலப்பது என்பதைக் குறிப்பிடுகிறோம். ஒருங்கிணைந்த கட்டளையைப் பயன்படுத்தி இதைச் செய்கிறோம், இது மற்றொரு அல்லது வண்ணத்துடன் அமைப்புகளை எவ்வாறு கலப்பது என்பதைக் குறிப்பிடுகிறது. பொதுவாக, இது போல் தெரிகிறது: கலர் பார்ட், ஆல்பாபார்ட் ஆகியவற்றை இணைக்கவும்
இங்கே கலர் பார்ட் மற்றும் ஆல்பாபார்ட் முறையே வண்ணம் (ஆர்ஜிபி) மற்றும் ஆல்பா (ஏ) கூறுகளின் கலவையை வரையறுக்கின்றன. ஆல்பாபார்ட் தவிர்க்கப்பட்டால், அது கலர் பார்ட் போன்ற கலவையைப் பயன்படுத்துகிறது.
இங்கே, கலர் பார்ட் மற்றும் ஆல்பாபார்ட் முறையே வண்ண (ஆர்ஜிபி) மற்றும் ஆல்பா (ஏ) கூறுகளின் கலவையை வரையறுக்கின்றன. ஆல்பாபார்ட் தவிர்க்கப்பட்டால், அது கலர் பார்ட்டின் அதே கலவையைப் பயன்படுத்தும்.
எங்கள் வெர்டெக்ஸ்லிட் எடுத்துக்காட்டில்: அமைப்பு * முதன்மை டபுள், அமைப்பு * மாறிலி ஆகியவற்றை இணைக்கவும்
இங்கே “அமைப்பு” என்பது தற்போதைய அமைப்பிலிருந்து வரும் வண்ணம் (இங்கே _MainTex). இது பெருக்கப்படுகிறது ( ) முதன்மை வெர்டெக்ஸ் வண்ணத்துடன். முதன்மை வண்ணம் என்பது மேலே உள்ள பொருள் மதிப்புகளிலிருந்து கணக்கிடப்படும் வெர்டெக்ஸ் லைட்டிங் வண்ணமாகும். இறுதியாக, லைட்டிங் தீவிரத்தை (டபுள்) அதிகரிக்க இதன் விளைவாக இரண்டால் பெருக்கப்படுகிறது. ஆல்பா மதிப்பு (கமாவுக்குப் பிறகு) என்பது நிலையான மதிப்பால் பெருக்கப்படும் அமைப்பு (மேலே நிலையான நிறத்துடன் அமைக்கப்படுகிறது). அடிக்கடி பயன்படுத்தப்படும் மற்றொரு கூட்டு முறை முந்தையது என்று அழைக்கப்படுகிறது (இந்த நிழலில் பயன்படுத்தப்படவில்லை). இது முந்தைய எந்த செட் டெக்ஸ்டெர் படியின் விளைவாகும், மேலும் பல இழைமங்கள் மற்றும் / அல்லது வண்ணங்களை ஒருவருக்கொருவர் இணைக்கப் பயன்படுத்தலாம்.
இங்குள்ள 'அமைப்பு' என்பது தற்போதைய அமைப்பிலிருந்து வரும் வண்ணம் (இங்கே _MainTex). இது பிரதான வெர்டெக்ஸ் நிறத்தால் பெருக்கப்படுகிறது (
) இன். முதன்மை நிறம் என்பது வெர்டெக்ஸ் விளக்குகளின் நிறம், மேலே உள்ள பொருள் மதிப்புகளிலிருந்து கணக்கிடப்படுகிறது. இறுதியாக, ஒளி தீவிரத்தை (DOUBLE) அதிகரிக்க இதன் விளைவாக 2 ஆல் பெருக்கப்படுகிறது. ஆல்பா மதிப்பு (கமாவின் பின்னால்) என்பது நிலையான மதிப்பால் பெருக்கப்படும் அமைப்பு (மாறிலி வண்ணம் மேலே அமைக்கப்பட்டுள்ளது). அடிக்கடி பயன்படுத்தப்படும் மற்றொரு சேர்க்கை முறை முந்தையது என அழைக்கப்படுகிறது (இந்த நிழலில் பயன்படுத்தப்படவில்லை). இது முந்தைய SetTexture படிநிலையின் விளைவாகும், இது பல கட்டமைப்புகள் மற்றும் / அல்லது வண்ணங்களை ஒருவருக்கொருவர் இணைக்கப் பயன்படுகிறது.

சுருக்கம்

எங்கள் வெர்டெக்ஸ்லிட் ஷேடர் நிலையான வெர்டெக்ஸ் விளக்குகளை உள்ளமைக்கிறது மற்றும் அமைப்பு இணைப்புகளை அமைக்கிறது, இதனால் காண்பிக்கப்பட்ட லைட்டிங் தீவிரம் இரட்டிப்பாகும்.
எங்கள் வெர்டெக்ஸ்லிட் ஷேடர் நிலையான வெர்டெக்ஸ் விளக்குகளை உள்ளமைக்கிறது மற்றும் காண்பிக்கப்பட்ட ஒளி தீவிரத்தை இரட்டிப்பாக்க அமைப்பு கலவையை அமைக்கிறது.

நாம் அதிக பாஸ்களை ஷேடரில் வைக்கலாம், அவை ஒன்றன் பின் ஒன்றாக வழங்கப்படும். இப்போதைக்கு, நாம் விரும்பிய விளைவைக் கொண்டிருப்பதால் அது அவசியமில்லை. எந்தவொரு மேம்பட்ட அம்சங்களையும் நாங்கள் பயன்படுத்தாததால் எங்களுக்கு ஒரு சப்ஷேடர் மட்டுமே தேவை - யூனிட்டி ஆதரிக்கும் எந்த கிராபிக்ஸ் அட்டையிலும் இந்த குறிப்பிட்ட ஷேடர் வேலை செய்யும்.
நாம் அதிகமான சேனல்களை நிழலில் வைக்கலாம், அவை ஒவ்வொன்றாக வழங்கப்படும். இருப்பினும், இப்போதைக்கு, இது நாம் எதிர்பார்ப்பது அல்ல. எந்தவொரு மேம்பட்ட அம்சங்களையும் நாங்கள் பயன்படுத்தாததால் எங்களுக்கு ஒரு சப்ஷேடர் மட்டுமே தேவை - இந்த குறிப்பிட்ட ஷேடர் யூனிட்டி ஆதரிக்கும் எந்த கிராபிக்ஸ் கார்டிலும் வேலை செய்யும்.

வெர்டெக்ஸ்லிட் ஷேடர் என்பது நாம் சிந்திக்கக்கூடிய மிக அடிப்படையான ஷேடர்களில் ஒன்றாகும். நாங்கள் எந்தவொரு வன்பொருள் குறிப்பிட்ட செயல்பாடுகளையும் பயன்படுத்தவில்லை, மேலும் ஷேடர்லேப் மற்றும் சிஜி / எச்எல்எஸ்எல் வழங்க வேண்டிய சிறப்பு மற்றும் குளிர் கட்டளைகளை நாங்கள் பயன்படுத்தவில்லை.
வெர்டெக்ஸ்லிட் ஷேடர் என்பது நாம் சிந்திக்கக்கூடிய மிக அடிப்படையான ஷேடர்களில் ஒன்றாகும். நாங்கள் எந்தவொரு வன்பொருள்-குறிப்பிட்ட செயல்பாடுகளையும் பயன்படுத்தவில்லை, மேலும் ஷேடர்லேப் மற்றும் சிஜி / எச்எல்எஸ்எல் வழங்கிய சிறப்பு மற்றும் குளிர் கட்டளைகளை நாங்கள் பயன்படுத்தவில்லை.

அடுத்த அத்தியாயத்தில் Cg / HLSL மொழியைப் பயன்படுத்தி தனிப்பயன் வெர்டெக்ஸ் மற்றும் துண்டு நிரல்களை எவ்வாறு எழுதுவது என்பதை விளக்குவதன் மூலம் தொடருவோம்.
அடுத்த அத்தியாயத்தில், Cg / HLSL மொழியைப் பயன்படுத்தி தனிப்பயன் வெர்டெக்ஸ் மற்றும் துண்டு நிரல்களை எவ்வாறு எழுதுவது என்பதை நாங்கள் தொடர்ந்து விளக்குவோம்.