The RenderMan Shading Language нь С хэлтэй ойролцоо бөгөөд гадаргуугын материал, гэрэл гэх мэт зүйлсийг тодорхойлоход зориулагдсан өндөр түвшний програмчлалын хэл юм. С хэлтэй харьцуулахад тун энгийн боловч маш чанартай зураг гаргах чадвартай .
С хэлийг бодвол RSL нь хязгаарлагдмал, дутуу дулимаг мэт боловч дотоод зохион байгуулалтыг нь ойлгосноор энэхүү хязгаарлалт нь RSL хэлийг тун хялбар ойлгомжтой болгож байгааг мэднэ. Хэрвээ С хэлийг сайн мэддэг бол RSL хэлийг DSO плагин ашиглаж өргөжүүлэх бололцоотой. RenderMan Shading Language нь одоогоор өөртөө 100 гаруй бэлэн функцыг агуулж байна.
PRMan-аас өөр хөрвүүлэгч (Renderer) ашигладаг хүмүүс дараахь зүйлсийг анхаарах хэрэгтэй. Ихэнхи хөрвүүлэгчид RiSpec-д зааснаас ялгаатай өөрсдийн гэсэн дуудах аргатай байдаг бөгөөд заримдаа RiSpec-д тодорхойлогдоогүй дуудалтыг ч ашиглах тохиолдол бий. Иймээс өөрийн ашиглаж буй хөрвүүлэгчийн гарын авлагыг сайтар уншиж судлах хэрэгтэй.
Shader нь хөрвүүлэгч гадаргууг ямархуу харагдахыг тооцоолоход хэрэглэгдэх програмын зааварчилгааны багц ба компютер графикт ашиглагддаг нэр томъёолол юм. Shader-тэй ажиллахад наад зах нь хоёр файлтай ажиллана. RSL эх кодыг агуулсан файл болон хөрвүүлэгдсэн файл. Эх код нь хүн унших боломжтой, тайлбартай байдаг бол хөрвүүлсэн файл нь хөрвүүлэгч л ойлгох боломжтой заавруудыг агуулсан ASCII болон бинари файл байдаг. Адилхан эх кодыг хөрвүүлээд RiSpec-ийн зарчмыг баримталдаг төрөл бүрийн хөрвүүлэгч дээр хэрэглэж болно.
Shader-ийн кодыг агуулсан файл нь .sl өргөтгөлтэй байдаг. Хөрвүүлсэн shader файлууд нь янз бүрийн өргөтгөлтэй байдаг. Хамгийн өргөн ашиглагддаг хөрвүүлэгчид нь PRMan-> .slo , 3Delight ->.sdl , Aqsis-> .slx, RenderDotC*-> .dll, .so өргөтгөлийг ашигладаг.
Shader-ийн төрлүүд
Геометр биетийн гадаргууг дүрслэхийн тулд RiSpec нь зургаан төрлийн øýéäðийг тодорхойлсон байдаг. Эдгээр øýéäðүүд нь эцсийн цэг зурагдаж файл руу хадгалагдах ýñâýë äýëãýöýíä çóðàãäàõûí өмнө бага хэмжээний мэдээлл¿¿äийг боловсруулан тооцоолж дараагийн shader-т дамжуулах үүрэгтэй. Shader нь дараахи дарааллын дагуу гүйцэтгэгдэнэ.
Displacement
Шилжүүлэгч буюу displacement shader нь шилжүүлэлт буюу геометр биетийн гадаргууг өөрчлөх (displacement) эсвэл товойлгох буюу гадаргуугын нормал векторыг өөрчлөх (bump) гэсэн үндсэн үүрэгтэй. Шилжүүлэлт нь геометр биетийн хэлбэрийг өөрчилдөг бол bump нь харагдах байдлыг нь өөрчилдөг. Энэ нь гадаргуу дээр хамгийн эхэнд гүйцэтгэгдэх ёстой shader юм. Учир нь обьектод шилжүүлэлт хийгдэхэд өмнө нь харагдаж байсан хэсэг харагдахаа болих эсвэл эсрэгээрээ õàðàãäàõã¿é áàéñàí õýñýã õàðàãäàõ тохиолдол гардаг. Иймээс санах ой болон хурдыг оновчтой ашиглаж түргэн хөрвүүлэхийн тулд хамгийн эхэнд байх нь гарцаагүй юм. Өөр нэг шалтгаан нь шилжүүлэгч шэйдр нь нормалд хувиргалт хийн харагдах байдлыг өөрчилдөг учраас зайлшгүй ãàäàðãûí øýéäðèéí өмнө áîëîâñðóóëàãäàõ ¸ñòîé.
Surface
Шилжүүлэлтийн дараа тооцоолоãäîõ ¸ñòîé õî¸ðäîõü øýéäð íü гадаргын øýéäð. Энэ øýéäð нь гадаргуугын эцсийн өнгийг түүний эцсийн халхлалтын (opacity) утгаар үржүүлж харагдах өнгийг тодорхойлох үүрэгтэй. Гадаргын øýéäð нь процедураар үүсгэгдэх хээг тодорхойлох эсвэл текстур хэрхэн байршиж харагдахыг тодорхойлох зарим тохиолдолд аль алèнийг нь зэрэг агуулах функцуудын цуглуулга юм. Тэд ихэвчлэн гэрэлтүүлэлтийн гогцоо (illumination loop) гэж нэрлэгдэх хэсэг кодыг агуулсан байна. Гэрэлтүүлэлтийн гогцоо нь идэвхитэй байгаа бүх гэрлийг бүртгэж тэдгээрийн гадаргуугын гэрэлтүүлэлтэнд нэмэрлэж байгаа утгуудыг нэмж тооцоолно. Ингэснээр гадаргуугын эцсийн өнгө тодорхойлогдож дараагийн shader-рүү шилжинэ.
Lights
Гэрлийн shader нь зургийг үнэмшилтэй болгоход голлох үүрэгтэй. Энэ shader байхгүй бол бүх л зүйл хавтгай, нэг хэвийн өнгөтэй болж харагдана. Хэдийгээр энэ шэйдр нь шилжүүлэлтийн болон гадаргуугын shader шиг өргөн хэрэглэгддэггүй боловч ихэнхи студиуд нэг төрлийн uber shader өргөн ашигладаг. Энэ нь төрөл бүрийн гэрлийг орлох чадвартай маш олон параметрууд бүхий нэг том shader юм. Гэрлийн shader нь гадаргуугын шэйдрийн дараа дуудагддаггүй харин параллелаар зэрэгцэн ажиллана. Гэрлийн shader нь гадаргуугын тооцооллыг хийж байх явцад гэрлийн өнгө, тодролын утгыг дамжуулах үүрэгтэй. Эдгээр утгууд нь процедур, текстураар тодорхологдож болно.
Volume (Atmosphere, Interior, and Exterior)
Эзэлхүүнт shader-ийг бодит амьдралд өргөн тохиолддог атмосфер, түүний бүрэлдэхүүн болох тоосонцор манантай адилтгаж болно.CG зураг нь ямар ч тоосгүй цэвэр битүүмжлэгдсэн вакуум орчинд байгаа юм шиг зурагддаг. Хэрэв график зургийг киноны визуал эффектэд ашиглах бол бодит орчинтой нийцүүлэхийн тулд эзэлхүүнт шэйдрийг зайлшгүй ашиглах хэрэгтэй болно. Бүх эзэлхүүнт шэйдр нь PRMan дээр “atmosphere” гэсэн түлхүүр үгээр тодорхойлогддог байсан бол 12-дах хувилбараас эхлэн interior ба exterior volume гэсэн 2 шинэ төрлөөр тодорхойлогдох боломжтой болсон. Энэ хоёр шэйдр нь гадаргын шэйдр дотор агуулагдах gather()raytracing командаас хамааралтай. Экстериор шэйдр нь объектын гадна орших тоос, униартай адилхан эффект үзүүлэх үүрэгтэй бол интерьер шэйдр нь өнгөт шил гэх мэт объектын дотор орших бүтцийг харуулах үүрэгтэй. Эзэлхүүнт шэйдрийн гүйцэтгэлийн дараагаар зураг эцсийн байдлаар дүрслэгдэхэд бэлэн болсон байна.
Зураг 2.1 Эзэлхүүнт шэйдр агуулаагүй орчин
Зураг 2.2 Эзэлхүүнт шэйдр агуулсан орчин
Imager
Imager буюу зургийн shader нь хөрвүүлэгчийн гүйцэтгэх ёстой сүүлчийн даалгавар юм. Зургийн шэйдр нь 3D атрибутуудтай ямар ч хамааралгүй зөвхөн 2 хэмжээст зургийн цэгүүд дээр боловсруулалт хийдэг ба зурагдсан биетийн эцсийн өнгийг л өөрчилж чадна. PRMan нь зургийн шэйдрийг ерөнхийдөө дэмждэггүй боловч “background” болон “clamptoalpha.” гэсэн хэсэг функцийг агуулсан байдаг. Background шэйдр нь арын дэвсгэр өнгийг тодорхойлох зориулалттай ба анхны утга нь хар өнгө байна. Clamptoalpha shader нь нэгээс их болон тэгээс бага утгуудыг хязгаарлах үүрэгтэй. Нэг болон тэгээс их утга нь сүүлд угсралт (composite) хийхэд хүндрэл учруулдаг. Зургийн шэйдр нь бодит бус дүрслэлийг бий болгоход тун тохиромжтой. Доорхи зургийг 3Delight-ийн зургийн шэйдрийг ашиглаж үүсгэсэн.
No comments:
Post a Comment