1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782 |
- /// @ref gtx_vec_swizzle
- /// @file glm/gtx/vec_swizzle.hpp
- ///
- /// @see core (dependence)
- ///
- /// @defgroup gtx_vec_swizzle GLM_GTX_vec_swizzle
- /// @ingroup gtx
- ///
- /// Include <glm/gtx/vec_swizzle.hpp> to use the features of this extension.
- ///
- /// Functions to perform swizzle operation.
- #pragma once
- #include "../glm.hpp"
- #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
- # ifndef GLM_ENABLE_EXPERIMENTAL
- # pragma message("GLM: GLM_GTX_vec_swizzle is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
- # else
- # pragma message("GLM: GLM_GTX_vec_swizzle extension included")
- # endif
- #endif
- namespace glm {
- // xx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<2, T, Q> xx(const glm::vec<1, T, Q> &v) {
- return glm::vec<2, T, Q>(v.x, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<2, T, Q> xx(const glm::vec<2, T, Q> &v) {
- return glm::vec<2, T, Q>(v.x, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<2, T, Q> xx(const glm::vec<3, T, Q> &v) {
- return glm::vec<2, T, Q>(v.x, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<2, T, Q> xx(const glm::vec<4, T, Q> &v) {
- return glm::vec<2, T, Q>(v.x, v.x);
- }
- // xy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<2, T, Q> xy(const glm::vec<2, T, Q> &v) {
- return glm::vec<2, T, Q>(v.x, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<2, T, Q> xy(const glm::vec<3, T, Q> &v) {
- return glm::vec<2, T, Q>(v.x, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<2, T, Q> xy(const glm::vec<4, T, Q> &v) {
- return glm::vec<2, T, Q>(v.x, v.y);
- }
- // xz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<2, T, Q> xz(const glm::vec<3, T, Q> &v) {
- return glm::vec<2, T, Q>(v.x, v.z);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<2, T, Q> xz(const glm::vec<4, T, Q> &v) {
- return glm::vec<2, T, Q>(v.x, v.z);
- }
- // xw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<2, T, Q> xw(const glm::vec<4, T, Q> &v) {
- return glm::vec<2, T, Q>(v.x, v.w);
- }
- // yx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<2, T, Q> yx(const glm::vec<2, T, Q> &v) {
- return glm::vec<2, T, Q>(v.y, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<2, T, Q> yx(const glm::vec<3, T, Q> &v) {
- return glm::vec<2, T, Q>(v.y, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<2, T, Q> yx(const glm::vec<4, T, Q> &v) {
- return glm::vec<2, T, Q>(v.y, v.x);
- }
- // yy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<2, T, Q> yy(const glm::vec<2, T, Q> &v) {
- return glm::vec<2, T, Q>(v.y, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<2, T, Q> yy(const glm::vec<3, T, Q> &v) {
- return glm::vec<2, T, Q>(v.y, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<2, T, Q> yy(const glm::vec<4, T, Q> &v) {
- return glm::vec<2, T, Q>(v.y, v.y);
- }
- // yz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<2, T, Q> yz(const glm::vec<3, T, Q> &v) {
- return glm::vec<2, T, Q>(v.y, v.z);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<2, T, Q> yz(const glm::vec<4, T, Q> &v) {
- return glm::vec<2, T, Q>(v.y, v.z);
- }
- // yw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<2, T, Q> yw(const glm::vec<4, T, Q> &v) {
- return glm::vec<2, T, Q>(v.y, v.w);
- }
- // zx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<2, T, Q> zx(const glm::vec<3, T, Q> &v) {
- return glm::vec<2, T, Q>(v.z, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<2, T, Q> zx(const glm::vec<4, T, Q> &v) {
- return glm::vec<2, T, Q>(v.z, v.x);
- }
- // zy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<2, T, Q> zy(const glm::vec<3, T, Q> &v) {
- return glm::vec<2, T, Q>(v.z, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<2, T, Q> zy(const glm::vec<4, T, Q> &v) {
- return glm::vec<2, T, Q>(v.z, v.y);
- }
- // zz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<2, T, Q> zz(const glm::vec<3, T, Q> &v) {
- return glm::vec<2, T, Q>(v.z, v.z);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<2, T, Q> zz(const glm::vec<4, T, Q> &v) {
- return glm::vec<2, T, Q>(v.z, v.z);
- }
- // zw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<2, T, Q> zw(const glm::vec<4, T, Q> &v) {
- return glm::vec<2, T, Q>(v.z, v.w);
- }
- // wx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<2, T, Q> wx(const glm::vec<4, T, Q> &v) {
- return glm::vec<2, T, Q>(v.w, v.x);
- }
- // wy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<2, T, Q> wy(const glm::vec<4, T, Q> &v) {
- return glm::vec<2, T, Q>(v.w, v.y);
- }
- // wz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<2, T, Q> wz(const glm::vec<4, T, Q> &v) {
- return glm::vec<2, T, Q>(v.w, v.z);
- }
- // ww
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<2, T, Q> ww(const glm::vec<4, T, Q> &v) {
- return glm::vec<2, T, Q>(v.w, v.w);
- }
- // xxx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> xxx(const glm::vec<1, T, Q> &v) {
- return glm::vec<3, T, Q>(v.x, v.x, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> xxx(const glm::vec<2, T, Q> &v) {
- return glm::vec<3, T, Q>(v.x, v.x, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> xxx(const glm::vec<3, T, Q> &v) {
- return glm::vec<3, T, Q>(v.x, v.x, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> xxx(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.x, v.x, v.x);
- }
- // xxy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> xxy(const glm::vec<2, T, Q> &v) {
- return glm::vec<3, T, Q>(v.x, v.x, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> xxy(const glm::vec<3, T, Q> &v) {
- return glm::vec<3, T, Q>(v.x, v.x, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> xxy(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.x, v.x, v.y);
- }
- // xxz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> xxz(const glm::vec<3, T, Q> &v) {
- return glm::vec<3, T, Q>(v.x, v.x, v.z);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> xxz(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.x, v.x, v.z);
- }
- // xxw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> xxw(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.x, v.x, v.w);
- }
- // xyx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> xyx(const glm::vec<2, T, Q> &v) {
- return glm::vec<3, T, Q>(v.x, v.y, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> xyx(const glm::vec<3, T, Q> &v) {
- return glm::vec<3, T, Q>(v.x, v.y, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> xyx(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.x, v.y, v.x);
- }
- // xyy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> xyy(const glm::vec<2, T, Q> &v) {
- return glm::vec<3, T, Q>(v.x, v.y, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> xyy(const glm::vec<3, T, Q> &v) {
- return glm::vec<3, T, Q>(v.x, v.y, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> xyy(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.x, v.y, v.y);
- }
- // xyz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> xyz(const glm::vec<3, T, Q> &v) {
- return glm::vec<3, T, Q>(v.x, v.y, v.z);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> xyz(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.x, v.y, v.z);
- }
- // xyw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> xyw(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.x, v.y, v.w);
- }
- // xzx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> xzx(const glm::vec<3, T, Q> &v) {
- return glm::vec<3, T, Q>(v.x, v.z, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> xzx(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.x, v.z, v.x);
- }
- // xzy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> xzy(const glm::vec<3, T, Q> &v) {
- return glm::vec<3, T, Q>(v.x, v.z, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> xzy(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.x, v.z, v.y);
- }
- // xzz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> xzz(const glm::vec<3, T, Q> &v) {
- return glm::vec<3, T, Q>(v.x, v.z, v.z);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> xzz(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.x, v.z, v.z);
- }
- // xzw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> xzw(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.x, v.z, v.w);
- }
- // xwx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> xwx(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.x, v.w, v.x);
- }
- // xwy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> xwy(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.x, v.w, v.y);
- }
- // xwz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> xwz(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.x, v.w, v.z);
- }
- // xww
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> xww(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.x, v.w, v.w);
- }
- // yxx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> yxx(const glm::vec<2, T, Q> &v) {
- return glm::vec<3, T, Q>(v.y, v.x, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> yxx(const glm::vec<3, T, Q> &v) {
- return glm::vec<3, T, Q>(v.y, v.x, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> yxx(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.y, v.x, v.x);
- }
- // yxy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> yxy(const glm::vec<2, T, Q> &v) {
- return glm::vec<3, T, Q>(v.y, v.x, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> yxy(const glm::vec<3, T, Q> &v) {
- return glm::vec<3, T, Q>(v.y, v.x, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> yxy(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.y, v.x, v.y);
- }
- // yxz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> yxz(const glm::vec<3, T, Q> &v) {
- return glm::vec<3, T, Q>(v.y, v.x, v.z);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> yxz(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.y, v.x, v.z);
- }
- // yxw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> yxw(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.y, v.x, v.w);
- }
- // yyx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> yyx(const glm::vec<2, T, Q> &v) {
- return glm::vec<3, T, Q>(v.y, v.y, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> yyx(const glm::vec<3, T, Q> &v) {
- return glm::vec<3, T, Q>(v.y, v.y, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> yyx(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.y, v.y, v.x);
- }
- // yyy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> yyy(const glm::vec<2, T, Q> &v) {
- return glm::vec<3, T, Q>(v.y, v.y, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> yyy(const glm::vec<3, T, Q> &v) {
- return glm::vec<3, T, Q>(v.y, v.y, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> yyy(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.y, v.y, v.y);
- }
- // yyz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> yyz(const glm::vec<3, T, Q> &v) {
- return glm::vec<3, T, Q>(v.y, v.y, v.z);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> yyz(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.y, v.y, v.z);
- }
- // yyw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> yyw(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.y, v.y, v.w);
- }
- // yzx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> yzx(const glm::vec<3, T, Q> &v) {
- return glm::vec<3, T, Q>(v.y, v.z, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> yzx(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.y, v.z, v.x);
- }
- // yzy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> yzy(const glm::vec<3, T, Q> &v) {
- return glm::vec<3, T, Q>(v.y, v.z, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> yzy(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.y, v.z, v.y);
- }
- // yzz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> yzz(const glm::vec<3, T, Q> &v) {
- return glm::vec<3, T, Q>(v.y, v.z, v.z);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> yzz(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.y, v.z, v.z);
- }
- // yzw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> yzw(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.y, v.z, v.w);
- }
- // ywx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> ywx(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.y, v.w, v.x);
- }
- // ywy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> ywy(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.y, v.w, v.y);
- }
- // ywz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> ywz(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.y, v.w, v.z);
- }
- // yww
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> yww(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.y, v.w, v.w);
- }
- // zxx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> zxx(const glm::vec<3, T, Q> &v) {
- return glm::vec<3, T, Q>(v.z, v.x, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> zxx(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.z, v.x, v.x);
- }
- // zxy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> zxy(const glm::vec<3, T, Q> &v) {
- return glm::vec<3, T, Q>(v.z, v.x, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> zxy(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.z, v.x, v.y);
- }
- // zxz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> zxz(const glm::vec<3, T, Q> &v) {
- return glm::vec<3, T, Q>(v.z, v.x, v.z);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> zxz(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.z, v.x, v.z);
- }
- // zxw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> zxw(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.z, v.x, v.w);
- }
- // zyx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> zyx(const glm::vec<3, T, Q> &v) {
- return glm::vec<3, T, Q>(v.z, v.y, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> zyx(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.z, v.y, v.x);
- }
- // zyy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> zyy(const glm::vec<3, T, Q> &v) {
- return glm::vec<3, T, Q>(v.z, v.y, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> zyy(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.z, v.y, v.y);
- }
- // zyz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> zyz(const glm::vec<3, T, Q> &v) {
- return glm::vec<3, T, Q>(v.z, v.y, v.z);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> zyz(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.z, v.y, v.z);
- }
- // zyw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> zyw(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.z, v.y, v.w);
- }
- // zzx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> zzx(const glm::vec<3, T, Q> &v) {
- return glm::vec<3, T, Q>(v.z, v.z, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> zzx(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.z, v.z, v.x);
- }
- // zzy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> zzy(const glm::vec<3, T, Q> &v) {
- return glm::vec<3, T, Q>(v.z, v.z, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> zzy(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.z, v.z, v.y);
- }
- // zzz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> zzz(const glm::vec<3, T, Q> &v) {
- return glm::vec<3, T, Q>(v.z, v.z, v.z);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> zzz(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.z, v.z, v.z);
- }
- // zzw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> zzw(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.z, v.z, v.w);
- }
- // zwx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> zwx(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.z, v.w, v.x);
- }
- // zwy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> zwy(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.z, v.w, v.y);
- }
- // zwz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> zwz(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.z, v.w, v.z);
- }
- // zww
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> zww(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.z, v.w, v.w);
- }
- // wxx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> wxx(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.w, v.x, v.x);
- }
- // wxy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> wxy(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.w, v.x, v.y);
- }
- // wxz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> wxz(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.w, v.x, v.z);
- }
- // wxw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> wxw(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.w, v.x, v.w);
- }
- // wyx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> wyx(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.w, v.y, v.x);
- }
- // wyy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> wyy(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.w, v.y, v.y);
- }
- // wyz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> wyz(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.w, v.y, v.z);
- }
- // wyw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> wyw(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.w, v.y, v.w);
- }
- // wzx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> wzx(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.w, v.z, v.x);
- }
- // wzy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> wzy(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.w, v.z, v.y);
- }
- // wzz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> wzz(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.w, v.z, v.z);
- }
- // wzw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> wzw(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.w, v.z, v.w);
- }
- // wwx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> wwx(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.w, v.w, v.x);
- }
- // wwy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> wwy(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.w, v.w, v.y);
- }
- // wwz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> wwz(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.w, v.w, v.z);
- }
- // www
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<3, T, Q> www(const glm::vec<4, T, Q> &v) {
- return glm::vec<3, T, Q>(v.w, v.w, v.w);
- }
- // xxxx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xxxx(const glm::vec<1, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.x, v.x, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xxxx(const glm::vec<2, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.x, v.x, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xxxx(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.x, v.x, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xxxx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.x, v.x, v.x);
- }
- // xxxy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xxxy(const glm::vec<2, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.x, v.x, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xxxy(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.x, v.x, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xxxy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.x, v.x, v.y);
- }
- // xxxz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xxxz(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.x, v.x, v.z);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xxxz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.x, v.x, v.z);
- }
- // xxxw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xxxw(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.x, v.x, v.w);
- }
- // xxyx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xxyx(const glm::vec<2, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.x, v.y, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xxyx(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.x, v.y, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xxyx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.x, v.y, v.x);
- }
- // xxyy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xxyy(const glm::vec<2, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.x, v.y, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xxyy(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.x, v.y, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xxyy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.x, v.y, v.y);
- }
- // xxyz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xxyz(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.x, v.y, v.z);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xxyz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.x, v.y, v.z);
- }
- // xxyw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xxyw(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.x, v.y, v.w);
- }
- // xxzx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xxzx(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.x, v.z, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xxzx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.x, v.z, v.x);
- }
- // xxzy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xxzy(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.x, v.z, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xxzy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.x, v.z, v.y);
- }
- // xxzz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xxzz(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.x, v.z, v.z);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xxzz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.x, v.z, v.z);
- }
- // xxzw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xxzw(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.x, v.z, v.w);
- }
- // xxwx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xxwx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.x, v.w, v.x);
- }
- // xxwy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xxwy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.x, v.w, v.y);
- }
- // xxwz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xxwz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.x, v.w, v.z);
- }
- // xxww
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xxww(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.x, v.w, v.w);
- }
- // xyxx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xyxx(const glm::vec<2, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.y, v.x, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xyxx(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.y, v.x, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xyxx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.y, v.x, v.x);
- }
- // xyxy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xyxy(const glm::vec<2, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.y, v.x, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xyxy(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.y, v.x, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xyxy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.y, v.x, v.y);
- }
- // xyxz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xyxz(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.y, v.x, v.z);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xyxz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.y, v.x, v.z);
- }
- // xyxw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xyxw(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.y, v.x, v.w);
- }
- // xyyx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xyyx(const glm::vec<2, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.y, v.y, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xyyx(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.y, v.y, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xyyx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.y, v.y, v.x);
- }
- // xyyy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xyyy(const glm::vec<2, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.y, v.y, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xyyy(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.y, v.y, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xyyy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.y, v.y, v.y);
- }
- // xyyz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xyyz(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.y, v.y, v.z);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xyyz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.y, v.y, v.z);
- }
- // xyyw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xyyw(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.y, v.y, v.w);
- }
- // xyzx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xyzx(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.y, v.z, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xyzx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.y, v.z, v.x);
- }
- // xyzy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xyzy(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.y, v.z, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xyzy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.y, v.z, v.y);
- }
- // xyzz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xyzz(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.y, v.z, v.z);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xyzz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.y, v.z, v.z);
- }
- // xyzw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xyzw(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.y, v.z, v.w);
- }
- // xywx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xywx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.y, v.w, v.x);
- }
- // xywy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xywy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.y, v.w, v.y);
- }
- // xywz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xywz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.y, v.w, v.z);
- }
- // xyww
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xyww(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.y, v.w, v.w);
- }
- // xzxx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xzxx(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.z, v.x, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xzxx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.z, v.x, v.x);
- }
- // xzxy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xzxy(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.z, v.x, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xzxy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.z, v.x, v.y);
- }
- // xzxz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xzxz(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.z, v.x, v.z);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xzxz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.z, v.x, v.z);
- }
- // xzxw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xzxw(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.z, v.x, v.w);
- }
- // xzyx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xzyx(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.z, v.y, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xzyx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.z, v.y, v.x);
- }
- // xzyy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xzyy(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.z, v.y, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xzyy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.z, v.y, v.y);
- }
- // xzyz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xzyz(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.z, v.y, v.z);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xzyz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.z, v.y, v.z);
- }
- // xzyw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xzyw(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.z, v.y, v.w);
- }
- // xzzx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xzzx(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.z, v.z, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xzzx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.z, v.z, v.x);
- }
- // xzzy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xzzy(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.z, v.z, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xzzy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.z, v.z, v.y);
- }
- // xzzz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xzzz(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.z, v.z, v.z);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xzzz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.z, v.z, v.z);
- }
- // xzzw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xzzw(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.z, v.z, v.w);
- }
- // xzwx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xzwx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.z, v.w, v.x);
- }
- // xzwy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xzwy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.z, v.w, v.y);
- }
- // xzwz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xzwz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.z, v.w, v.z);
- }
- // xzww
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xzww(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.z, v.w, v.w);
- }
- // xwxx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xwxx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.w, v.x, v.x);
- }
- // xwxy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xwxy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.w, v.x, v.y);
- }
- // xwxz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xwxz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.w, v.x, v.z);
- }
- // xwxw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xwxw(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.w, v.x, v.w);
- }
- // xwyx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xwyx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.w, v.y, v.x);
- }
- // xwyy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xwyy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.w, v.y, v.y);
- }
- // xwyz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xwyz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.w, v.y, v.z);
- }
- // xwyw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xwyw(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.w, v.y, v.w);
- }
- // xwzx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xwzx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.w, v.z, v.x);
- }
- // xwzy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xwzy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.w, v.z, v.y);
- }
- // xwzz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xwzz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.w, v.z, v.z);
- }
- // xwzw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xwzw(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.w, v.z, v.w);
- }
- // xwwx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xwwx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.w, v.w, v.x);
- }
- // xwwy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xwwy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.w, v.w, v.y);
- }
- // xwwz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xwwz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.w, v.w, v.z);
- }
- // xwww
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> xwww(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.x, v.w, v.w, v.w);
- }
- // yxxx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yxxx(const glm::vec<2, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.x, v.x, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yxxx(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.x, v.x, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yxxx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.x, v.x, v.x);
- }
- // yxxy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yxxy(const glm::vec<2, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.x, v.x, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yxxy(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.x, v.x, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yxxy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.x, v.x, v.y);
- }
- // yxxz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yxxz(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.x, v.x, v.z);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yxxz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.x, v.x, v.z);
- }
- // yxxw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yxxw(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.x, v.x, v.w);
- }
- // yxyx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yxyx(const glm::vec<2, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.x, v.y, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yxyx(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.x, v.y, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yxyx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.x, v.y, v.x);
- }
- // yxyy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yxyy(const glm::vec<2, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.x, v.y, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yxyy(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.x, v.y, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yxyy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.x, v.y, v.y);
- }
- // yxyz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yxyz(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.x, v.y, v.z);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yxyz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.x, v.y, v.z);
- }
- // yxyw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yxyw(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.x, v.y, v.w);
- }
- // yxzx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yxzx(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.x, v.z, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yxzx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.x, v.z, v.x);
- }
- // yxzy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yxzy(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.x, v.z, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yxzy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.x, v.z, v.y);
- }
- // yxzz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yxzz(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.x, v.z, v.z);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yxzz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.x, v.z, v.z);
- }
- // yxzw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yxzw(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.x, v.z, v.w);
- }
- // yxwx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yxwx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.x, v.w, v.x);
- }
- // yxwy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yxwy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.x, v.w, v.y);
- }
- // yxwz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yxwz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.x, v.w, v.z);
- }
- // yxww
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yxww(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.x, v.w, v.w);
- }
- // yyxx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yyxx(const glm::vec<2, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.y, v.x, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yyxx(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.y, v.x, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yyxx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.y, v.x, v.x);
- }
- // yyxy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yyxy(const glm::vec<2, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.y, v.x, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yyxy(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.y, v.x, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yyxy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.y, v.x, v.y);
- }
- // yyxz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yyxz(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.y, v.x, v.z);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yyxz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.y, v.x, v.z);
- }
- // yyxw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yyxw(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.y, v.x, v.w);
- }
- // yyyx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yyyx(const glm::vec<2, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.y, v.y, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yyyx(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.y, v.y, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yyyx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.y, v.y, v.x);
- }
- // yyyy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yyyy(const glm::vec<2, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.y, v.y, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yyyy(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.y, v.y, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yyyy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.y, v.y, v.y);
- }
- // yyyz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yyyz(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.y, v.y, v.z);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yyyz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.y, v.y, v.z);
- }
- // yyyw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yyyw(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.y, v.y, v.w);
- }
- // yyzx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yyzx(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.y, v.z, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yyzx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.y, v.z, v.x);
- }
- // yyzy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yyzy(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.y, v.z, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yyzy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.y, v.z, v.y);
- }
- // yyzz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yyzz(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.y, v.z, v.z);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yyzz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.y, v.z, v.z);
- }
- // yyzw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yyzw(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.y, v.z, v.w);
- }
- // yywx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yywx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.y, v.w, v.x);
- }
- // yywy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yywy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.y, v.w, v.y);
- }
- // yywz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yywz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.y, v.w, v.z);
- }
- // yyww
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yyww(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.y, v.w, v.w);
- }
- // yzxx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yzxx(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.z, v.x, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yzxx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.z, v.x, v.x);
- }
- // yzxy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yzxy(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.z, v.x, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yzxy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.z, v.x, v.y);
- }
- // yzxz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yzxz(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.z, v.x, v.z);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yzxz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.z, v.x, v.z);
- }
- // yzxw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yzxw(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.z, v.x, v.w);
- }
- // yzyx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yzyx(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.z, v.y, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yzyx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.z, v.y, v.x);
- }
- // yzyy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yzyy(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.z, v.y, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yzyy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.z, v.y, v.y);
- }
- // yzyz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yzyz(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.z, v.y, v.z);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yzyz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.z, v.y, v.z);
- }
- // yzyw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yzyw(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.z, v.y, v.w);
- }
- // yzzx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yzzx(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.z, v.z, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yzzx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.z, v.z, v.x);
- }
- // yzzy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yzzy(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.z, v.z, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yzzy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.z, v.z, v.y);
- }
- // yzzz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yzzz(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.z, v.z, v.z);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yzzz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.z, v.z, v.z);
- }
- // yzzw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yzzw(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.z, v.z, v.w);
- }
- // yzwx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yzwx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.z, v.w, v.x);
- }
- // yzwy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yzwy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.z, v.w, v.y);
- }
- // yzwz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yzwz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.z, v.w, v.z);
- }
- // yzww
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> yzww(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.z, v.w, v.w);
- }
- // ywxx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> ywxx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.w, v.x, v.x);
- }
- // ywxy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> ywxy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.w, v.x, v.y);
- }
- // ywxz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> ywxz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.w, v.x, v.z);
- }
- // ywxw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> ywxw(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.w, v.x, v.w);
- }
- // ywyx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> ywyx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.w, v.y, v.x);
- }
- // ywyy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> ywyy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.w, v.y, v.y);
- }
- // ywyz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> ywyz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.w, v.y, v.z);
- }
- // ywyw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> ywyw(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.w, v.y, v.w);
- }
- // ywzx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> ywzx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.w, v.z, v.x);
- }
- // ywzy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> ywzy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.w, v.z, v.y);
- }
- // ywzz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> ywzz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.w, v.z, v.z);
- }
- // ywzw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> ywzw(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.w, v.z, v.w);
- }
- // ywwx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> ywwx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.w, v.w, v.x);
- }
- // ywwy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> ywwy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.w, v.w, v.y);
- }
- // ywwz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> ywwz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.w, v.w, v.z);
- }
- // ywww
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> ywww(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.y, v.w, v.w, v.w);
- }
- // zxxx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zxxx(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.x, v.x, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zxxx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.x, v.x, v.x);
- }
- // zxxy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zxxy(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.x, v.x, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zxxy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.x, v.x, v.y);
- }
- // zxxz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zxxz(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.x, v.x, v.z);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zxxz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.x, v.x, v.z);
- }
- // zxxw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zxxw(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.x, v.x, v.w);
- }
- // zxyx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zxyx(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.x, v.y, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zxyx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.x, v.y, v.x);
- }
- // zxyy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zxyy(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.x, v.y, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zxyy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.x, v.y, v.y);
- }
- // zxyz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zxyz(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.x, v.y, v.z);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zxyz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.x, v.y, v.z);
- }
- // zxyw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zxyw(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.x, v.y, v.w);
- }
- // zxzx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zxzx(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.x, v.z, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zxzx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.x, v.z, v.x);
- }
- // zxzy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zxzy(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.x, v.z, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zxzy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.x, v.z, v.y);
- }
- // zxzz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zxzz(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.x, v.z, v.z);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zxzz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.x, v.z, v.z);
- }
- // zxzw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zxzw(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.x, v.z, v.w);
- }
- // zxwx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zxwx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.x, v.w, v.x);
- }
- // zxwy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zxwy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.x, v.w, v.y);
- }
- // zxwz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zxwz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.x, v.w, v.z);
- }
- // zxww
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zxww(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.x, v.w, v.w);
- }
- // zyxx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zyxx(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.y, v.x, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zyxx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.y, v.x, v.x);
- }
- // zyxy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zyxy(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.y, v.x, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zyxy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.y, v.x, v.y);
- }
- // zyxz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zyxz(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.y, v.x, v.z);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zyxz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.y, v.x, v.z);
- }
- // zyxw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zyxw(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.y, v.x, v.w);
- }
- // zyyx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zyyx(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.y, v.y, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zyyx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.y, v.y, v.x);
- }
- // zyyy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zyyy(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.y, v.y, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zyyy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.y, v.y, v.y);
- }
- // zyyz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zyyz(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.y, v.y, v.z);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zyyz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.y, v.y, v.z);
- }
- // zyyw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zyyw(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.y, v.y, v.w);
- }
- // zyzx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zyzx(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.y, v.z, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zyzx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.y, v.z, v.x);
- }
- // zyzy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zyzy(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.y, v.z, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zyzy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.y, v.z, v.y);
- }
- // zyzz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zyzz(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.y, v.z, v.z);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zyzz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.y, v.z, v.z);
- }
- // zyzw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zyzw(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.y, v.z, v.w);
- }
- // zywx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zywx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.y, v.w, v.x);
- }
- // zywy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zywy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.y, v.w, v.y);
- }
- // zywz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zywz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.y, v.w, v.z);
- }
- // zyww
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zyww(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.y, v.w, v.w);
- }
- // zzxx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zzxx(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.z, v.x, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zzxx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.z, v.x, v.x);
- }
- // zzxy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zzxy(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.z, v.x, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zzxy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.z, v.x, v.y);
- }
- // zzxz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zzxz(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.z, v.x, v.z);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zzxz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.z, v.x, v.z);
- }
- // zzxw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zzxw(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.z, v.x, v.w);
- }
- // zzyx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zzyx(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.z, v.y, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zzyx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.z, v.y, v.x);
- }
- // zzyy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zzyy(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.z, v.y, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zzyy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.z, v.y, v.y);
- }
- // zzyz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zzyz(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.z, v.y, v.z);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zzyz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.z, v.y, v.z);
- }
- // zzyw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zzyw(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.z, v.y, v.w);
- }
- // zzzx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zzzx(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.z, v.z, v.x);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zzzx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.z, v.z, v.x);
- }
- // zzzy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zzzy(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.z, v.z, v.y);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zzzy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.z, v.z, v.y);
- }
- // zzzz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zzzz(const glm::vec<3, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.z, v.z, v.z);
- }
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zzzz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.z, v.z, v.z);
- }
- // zzzw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zzzw(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.z, v.z, v.w);
- }
- // zzwx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zzwx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.z, v.w, v.x);
- }
- // zzwy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zzwy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.z, v.w, v.y);
- }
- // zzwz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zzwz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.z, v.w, v.z);
- }
- // zzww
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zzww(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.z, v.w, v.w);
- }
- // zwxx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zwxx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.w, v.x, v.x);
- }
- // zwxy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zwxy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.w, v.x, v.y);
- }
- // zwxz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zwxz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.w, v.x, v.z);
- }
- // zwxw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zwxw(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.w, v.x, v.w);
- }
- // zwyx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zwyx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.w, v.y, v.x);
- }
- // zwyy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zwyy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.w, v.y, v.y);
- }
- // zwyz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zwyz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.w, v.y, v.z);
- }
- // zwyw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zwyw(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.w, v.y, v.w);
- }
- // zwzx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zwzx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.w, v.z, v.x);
- }
- // zwzy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zwzy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.w, v.z, v.y);
- }
- // zwzz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zwzz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.w, v.z, v.z);
- }
- // zwzw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zwzw(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.w, v.z, v.w);
- }
- // zwwx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zwwx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.w, v.w, v.x);
- }
- // zwwy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zwwy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.w, v.w, v.y);
- }
- // zwwz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zwwz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.w, v.w, v.z);
- }
- // zwww
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> zwww(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.z, v.w, v.w, v.w);
- }
- // wxxx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wxxx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.x, v.x, v.x);
- }
- // wxxy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wxxy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.x, v.x, v.y);
- }
- // wxxz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wxxz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.x, v.x, v.z);
- }
- // wxxw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wxxw(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.x, v.x, v.w);
- }
- // wxyx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wxyx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.x, v.y, v.x);
- }
- // wxyy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wxyy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.x, v.y, v.y);
- }
- // wxyz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wxyz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.x, v.y, v.z);
- }
- // wxyw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wxyw(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.x, v.y, v.w);
- }
- // wxzx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wxzx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.x, v.z, v.x);
- }
- // wxzy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wxzy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.x, v.z, v.y);
- }
- // wxzz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wxzz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.x, v.z, v.z);
- }
- // wxzw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wxzw(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.x, v.z, v.w);
- }
- // wxwx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wxwx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.x, v.w, v.x);
- }
- // wxwy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wxwy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.x, v.w, v.y);
- }
- // wxwz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wxwz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.x, v.w, v.z);
- }
- // wxww
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wxww(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.x, v.w, v.w);
- }
- // wyxx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wyxx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.y, v.x, v.x);
- }
- // wyxy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wyxy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.y, v.x, v.y);
- }
- // wyxz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wyxz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.y, v.x, v.z);
- }
- // wyxw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wyxw(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.y, v.x, v.w);
- }
- // wyyx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wyyx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.y, v.y, v.x);
- }
- // wyyy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wyyy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.y, v.y, v.y);
- }
- // wyyz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wyyz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.y, v.y, v.z);
- }
- // wyyw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wyyw(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.y, v.y, v.w);
- }
- // wyzx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wyzx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.y, v.z, v.x);
- }
- // wyzy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wyzy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.y, v.z, v.y);
- }
- // wyzz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wyzz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.y, v.z, v.z);
- }
- // wyzw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wyzw(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.y, v.z, v.w);
- }
- // wywx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wywx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.y, v.w, v.x);
- }
- // wywy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wywy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.y, v.w, v.y);
- }
- // wywz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wywz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.y, v.w, v.z);
- }
- // wyww
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wyww(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.y, v.w, v.w);
- }
- // wzxx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wzxx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.z, v.x, v.x);
- }
- // wzxy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wzxy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.z, v.x, v.y);
- }
- // wzxz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wzxz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.z, v.x, v.z);
- }
- // wzxw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wzxw(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.z, v.x, v.w);
- }
- // wzyx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wzyx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.z, v.y, v.x);
- }
- // wzyy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wzyy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.z, v.y, v.y);
- }
- // wzyz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wzyz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.z, v.y, v.z);
- }
- // wzyw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wzyw(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.z, v.y, v.w);
- }
- // wzzx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wzzx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.z, v.z, v.x);
- }
- // wzzy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wzzy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.z, v.z, v.y);
- }
- // wzzz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wzzz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.z, v.z, v.z);
- }
- // wzzw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wzzw(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.z, v.z, v.w);
- }
- // wzwx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wzwx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.z, v.w, v.x);
- }
- // wzwy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wzwy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.z, v.w, v.y);
- }
- // wzwz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wzwz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.z, v.w, v.z);
- }
- // wzww
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wzww(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.z, v.w, v.w);
- }
- // wwxx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wwxx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.w, v.x, v.x);
- }
- // wwxy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wwxy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.w, v.x, v.y);
- }
- // wwxz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wwxz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.w, v.x, v.z);
- }
- // wwxw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wwxw(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.w, v.x, v.w);
- }
- // wwyx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wwyx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.w, v.y, v.x);
- }
- // wwyy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wwyy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.w, v.y, v.y);
- }
- // wwyz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wwyz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.w, v.y, v.z);
- }
- // wwyw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wwyw(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.w, v.y, v.w);
- }
- // wwzx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wwzx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.w, v.z, v.x);
- }
- // wwzy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wwzy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.w, v.z, v.y);
- }
- // wwzz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wwzz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.w, v.z, v.z);
- }
- // wwzw
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wwzw(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.w, v.z, v.w);
- }
- // wwwx
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wwwx(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.w, v.w, v.x);
- }
- // wwwy
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wwwy(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.w, v.w, v.y);
- }
- // wwwz
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wwwz(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.w, v.w, v.z);
- }
- // wwww
- template<typename T, qualifier Q>
- GLM_INLINE glm::vec<4, T, Q> wwww(const glm::vec<4, T, Q> &v) {
- return glm::vec<4, T, Q>(v.w, v.w, v.w, v.w);
- }
- }
|