ăăăšăăčŞăżăăăăăăăăŤăç˝ăăăăšăăŽĺ¨ăăŤéťăăăăšăăŽă˘ăŚăăŠă¤ăłăé 罎ăăćšćłăčŚă¤ăăăă¨ăăŚăăžăă ăăăăăăžăăăătroika-three-textăĺŚçăăăăăŤăˇă§ăźăăźă使ç¨ăăĺż čŚăăăăăă§ăă ăăŽĺšćăéćăăćšćłăŤă¤ăăŚăăăă¤ăăŽăŹă¤ăăłăšăćäžă§ăăžăăďź
ăăăă¨ăďź
č˛ăäťăăăă¨ăă§ăăă°ăĺż
čŚăŞăă¨ăŻdebugSDFăăŠă°ăŤăăŁăŚéćăăăă¨ćăăžăă
sdfă襨示ăăă¨ăĺşćŹçăŤăč˛ăäťăăăăăľă¤ăşă調ć´ăăăăĺ°ă鎎ćăŤăăăă¨ăă§ăăă°ăăăăăćŠč˝ăăă˘ăŚăăŠă¤ăłăĺžăăăžăă
ăăăčĄăăŽăŻăăăťăŠéŁăăăă¨ă§ăŻăăăžăăă ĺ°ăĺăŤtextOutlineăćŠč˝ă¨ăăŚä˝żăĺ§ăăžăăăăçľäşăăžăăă§ăăă
çčŤçăŤăŻăă°ăŞăă¨ăă¸ăŻăă¨ăă¸ăŤĺŻžĺżăă珌ĺˇäťăčˇé˘ăăŁăźăŤăăŽĺ¤ăĺ¤ć´ăăă ăă§ćĄĺźľă§ăăžăă ăăăŻăçžĺ¨ăŽăˇă§ăźăăźăłăźăă§ăŻ0.5
ă§ăăăăŚăăăŠăźă ă¨ăăŚć¸Ąăăă¨ă§ć§ćĺŻč˝ăŤăăăă¨ăă§ăăžăă
çćłçăŤăŻăăˇă§ăźăăźăŻ1ĺăŽćçťĺźăłĺşăă§é常ăŽă°ăŞăă¨ăăŽĺ¨ĺ˛ăŽă˘ăŚăăŠă¤ăłăŽä¸ĄćšăŽćçťăĺŚçă§ăăăăăă˘ăŚăăŠă¤ăłăŽĺš ďźăăăăŠăŽĺä˝ăŤăŞăăăăăăŞăďźă¨ăŽč˛ăŽ2ă¤ăŽć°ăăăŚăăăŠăźă ăĺż čŚăŤăŞăăžăăă˘ăŚăăŠă¤ăłé ĺă
ĺ°ăĺăŤtextOutlineăćŠč˝ă¨ăăŚä˝żăĺ§ăăžăăăăçľäşăăžăăă§ăăă
ăă¤ăăŁăă§ăľăăźăăăăŚăăă°ă¨ăŚăĺŹăăă§ă:)
ăă ăăăˇă§ăźăăźăŻĺăăŚăŞăŽă§ăăŠăă ă彚çŤă¤ăăăăăžăăă ç§ăŻăăŽĺéĄă注ć桹ăčŚĺŽăŁăŚăăžăă
ç§ăŻăăăŤĺ°ăćťăŁăŚăăŞăç§ăćĺăŤăăăçľăăŞăăŁăăŽăăăăŤć°ăĽăăžăăă SDFăŻčźŞéăćăăăăŤä˝żç¨ă§ăăžăăăăăă¤ăăŽćł¨ćçšăăăăžăă
ăăăăŁăŚăăWăăŽăăăŞĺ¤§ăăŞă°ăŞăăŻăăŞă太ă蟪éăĺžăăă¨ăă§ăăžăăăăăŞăŞăăŽăăăŞĺ°ăăŞă°ăŞăăŻé常ăŤç´°ă蟪éăăĺžăăă¨ăă§ăăžăăă ăžăăĺă°ăŞăăŻăă˘ăŚăăŠă¤ăłăčŚčŚçăŤä¸č˛ŤăăăăăăŤăç°ăŞăSDFăŤăăăŞăăă¤ăłăă使ç¨ăăĺż čŚăăăăžăă
ăăăŻăžă äšăčśăăăăŞăă¨ćăăžăăăćĺăŤćăŁăăťăŠĺç´ă§ăŻăăăžăăă
@lojjic ăăăŽăŠă¤ăăŠăŞă大弽ăă§ăđĽăăăăăăăšăăŽă˘ăŚăăŠă¤ăłăŻç§ăăĄăŽăăă¸ă§ăŻăăŽčŚäťśă§ă...
ç§ăŻăăăŤĺ°ăćťăŁăŚăăŞăç§ăćĺăŤăăăçľăăŞăăŁăăŽăăăăŤć°ăĽăăžăăă SDFăŻčźŞéăćăăăăŤä˝żç¨ă§ăăžăăăăăă¤ăăŽćł¨ćçšăăăăžăă
- ă˘ăŚăăŠă¤ăłăŽć˝ĺ¨çăŞćĺ¤§ĺš ăŻăčˇé˘ăăŁăźăŤăčŞä˝ăŽçŻĺ˛ăŤăăŁăŚĺśéăăăžăďź64x64 SDFăăŻăšăăŁă§ç´8ăăŻăťăŤďźă
- SDFăăŻăšăăŁăŻĺă°ăŞăăŽĺ˘çăŤĺăăăŚăšăąăźăŞăłă°ăăăăăăăăăŻăăšăŚăŽă°ăŞăă§ä¸č˛ŤăăčŚčŚçăľă¤ăşăŤĺŻžĺżăăŚăăžăăă
ăăăăŁăŚăăWăăŽăăăŞĺ¤§ăăŞă°ăŞăăŻăăŞă太ă蟪éăĺžăăă¨ăă§ăăžăăăăăŞăŞăăŽăăăŞĺ°ăăŞă°ăŞăăŻé常ăŤç´°ă蟪éăăĺžăăă¨ăă§ăăžăăă ăžăăĺă°ăŞăăŻăă˘ăŚăăŠă¤ăłăčŚčŚçăŤä¸č˛ŤăăăăăăŤăç°ăŞăSDFăŤăăăŞăăă¤ăłăă使ç¨ăăĺż čŚăăăăžăă
ăăăŻăžă äšăčśăăăăŞăă¨ćăăžăăăćĺăŤćăŁăăťăŠĺç´ă§ăŻăăăžăăă
čĺłăăăăžăăăˇă§ăźăăźă使ç¨ăăŚăă˘ăŚăăŠă¤ăłăăˇăŁăăŚĺšćăĺŽçžăăăăăŤăăă税ăŽĺžĺŚçăĺŽčĄă§ăăžăăďź ĺăăŁăŚćčŹăăžăďź
ăăăç§ăéćăăăă¨ăăŚăăĺšćă§ăďź
硨éďźăăăŻmapbox glăăăŽăăŽă§ăSDFă使ç¨ăăŚăăă¨ćăăžăhttps://blog.mapbox.com/drawing-text-with-signed-distance-fields-in-mapbox-gl-b0933af6f817彟ăăŽăłăźăăĺćăăŚă彟ăăä˝ăăăăă確čŞăăžăă https://github.com/mapbox/mapbox-gl-js
Mapboxă@ anzorbăŤé˘ăăć ĺ ąăăăăă¨ăă ç§ăŻééăăŞăăăăăŽĺŽčŁ ăăă芳細ăŤăă§ăăŻăăžăăăăăŽăăă°ć稿ďźĺ˝źăăŻă˘ăŚăăŠă¤ăłăăăăăźăă¨ĺźăă§ăăžăďźăăă彟ăăŻĺăŤčż°ăšăăăăŤSDFă˘ăŤăăĄăăăĺ¤ă˘ăăăźăă使ç¨ăăŚăăăăă§ăă ăă ăăSDFăŽçćă¨ă˘ăăŠăšăŽăăăăłă°ćŚçĽăŻç§ăŽăăŽă¨ăŻç°ăŞăăă°ăŞăăă¨ăŽčˇé˘ăăŁăźăŤăăľă¤ăşăä¸ĺä¸ă§ăăă¨ăăĺăĺéĄăŻăăăžăăă ăă ăăăăăăĺăć大ă˘ăŚăăŠă¤ăłĺš ăŽĺśéăăăăžăă
ç§ăŻĺŽéăŤăć¨ćşăŽć´žççŠă使ç¨ăăŚ_screenspace_ă˘ăŚăăŠă¤ăłă§ăăăăăŽé˛ćŠăéăăžăăă ă˘ăŚăăŠă¤ăłăćĺłăăçťé˘ăšăăźăšăŻăăăăšăăŽăľă¤ăş/ăšăąăźăŤăžăăŻćă庌ăŤé˘äżăŞăăăă¨ăă°1çťé˘ăăŻăťăŤĺš ăŤăŞăăžăă çŽć¨ăčćŻă¨ăŽăłăłăăŠăšăăčż˝ĺ ăăăă¨ă ăă§ăăĺ ´ĺăăăăšăăľă¤ăşăŤĺăăăŚćĄĺ¤§ç¸Žĺ°ăăă˘ăŚăăŠă¤ăłă¨ĺăăăăčŻăďźăžăăŻăăăăă弽ăžăăďźăăăŤćăăăžăă ăăăŤă¤ăăŚćčŚăŻăăăžăăďź
ć¨ćşĺăăăĺš
ăŻăăšăąăźăŞăłă°ĺš
ăăăăŻăăăŤĺŞĺ
ăăăžăă ăăŽăăăŤăcssăŽăăăŤĺä˝ăăžăă
cssăäťăăŚéŠç¨ăăătext-shadow
ăŻă font-size
ă¨ăŻçŹçŤăăŚć§ćăăăžăă
ććĄăăăă˝ăŞăĽăźăˇă§ăł@lojjicăĺăăăăŤĺŽčĄăăăĺ ´ĺăăăăŻđđđăŤăŞăăžă
čż éăŞĺŻžĺżăăăăă¨ă@lojjicďź
çŽć¨ăŻăłăłăăŠăšăăčż˝ĺ ăăăă¨ă§ăăăăăŞăăŽććĄăŻç´ ć´ăăăčŚăăžăă ă˘ăŚăăŠă¤ăłăéçăŤăŞăă¨ăăăă¨ă§ăăďź ă¤ăžăăăăăĺśĺžĄăăćšćłăŻăăăžăăďź @stephencorwină誏ćăăăăăŤătext-shadow-ishă˘ăăăźăă使ç¨ăăžăďźă
ćŁç´ăŞă¨ăăă1ăăŻăťăŤăčś éŤĺŻĺşŚăăŁăšăăŹă¤ăŤčĄ¨ç¤şăăăŚăăéăăĺéĄă¨ăŻčŚăŞăăăžăăďźçžĺ¨ăăăŠăłăăľă¤ăşăŤăăă¤ăšăŽăăŻăťăŤćŻăćăăŚăĺŻĺşŚăŤé˘äżăŞăăĺăăćŻçăĺŽçžăăŚăăăăďź ăăăŞăăŽććĄăŻăDPIăŽéŤăăăă¤ăšă§ăŻčźŞéăçŽăŤčŚăăŚčăăŞăăă¨ăćĺłăăă¨ćăăžăăă
ĺăăŁăŚćčŹăăžăďź
ăăŞăăŽććĄăŻăDPIăŽéŤăăăă¤ăšă§ăŻă˘ăŚăăŠă¤ăłăçŽăŤčŚăăŚčăăŞăăă¨ăćĺłăăŚăăă¨ćăăžăăă
ăŻăăăăăŻăšăŻăŞăźăłăšăăźăšă˘ăăăźăăŽ1ă¤ăŽćŹ çšă§ăă ăăăŻĺ¤ăăŽăˇăăŞăŞă§ăŻĺéĄăŞăăăăăăžăăăăč¨č¨č ă¨ăăŚăăă¤ăšéă§ç°ăŞăĺ¤čŚłăćă¤ăŽăŻé˘ĺă§ăă
ăă1ă¤ăŽĺ¤§ăăŞćŹ çšăŻăďźç§ăćăăŤďźăăăźăŽĺăăĺ˘ăăă¨ăăăĺ¤ăăŽăăŻăšăăŁčŞăżĺăăĺż čŚăŤăŞăăăăăăăŠăźăăłăšăŤĺ˝ąéżăĺşăă¨ăăăă¨ă§ăă ăăăăç§ăŻăăăç 犜ăçśăăĺż čŚăăăăžăă
ç§ăăăŽćŠč˝ăĺż
čŚă§ăă ç§ăŻä˝ĺš´ăĺăŤéçşăăAndroidă˘ăăŞăŤăăŽăăăŞćŠč˝ăĺŽčŁ
ăăčŞĺčŞčşŤă¨ĺäşşăŽăăă ăăŤä˝żç¨ăăžăăă ç§ăŻReactă§ăăŽă˘ăăŞăĺĺŽčŁ
ăĺ§ăăăăŞăăŽăăă¸ă§ăŻăăčŚă¤ăăăăăŤăŞăăžăăă
äťăŽäşşă¨ĺăăăăŤăç§ăŻăăŽĺłć¸é¤¨ăŤćčŹăăăă¨ćăăžăă ăłăŁăăăăžăăă
ăăĺ¤ăăŽăăŻăšăăŁăźăŽčŞăżĺăăŤă¤ăăŚăŽăăŞăăŽăłăĄăłăăŤă¤ăăŚăç§ăŻăăŞăăăăăťăŠĺżé ăăăšăă§ăŻăŞăă¨ćăăžăă ĺż čŚăŞčż˝ĺ ăŽăăŻăťăŤăŻăéŁćĽăăăăŠă°ăĄăłăăĺż čŚă¨ăăăăŻăťăŤăŤăŞăăăăă¨ăŤăăGPUăŽăăŁăăˇăĽăŤĺ ĽăăăăăłăšăăŻăťă¨ăăŠăăăăžăăă
ĺ Ľĺ@FunMilesăăăăă¨ăă ďźăłăăŠă䝣襨ďźđďź
ç§ăŻăăŞăăăăăă1ăĺ¤ĺ2ă¤ăŽćçăŽĺăăŽčźŞéăŤćŁăăă¨ćăăžăă ç§ăŽć¸ĺżľăŻăĺăżăĺ˘ăăŤă¤ăăŚăăăŻăšăăŁčŞăżĺăăŽć°ďź4 = 56čŞăżĺăăŽĺăżďźďźă¨ăăăăăŽčŞăżĺăăăăéŤäžĄăŤăŞăĺŻč˝ć§ăŽä¸ĄćšăççşçăŤĺ˘ĺ ăăăă¨ă§ăă ăăăăç§ăŻăăă¤ăăŽăă¨ăčŞăă§ć¨ć¸ŹăăŚăăă ăă§ăGPUăŽĺ°é厜ă§ăŻăăăžăăă ç§ăŻăăăăăăă芌ăăŚăżăĺż čŚăăăăžăă
@lojjic ďźăăăŽĺđďźăăŠă°ăĄăłăăˇă§ăźăăźăŽăłăźăăčŚă¤ăăăă¨ăăžăăă ăˇă§ăźăăźăĺŽĺ
¨ăŤä˝ćăăăŽă§ăŻăŞăăĺ¤ć´ăăăăăŤčŚăăďźăăăŚăŠăăă§čŞăă ă¨ćăďźăŽă§ăçŠäşăç解ăăăŽăŤčŚĺ´ăăŚăăăă¨ăčŞăăžăă
ăă ăăăăŤăˇă§ăźăăźăăŠăŽăăăŞăăŽă§ăĺŽéăŤăŠăŽăăăŤăăŠă°ă¤ăłăăăŽăăŻăăăăžăăăăăłă˘ăŤăźăăłăŽä¸é¨ăĺĺžă§ăăă¨ćăăžă...
ăăă§ă texture2D(uTroikaSDFTexture, vTroikaSDFTextureUV).r;
ă使ç¨ăăŚăăŻăťăŤăŽăšăŤăŠăźčˇé˘ăčŞăżĺăăžăă ăăŞăă䝼ĺăŤć¸ăăăă¨ăç§ăç解ăăŚăăăŞăă1ă¤ăŽĺéĄăŻă°ăŞăăŽĺ¨ăăŽăšăăźăšăŤé˘äżăăŚăăžăă ăăŁă¨čŠłăă誏ćăăŚăăăăžăăďź
ăWăă¨ăăăŽäžăŤćťăă¨ăăăŻăšăăŁĺ
ăŽvTroikaSDFTextureUVăšăăłăŻăă°ăŞăăŽĺ¨ĺ˛ăŤă´ăŁăăă¨ăăŁăăăăŚăăžăăăăăă¨ăăšăăźăšăčż˝ĺ ăăăŚăăžăăďź ăăŠă°ăĄăłăăˇă§ăźăăźăŻăçžĺ¨ăŽă°ăŞăăŽUVăŽĺ˘çăçĽăŁăŚăăžăăďź ăăăăăŞăăĺ¤ĺ´ăŤč˝ăĄăăăŠă°ăĄăłăăŤă¤ăăŚăŻăçžĺ¨ăŽUVăĺ˘çăŤć役ăăăăźăżăĺ
ĺ´ăŤčŞăżĺăăă¨ăă§ăăžăă
ć大ă§5ă¤ăŽăăŻăťăŤčŞăżĺăăžăăŻć´žççŠă使ç¨ăăŚä˝ăĺż čŚăăç解ăăăă¨ăŻĺŻč˝ă ă¨ćăăžăďźăăăăĺŠç¨ĺŻč˝ăăŠăăă確čŞăăžăďźă
ăWăă¨ăăăŽäžăŤćťăă¨ăăăŻăšăăŁĺ ăŽvTroikaSDFTextureUVăšăăłăŻăă°ăŞăăŽĺ¨ĺ˛ăŤă´ăŁăăă¨ăăŁăăăăŚăăžăăăăăă¨ăăšăăźăšăčż˝ĺ ăăăŚăăžăăďź
ĺă°ăŞăăŽĺŽéăŽăăšĺ˘çăŽĺ¨ĺ˛ăŤăŻăčˇé˘ăăŁăźăŤăăŽĺ¤ĺ´ăŽé¨ĺăĺ厚ăăăŽăŤĺĺăŞăăăăăŞä˝ĺăŞăšăăźăšăăăăžăă ăăăŻSDFăŽ8ăăŻăťăŤă§ăăăĺSDFăŻăăžăăžăŞăľă¤ăşăŽă°ăŞăăŻăŻăăăŤăšăąăźăŞăłă°ăăăĺä¸ăŞ64x64ă§ăăăăăăăŽčĄ¨ç¤şăăźă¸ăłăŻă°ăŞăăă¨ăŤç°ăŞăăžăă
ăăŠă°ăĄăłăăˇă§ăźăăźăŻăçžĺ¨ăŽă°ăŞăăŽUVăŽĺ˘çăçĽăŁăŚăăžăăďź ăăăăăŞăăĺ¤ĺ´ăŤč˝ăĄăăăŠă°ăĄăłăăŤă¤ăăŚăŻăçžĺ¨ăŽUVăĺ˘çăŤć役ăăăăźăżăĺ ĺ´ăŤčŞăżĺăăă¨ăă§ăăžăă
ăăŽć ĺ ąăĺŠç¨ĺŻč˝ă§ăăăŻăă§ăă ăă ăăăçžĺ¨ăŽUVăĺ˘çăŤć役ăăĺ é¨ăŽăăźăżăčŞăżĺăăŤčĄăăăŤă¤ăăŚăŻăăŠăăźăăŚăăžăăă
ăăŻăťăŤăŽčŞăżĺăăć¸ăăăŚčźŞéă太ăăăćšćłăçĽăŁăŚăăă°ĺš¸ăă§ăă ç§ăŻăăă揥ăŽăăăŤćŚĺżľĺăăŚăăžăďźă°ăŞăăăšĺ
ăŤăŞăăăŠă°ăĄăłăăŽĺ ´ĺăćžĺ°çść¤ç´˘ăĺŽčĄăăŚăr =ĺ
ăŤăăŠă°ăĄăłăăăăăăŠăăă確čŞăăžăă
1ă¤ăŽĺéĄăŻăă°ăŞăă丌ăšăŚé
罎ăăă¨ăŠăăŞăăă§ăă ăăăŻăăŚăăăăăŞă太ă蟪éă§ćăăăĺä¸ăŽăăŁăŠăŻăżăźăŽĺ ´ĺăčăăŚăżăžăăăt
ă ăăŁăŠăŻăżăźăŻă蟪éăĺ厚ăăăŽăŤĺĺăŞĺ¤§ăăăŽéˇćšĺ˝˘ă§ćăăăŚăăžăă
ăăŠă°ăĄăłăăˇă§ăźăăźăŤăŻă vTroikaSDFTextureUV
ă¨vTroikaGlyphUV
ăŽ2ă¤ăŽä¸ťčŚăŞć
ĺ ąăăăăžăă
ç§ăŽç解ă§ăŻă vTroikaGlyphUV
ăŻăă°ăŞăĺ
ă§0ăă1ăŽéăŤăŻăŠăłăăăăĺ¤ăćăŁăŚăăžăă ć役ăŤă¤ăăŚčŠąăăă¨ăăŤćĺłăăăŽăŻă vTroikaGlyphUV
ăăăăăŽĺ˘çăŽĺ¤ĺ´ăŤăăĺ ´ĺăă°ăŞăĺ˘çăŤăć役ăăăăçšăŽčˇé˘ăĺĺžă§ăăă¨ăăăă¨ă§ăăă ă¤ăžăăuv =ďź1.05ă0.7ďźăŽĺ ´ĺăć役çšăŻďź1.0ă0.7ďźăŤăŞăăžăă ďź1.0ă0.7 +ă¤ăăˇăăłďźăăăłďź1.0ă0.7-ă¤ăăˇăăłďźăŽĺ¤ă使ç¨ăăăă¨ăŤăăăčˇé˘ă¸ăŽĺžé
ăĺĺžăăăăă使ç¨ăăŚăďź1.05ă0.7ďźă§ăŽčżäźźčˇé˘ăč¨çŽă§ăăžăă
ăăŽăăăŤčŞĺăŽäťäşăăăă¨ăăăăŻăšăăŁăŤă°ăŠăăźăˇă§ăłăäťăăŚSDFăĺŽčĄăăŚăăäşşăŽč¨äşăčŞăă ăă¨ăčŚăăŚăăžăă ăăŽă˘ăăăźăă§ăŻă3ă¤ăŽăăŻăťăŤăčŞăżĺăĺż
čŚăăăăžăăăăăăŻăšăăŁă3ăłăłăăźăăłăăŽăăŻăšăăŁăŤăŞăăăăŻăšăăŁăŽć§çŻăč¤éăŤăŞăăžăă
ăăăŻăăŞăăŽčłŞĺăŤçăăžăăďź
ăăă§ăč¤ć°ăŽăăŁăŠăŻăżăźă丌ăă§ăăĺ ´ĺăăăăăăéŁćĽăăăăŁăŠăŻăżăźăčŞčăăŚăăĺż čŚăăăăăăăĺ°ăč¤éăŤăŞăăžăă çžĺ¨ăŽăăŁăŠăŻăżăźă ăă§ăŞăăéŁäşşăŤăGlyphUVă¨TextureUVăćşĺ¸Żăăĺż čŚăăăăžăă ăăăŤăŻăĺćĺă2ă¤ăŽéˇćšĺ˝˘ăŤăŤăăăăĺż čŚăăăĺ ´ĺăăăăžăăăăăŤăăăéŁćĽăăćĺăŻăćĺăŽéˇćšĺ˝˘ă§ăŻĺăŤă2çŞçŽăŽéˇćšĺ˝˘ă§ăŻĺžăŤăŞăăă¨ăă§ăăžăă č¤ć°čĄăŽĺŚçćšćłăăăăăžăăăă˘ăăŞăąăźăˇă§ăłă§ăăŽĺ ´ĺăŤĺŻžĺŚăăĺż čŚăŻăăăžăăă§ăăă ç§ăŽă˘ăăŞăąăźăˇă§ăłăŻĺ°ĺłă§ăĺăŠăăŤăŻ1čĄă§ăăă
PSďźăĺă°ăŞăăŽĺŽéăŽăăšĺ˘çăŽĺ¨ăăŽä˝ĺăŞăšăăźăšăă誤解ăăĺŻč˝ć§ăăăăžăă ăă¨ăă°ăXăŽĺ ´ĺăăăăŻéˇćšĺ˝˘ăŤĺ˛ăžăăŚăăŚăćĺšăŞĺ¤ăćăăŞăä¸č§ĺ˝˘ă4ă¤ăăă¨č¨ăŁăŚăăžăăďź
@FunMilesç§ăŻăăŞăăăŠăăŤčĄăăŽăăăăăăăăăžăăă çčăăăŽăŤĺ°ăćéăăăăăžăăăçžćçšă§çŚçšăĺ˝ăŚăĺż čŚăŽăăäťăŽçˇ ăĺăä˝ćĽăăăăžăă
PSďźăĄăăŁă¨ăă漽ăăć°ĺŚăŽăĄă˘ďź
誰ăă2ă¤ăžăăŻ3ă¤ăŽć´ĺăăăă¤ăłăăăĺžé
ăĺĺžăăćšćłăçĺăŤćăŁăĺ ´ĺăŤĺăăŚăčˇé˘ăŽĺžé
ăŤăŻĺşĺŽăŽăăŤă ăăăăă¨ăčŚăăŚăăĺż
čŚăăăăžăďźé¸ćăăăšăąăźăŤăŤăăŁăŚç°ăŞăăžăďźă ăăăŚăă°ăŠăăźăˇă§ăłăŻééăăŞăă°ăŞăăăăŻăšăŽĺ¤ĺ´ăćăăŚăăžăă ăăăăŁăŚăăă¨ăă°ăäžăŽ3ă¤ăŽăă¤ăłăďź1.0ă0.7ďźăďź1.0ă0.7 +ă¤ăăˇăăłďźăăăăłďź1.0ă0.7-ă¤ăăˇăăłďźăăăšăŚĺăčˇé˘ăŤăăĺ ´ĺăĺžé
ăŻďźscaleă0ďźăŤăŞăăžăă
確ăăŤăăăŠăźăăłăšăŻčŻăăăăžăăăăăŞăăťăăă使ç¨ăăăă¨ăŻĺŻč˝ă§ăă ç§ăŻreact-three-fiber
ă使ç¨ăăŚăăžăăăăăŻădreiăăăąăźă¸ă§troika-textăć´ťç¨ăăžăăăăŠă¤ăăŠăŞăăšăăăźăŻăăă¤ăăŁăăŤăľăăźăăăăžă§ăäťăŽäşşăä¸ćçăŞč§Łćąşçăć˘ăăŚăăĺ ´ĺăŤĺăăŚĺ
ąćăăă¨čăăžăăă
import React from 'react';
import {Text} from 'drei';
const StrokedText: React.FC<
{
strokeWidth?: number;
strokeColor?: string;
strokeResolution?: number;
bold?: boolean;
} & any
> = ({
strokeWidth = 1,
strokeColor: color = '#000000',
strokeResolution = 100,
position,
bold,
...props
}) => {
const font = bold ? FONTS.BOLD : undefined;
const sharedProps = {
...props,
font,
color,
sdfGlyphSize: 12,
debugSDF: true,
};
let zOffset = 0;
const offset = () => (zOffset += 0.001);
return (
<group name="Stroked Text" position={position}>
{Array(strokeWidth)
.fill({})
.map((_, i) => {
const s= i / strokeResolution;
return (
<React.Fragment key={i}>
{/* <Text {...sharedProps} position={[-s, 0, offset()]} />*/}
{/* <Text {...sharedProps} position={[s, 0, offset()]} />*/}
<Text {...sharedProps} position={[0, -s, offset()]} />
<Text {...sharedProps} position={[0, s, offset()]} />
<Text {...sharedProps} position={[-s, -s, offset()]} />
<Text {...sharedProps} position={[s, s, offset()]} />
{/* <Text {...sharedProps} position={[-s, s, offset()]} /> */}
{/* <Text {...sharedProps} position={[s, -s, offset()]} /> */}
</React.Fragment>
);
})}
<Text name="Text" {...props} position={[0, 0, strokeWidth ? offset() : 0]} />
</group>
);
};
export default StrokedText;
ăăŽĺžăäťăŽĺ ´ćă§ăŻăé常<Text />
<StrokedText />
ă§ĺźăłĺşăăă¨ăă§ăăžăă
<StrokedText
color="#ffffff"
fontSize={fontSize}
clipRect={[-0.5, -0.15, 0.5, 0.15]}
textAlign="center"
position={[0, 0, 0.01]}
>
{text}
</StrokedText>
@FunMilesç§ăŻă¤ăăŤăăŞăăŽććĄă解ćăăćéăăăăžăăă ă°ăŞăăŽSDFéˇćšĺ˝˘ĺ ¨ä˝ăŤăćç¨ăŞďź> 0.0ďźčˇé˘ĺ¤ăĺŤăžăăŚăăă¨äťŽĺŽăăă¨ăăăăŻçăŤăăŞăŁăŚăăă¨ćăăžăă çžĺ¨ăŻăăă§ăŻăăăžăăă ăxăăŤă¤ăăŚăŽăăŠăăźă˘ăăă§ăăăčŞčăăŚăăă¨ćăăžăăăăă§ăŻăSDFăăŻăŻăăăŽĺ˘çĺ ă§ăźăăŤĺĺăŤä˝ä¸ăăăăăĺ¤ćżăăăăăŽćç¨ăŞčˇé˘ĺžé ăăŞăéčŚăŞé ĺăăăăžăă
ăăăăăSDFă¸ă§ăăŹăźăżăźăĺ¤ć´ăăŚăăŻăŻăăĺ ¨ä˝ă§ăźă䝼ĺ¤ăŽĺžé ă確äżăăăă¨ăć¤č¨ă§ăăžă...ďź ĺ¤§ĺŁ°ă§čăăă¨ăčˇé˘ăŽç˛žĺşŚăŤĺ˝ąéżăăăăă˘ăăŠăšăăŻăšăăŁĺ ăŽăăŁăŠăŻăżăźéăŤă˘ăźăăŁăăĄăŻăăçşçăăĺŻč˝ć§ăăăăžă...đ¤
ăăăăăSDFă¸ă§ăăŹăźăżăźăĺ¤ć´ăăŚăăŻăŻăăĺ ¨ä˝ă§ăźă䝼ĺ¤ăŽă°ăŠăăźăˇă§ăłă確äżăăăă¨ăć¤č¨ă§ăăžăă
ç§ăŻăăă芌ăăžăăăăăăă§ăăčˇé˘ăăŁăźăŤăăăŻăŻăăĺ˘çăčś ăăŚĺ¤ćżăăăă¨ăă§ăăžăăăćăăŚăăăăăŤăă°ăŞăčŞä˝ăŽĺ質ăĺ¤§ĺš ăŤä˝ä¸ăăžăă ăăăŻă8ăăăăŽă°ăŠăăźăˇă§ăłă ăă§äşćłăăăžăă ăăăăăéˇăčˇé˘ăŤĺşăăă¨ăĺăăŻăťăŤăŽç˛žĺşŚăä˝ä¸ăăžăă :(
ăăăăă2çŞçŽăŽăăŻăšăăŁăăŁăăŤăŤă¨ăłăłăźăăăăă˘ăŚăăŠă¤ăłďźăăćĄćŁăăŚăăă粞庌ăŽä˝ăăăŁăźăŤăďźăŤĺŻžăăŚĺĺĽăŽSDFăçćăăăă¨ăă§ăăžăă ăăŻăšăăŁăľă¤ăşăŻ2ĺăŤăŞăăžăăăĺ¤§ĺš ăŤé ăăŞăăă¨ăŻăăăžăăă đ¤
2çŞçŽăŽăăŻăšăăŁăăŁăăŤăŤă¨ăłăłăźăăăăžăă
@lojjicăăăŻé常ăŤĺççăŤčăăăĺşćŹçăŤçžĺ¨ăŽç§ăŽĺéżçă樥ĺŁăăŚăăžăă ăăăŤăăŞăăă¤ăłă§ăăăăăăŚăźăśăźăă˘ăŚăăŠă¤ăłăčŚćąăăŞăăŚăăăăŠăźăăłăšăä˝ä¸ăăăă¨ăŻăăăžăăă
@lojjic @stephencorwinăŤăăŁăŚććĄăăăăŞăăă¤ăłă˘ăăăźăăŻă誰ăćŻćăćşĺăă§ăăŚăă䝼ä¸ăŤćŻćăăă¨ăăŞăăăăŤăăžăă
ćčĄçăŞĺ´é˘ăŤćťăăžăă ĺżçă§Xçťĺăĺăăžăăăă ăăšăŚăŽă°ăŞăă§64x64ăăŻăťăŤă§ăăăă¨ăćŁăăç解ăăŚăăžăăďź 8ăăăăŽĺ ´ĺăčˇé˘çŠşéĺ ¨ä˝ăă¨ăłăłăźăăăĺż čŚăăăĺ ´ĺăŻă2_ĺ°ć°_ăăăăŽç˛žĺşŚăăăăă¨ăćĺłăăžăă ăăŽç˛žĺşŚă§ăŻä¸ĺĺă ă¨ăăŁăăăŁăŚăăă¨ćăăžăă
é常ăŤĺ°ăŞăăłăšăă§ç˛žĺşŚăä¸ăăăăăŤä˝żç¨ăăăăŞăăŻăăăăăăăăžăăă 8ăăăăŽ64x64ăŽă°ăŞăăăĺŽčĄăă䝣ăăăŤă2x2ăăăăŻăŽăăźăżă32ăăăăăźăżăŤĺ§ç¸Žăăžăă 2ă¤ăŽăăŻăťăŤéăŽçŹŚĺˇäťăčˇé˘ăŽć確ăŞçšĺž´ăŽ1ă¤ăŻă常ăŤ[-1,1]塌ĺłăä¸ä¸ă[-sqrtďź2ďźăsqrtďź2ďź]ăŽĺŻžč§çˇĺ
ăŤăăăă¨ă§ăă ăăăăŁăŚă2x2ăăăăŻăŽä¸ĺżăŽSDăŤ12ăăăă使ç¨ăăă¨ăăžăăăăŻăťăŤăŽä¸ĺżă¨2x2ăŽä¸ĺżăŽĺˇŽăă¨ăłăłăźăăăăăăŤăăăŻăťăŤăŽä¸ĺżăă¨ăŤ5ăăăăĺż
čŚăŤăŞăăžăă ăăăăŽ5ăăăăŻăć大ă§sqrtďź2ďź/ 2ăŽčˇé˘ă襨ăăžăă äşĺŽä¸ă5.5ăăăăŽç˛žĺşŚăăăăžăă
ä¸ĺżçšăŽ12ăăăăŻăć大64ăŽčˇé˘ă§ĺ°ăŞăă¨ă6ăăăăŽç˛žĺşŚăă¨ăłăłăźăăăžăăćčĄçăŤăŻăăăăŻăšăŽăłăźăăźăŤ1ă¤ăŽăă¤ăłăăăăŞăĺ ´ĺă12ăăăăŻć大sqrtďź2ďź* 64ăžă§ă¨ăłăłăźăă§ăăĺż
čŚăăăăžăăăăăŻăšăŻăăšăŚăŽă°ăŞăăä¸ĺżăŤé
罎ăăăŚăăă¨čăăăăăăăĺŽéăŤăŻä¸ĺŻč˝ă ă¨ćăăžăă ĺŽéăă°ăŞăă¨ăă¸ăăé˘ăăă¨ăăăŤăżăă¨ăłăłăźăăăĺż
čŚăŽăăć
ĺ ąăĺ°ăŞăăŞăăžăďźă°ăŞăă¨ăă¸ăăé ăé˘ăăŚăăĺ ´ĺăĺžé
ăăŁăźăŤăăŻčżĺă§ăťăźĺä¸ăŤăŞăăžăďźăăăăăŁăŚăć
ĺ ąçčŤăŽčŚłçšăăăŻăă¨ăłăłăźăăŁăłă°ăćšĺăăăă¨ăĺŻč˝
ăăĺ¤ăăŽĺŽéăŽć
ĺ ąăĺĺžăăăăăŤ....ăăăăç§ăŻăăŽăăăŞčż˝ĺ ăŽćéŠĺăăĺ§ăăžăăă
ăăŽă˘ăăăźăăŽčĺłćˇąăçľćăŽ1ă¤ăŻăăăŻăšăăŁăŞăłă°ăăźăăŚă§ă˘ăŤčŁéăčĄăăăŞăăă¨ă§ăă ăăăăéăŤč¨ăă°ăçĄćă§ă°ăŠăăźăˇă§ăłăĺĺžă§ăăžăă
ăăŤăăĺż čŚăŞĺ ´ĺăŻăăăăăăšăŚăŽă¨ăłăłăźă/ăăłăźăăĺŽčŁ ă§ăăžăă
PSďźREADME.mdăŽ1ă¤ă§ăăăć´çˇ´ăăăSDFăŤă¤ăăŚăŽč°čŤăčŚăč¨ćśăăăăžăă ç§ăŻăăă夢čŚăžăăăďź đ誰ăăç§ăŤăăăććăăŚăäťăŽăˇăšăă ăăăă§ĺ˝šçŤă¤ăăŠăăă確čŞă§ăăžăăďź
@FunMilesé常ăŤĺˇ§ĺŚăŞĺ§ç¸ŽăŽă˘ă¤ăă˘ă äťăŽăŞăăˇă§ăłă夹ćăăĺ ´ĺăŻăăăăčŚăăŚăăăžăă ăăźăăŚă§ă˘ăŤăăçˇĺ˝˘čŁéă夹ăăă¨ăŻăç§ăčĄăĺż čŚăŽăŞăăăŹăźăăŞăă§ăă đ
ĺĺăŞăăăăăŞăă¨ăăç§ăŽĺéĄăŻăăăźăăčˇé˘ă¨ăăŚ0.5ă使ç¨ăăăă¨ă§ćŞĺăăăă¨ăăăăăžăăăăăŽăăăă°ăŞăăŽăĺ¤ĺ´ăăŽčˇé˘ăă¨ăłăłăźăăăăăăŤä˝żç¨ă§ăăă˘ăŤăăĄĺ¤ăŻĺĺă ăă§ăă ăăăăˇăăăăŚăĺ¤ĺ´ăŽčˇé˘ăŤĺ¤ăăŽĺ¤ă使ç¨ăăĺ ĺ´ăŽčˇé˘ăŤĺ°ăŞăĺ¤ă使ç¨ăăŚăĺ¨čžşăŽç˛žĺşŚăä¸ăăăă¨ăă§ăăžăă
ĺă ăăăć´çˇ´ăăăSDFăă¨ăŻăč¤ć°ăŽăŤăŠăźăăŁăłăăŤă使ç¨ăăăăMSDFăăćĺłăăĺ ´ĺăăăăžăăďź
@FunMilesé常ăŤĺˇ§ĺŚăŞĺ§ç¸ŽăŽă˘ă¤ăă˘ă äťăŽăŞăăˇă§ăłă夹ćăăĺ ´ĺăŻăăăăčŚăăŚăăăžăă ăăźăăŚă§ă˘ăŤăăçˇĺ˝˘čŁéă夹ăăă¨ăŻăç§ăčĄăĺż čŚăŽăŞăăăŹăźăăŞăă§ăă đ
ăăŽčŁéă夹ăăă¨ăĺżé ăăĺż čŚăŻăŞăă¨ćăăžăă ăłăšăăŻé常ăŤä˝ăă§ăăăăăźăăŚă§ă˘ăŽăľăăźăăăŞăĺ ´ĺăŤĺ¸¸ăŤĺžé ďźăăăłĺ°ăăŽć˛çďźăćă¤ăă¨ăŽĺŠçšăŻăç§ăŽčŚč§Łă§ăŻăăéčŚă§ăă ĺŽéăŤăŻăăľăłăăŤăă¤ăłăă丸ăăŚă丸ăăăăăľăłăăŤăă¤ăłăă¸ăŽć°ăăăŞăăťăăĺ¤ăĺĺžăăžăă ă˘ăłăă¨ă¤ăŞă˘ăˇăłă°ăŽăăăŤăăŠă°ăĄăłăăŽé¨ĺçăŞăŤăăźăč¨çŽăăăă¨ăŻăĺŠç¨ĺŻč˝ăŞă°ăŠăăźăˇă§ăłă§é常čĄăăŽă¨ĺăăăăŤé˛čĄăăžăă
ĺĺăŞăăăăăŞăă¨ăăç§ăŽĺéĄăŻăăăźăăčˇé˘ă¨ăăŚ0.5ă使ç¨ăăăă¨ă§ćŞĺăăăă¨ăăăăăžăăăăăŽăăăă°ăŞăăŽăĺ¤ĺ´ăăŽčˇé˘ăă¨ăłăłăźăăăăăăŤä˝żç¨ă§ăăă˘ăŤăăĄĺ¤ăŻĺĺă ăă§ăă ăăăăˇăăăăŚăĺ¤ĺ´ăŽčˇé˘ăŤĺ¤ăăŽĺ¤ă使ç¨ăăĺ ĺ´ăŽčˇé˘ăŤĺ°ăŞăĺ¤ă使ç¨ăăŚăĺ¨čžşăŽç˛žĺşŚăä¸ăăăă¨ăă§ăăžăă
ăăăŤăăăăăăă1ăăăăŽç˛žĺşŚăĺžăăăžăă ăăăăżăăăĺż čŚăŻăăăžăăăăăăă§ăăăăťăŠéčŚă§ăŻăăăžăăă
ĺă ăăăć´çˇ´ăăăSDFăă¨ăŻăč¤ć°ăŽăŤăŠăźăăŁăłăăŤă使ç¨ăăăăMSDFăăćĺłăăĺ ´ĺăăăăžăăďź
ăăăç§ăćĺłăăăă¨ă§ăă ç§ăŻăăăŤă¤ăăŚăŽGitHubăăă¸ă§ăŻăăC ++ă§čŚă¤ăăžăăă ăăă使ăăăŽăŻăăăžăăăăăăă¨ă2éąéĺăŤčŞżăšăăăžăăžăŞăăŽăăăăˇăĽă˘ăăăăŚćˇˇäšąăăžăăăďź
ăĄăŞăżăŤăMSDFăŻĺ˝šăŤçŤăăŞăă¨ćăăžăă
JavaScriptă§SDFăć§çŻăăćšćłă誏ćăăĺ°ăăŞ.mdăăĄă¤ăŤăĺ
Ľćă§ăăăăŠăăĺ°ăăŚăăăă§ăăďź ăăă§ăĺ§ç¸ŽăŽă˘ă¤ăă˘ăĺŽčŁ
ăăăăăŽăłăźăăä˝ćă§ăăă¨ćăăžăă
SDFăŻăăă§ć§çŻăăăžăďź https ďź//github.com/protectwise/troika/blob/master/packages/troika-three-text/src/worker/SDFGenerator.js#L134-ăťă¨ăăŠčŞŹćăăăă¨ăŻăăžăăăăžăăăăŻăťăŤăăăŠăłăĺä˝ăŤăăăăłă°ăă渏ĺŽăăăčˇé˘ăăăŻăťăŤĺ¤ăŤć¸ăčžźăżăžăă ĺ2x2ăăăăŻăŽä¸ĺżçšăŤă¤ăăŚăăăăŤăăă¤ăăŽčˇé˘ć¸ŹĺŽĺ¤ăčż˝ĺ ăăĺż čŚăăăăžăă
ç§ăŽčłăăăăŤĺŽĺ ¨ăŤĺ ăżčžźăăă¨ăăŚăăžă... GLSLă§ĺä¸ćŹĄčŁéăč¤čŁ˝ăăăă¨ăŻă4ă¤ăŽćăčżăĺ¤ăĺžăăăă°ăĺĺăŤĺç´/ĺŽäžĄăŤčŚăăžăă ĺ§ç¸Žăšăăźă ă§ă¨ăłăłăźăăăăă¨ăăŤăăăăŽĺ¤ăĺĺžăăăŤăŻă揥ăŽăă¨ăĺż čŚăŤăŞăă¨ćăăžăă
ç§ăŻăăăćŁăăăăăšăŁăŚăăžăăďź
ăĄăăŁă¨ĺž ăŁăŚăă ăăăç§ăŻăžă ăˇăłă°ăŤăăŁăłăăŤăŽăăŻăšăăŁăčăăŚăăžăăă 4ă¤ăŽrgbaăăŁăăŤă使ç¨ăăă¨ăĺăăźăżăăăăŻăŻ1ĺăŽčŞăżĺăăŽăżăŤăŞăăžăă ăăăăŁăŚăć大4ă¤ăŽăăŻăšăăŁăľăłăăŤă
ç§ăŻSDFGenerator.jsăčŞăżĺ§ăăžăăă ăăŁă¨čŚăŚăăăžăă
ăăšăŚăŽĺ´é˘ăă°ăŞăă¨ăă¸ăŤĺ˛ăžăăŚăăĺŻč˝ć§ăăăăłăźăăźăąăźăšăŽă˘ăŤăăĄăăŹăłăăŁăłă°ăçšăŤćšĺăăăĺ ´ĺăé¤ăăŚăăăŠă°ăĄăłăăă¨ăŤ1ă¤ăŽăăŻăťăŤăčŞăżĺă䝼ä¸ăŽĺż
čŚăŻăŞăă¨ćăăžăă ăăŠă°ăĄăłăăŽä¸ĺżăăă2x2ăăăăŻăŽćăčżăä¸ĺżăĺż
čŚă§ăă
ăă ăăäşćăăŚăăŞăăŁăĺéĄăăăĺŻč˝ć§ăăăăă¨ăčŞčăăŚăăžă... WebGL 1.0ăŻăăăă§ä˝żç¨ă§ăăăăŽăŤé常ăŤĺśéăăăăžăă珌ĺˇăŞăć´ć°ĺuint
ăŻăŞăă32ăăăć´ć°ă§ăăăăžăăă đ¤ŻăăăŚăăăĺä˝ăŽćźçŽăŻăăăžăă...ăăăăŁăŚăç§ăććĄăăŚăăĺ§ç¸ŽăŻă16ăăăć´ć°ă使ç¨ăăŚč¨čż°ăăăŽăĺ°ăéŁăăă§ăă
ăăăăŻăăšăŚWebGL2.0ă§ĺŠç¨ă§ăăžăăăăăă§WebGL 1.0ăăżăźă˛ăăăŤăăăă¨ćăăžăăďź
ăăăăŻăăšăŚWebGL2.0ă§ĺŠç¨ă§ăăžăăăăăă§WebGL 1.0ăăżăźă˛ăăăŤăăăă¨ćăăžăăďź
ăăăšăăŽă˘ăŚăăŠă¤ăłăwebgl2ăŤĺśéăăăŚăźăśăźăăăŽăăŠăŚăśăźă¨äşćć§ăăăăăŠăăăć¤ĺşăăăŽăĺççăăăăăŞăă¨ćăăžăă ăă ăăwebgl2ăŽćéŠăŞăăźă¸ă§ăłă¨webgl1ăŽăăŠăźăŤăăăŻăŽä¸ĄćšăĺŽčĄăăŚăăĺŻč˝ć§ăăăăă¨ăŻç解ă§ăăžăă ImoăŻăwebgl 2ăăĺ§ăăŚăăăăŤä¸Ąćšăăľăăźăăăăă¨ăăĺăŤăăłăăĽăăăŁăŤćľ¸éăăăăă¨ăă§ăăžăă
粞庌ăŽĺéĄăĺéżăăăăăŽĺĽăŽă˘ăăăźăăăăă¨ćăăŽă§ă @ FunMilesăŻäťăŽă¨ăăĺ§ç¸ŽăŤé˘ăăĺéĄăŤă¤ăăŚĺżé ăăĺż čŚăŻăăăžăăă
ăă@lojjic ăăăăăă§ăăŻă¤ăłăăă ăă§ăă ä˝ăé˛ćŠăç§ăăĄăĺŠăăăă¨ăă§ăăăă¨ăŻăăăžăăďź
čŁčśłďźSafariăŻă¤ăăŤWebGL2ăăľăăźăăăăăăŤăŞăăžăăăăăŽăăăăăŽćŠč˝ă§ăŻWebGL1ăăľăăźăăăŞăĺŻč˝ć§ăăăăžăă
WebGL2ăŽĺŽčŁ ăŻĺĺăŞçść ăŤăăăăăăăĺşçŻăŞăăšăăŽăăăŤăăăŠăŤăă§ćĺšăŤăăĺż čŚăăăăžăă
https://trac.webkit.org/changeset/267027/webkit
ç§ăŻiPhone6ăćăŁăŚăăžăăăWebGL2.0ăŻăăăžăăđ
čĺłćˇąăăă¨ăŤăWebGL 1.0ăŻăç§ăćăŁăŚăăăăăăăăŤćŞăčŚäťśăćĺŽăăŚăăžăă ć´ć°ăŻĺŽéăŤăŻĺĺ¨ăăžăăďź
4.1.3ć´ć°
ć´ć°ăŻä¸ťăŤăăă°ăŠăăłă°ćŻć´ă¨ăăŚăľăăźăăăăŚăăžăă ăăźăăŚă§ă˘ăŹăăŤă§ăŻăĺŽć°ă彚çŤăĄăžă
ăŤăźăă¨é ĺă¤ăłăăăŻăšăŽĺšççăŞĺŽčŁ ăăăăłăăŻăšăăŁăŚăăăăŽĺç §ă ăăăăăăăžăă
č¨čŞăŽć´ć°ăăăźăăŚă§ă˘ăŽć´ć°ĺăŤăăăăăăă¨ăăčŚäťśă ăăăŻćĺž ăăăŚăăžăă
ĺşç¤ă¨ăŞăăăźăăŚă§ă˘ăŻăăăžăăžăŞć´ć°ćźçŽăĺŽĺ ¨ăŤăľăăźăăăŚăăžăă OpenGLESăˇă§ăźăăŁăłă°
č¨čŞĺŽčŁ ăŻăć´ć°ă澎ĺĺ°ć°çšć°ăŤĺ¤ćăăŚćä˝ăăĺ ´ĺăăăăžăă ăăăăŁăŚăăăźăżăăŤăŻăăăžăă
ăŠăăăłă°ĺä˝ă
ăăăăç§ăŻĺ¸ćă夹ăŁăŚăăžăăă ĺ°ăčăç´ăăŞăăă°ăŞăăŞă...
ăăŽéă @ lojjic ăăăŞăăčăăĺĽăŽă˘ăăăźăăćăăŚăăă ăăžăăăďź
@FunMilesăăĄăăă§ăă éçˇĺ˝˘ăšăąăźăŤă使ç¨ăăŚčˇé˘ĺ¤ăă¨ăłăłăźăăăăă¨ăŤăăăă°ăŞăăŽĺ˝˘çśăŤĺĺăŞç˛žĺşŚăçśćăăŞăăăčˇé˘ăăŁăźăŤăăăăŻăšăăŁăŽă¨ăă¸ăžă§ćĄĺźľă§ăăžăă ăăăăŁăŚăă°ăŞăăŽăăšăŤé常ăŤčżăčˇé˘ďź1ă2ăăŻăťăŤäťĽĺ ďźăŤăŻĺ¤ăăŽĺ¤ăăăăžăăăé ăčˇé˘ăŤăŻĺ°ăŞăĺ¤ăăăăžăă ăˇă§ăźăăźăŻăĺ ăŽç´çˇčˇé˘ăŤćťăćšćłăçĽăŁăŚăăĺż čŚăăăăžăă ă°ăŞăăŽéŠĺăŞĺ˝˘çśăŻčŚć ăăăăăćźăĺşăăă蟪éăŽç˛žĺşŚăŽä˝ăăŻăă¨ăŤăă丸ăăăăŚăăăăăăťă¨ăăŠçŽçŤăĄăžăăă
ăăăŻă2幤ăŽçˇĺ˝˘ăšăąăźăŤă¨ćć°ăšăąăźăŤăŽä¸Ąćšă使ç¨ăăŚč¨źćăăžăăă ăŠăĄăăŤăéˇćă¨çćăăăăžăă
çžĺ¨ăéŁćĽăăă¨ăă¸ĺ¤ă使ç¨ăăŚăŻăŻăăăŽĺ¤ĺ´ăŽă°ăŠăăźăˇă§ăłăćŚçŽăăă¨ăăďźé常ăŤăšăăźăăŞďźă˘ăăăźăăĺŽčŁ ăăŚăăćä¸ă§ăă č§ăŽĺ¤ĺ´ăŽé ĺăŤă¤ăăŚăŻăŠăăăăăăăăăăăžăăăăăăăžă§ăŽă¨ăăçăŤăăŞăŁăŚăăžăă 桹ăćăä¸ăăŚăżăă¨ćăăăŤăŞăăăăăăžăăăăç°ĄĺăŞçăăăăă°ăăăăăă§ă:)
çžĺ¨ăéŁćĽăăă¨ăă¸ĺ¤ă使ç¨ăăŚăŻăŻăăăŽĺ¤ĺ´ăŽă°ăŠăăźăˇă§ăłăćŚçŽăăă¨ăăďźé常ăŤăšăăźăăŞďźă˘ăăăźăăĺŽčŁ ăăŚăăćä¸ă§ăă č§ăŽĺ¤ĺ´ăŽé ĺăŤă¤ăăŚăŻăŠăăăăăăăăăăăžăăăăăăăžă§ăŽă¨ăăçăŤăăŞăŁăŚăăžăă 桹ăćăä¸ăăŚăżăă¨ćăăăŤăŞăăăăăăžăăăăç°ĄĺăŞçăăăăă°ăăăăăă§ă:)
_č§ăŽĺ¤_ăä˝ăćĺłăăăŽăăăăăžăăă ćăčżăć役ăăłăźăăźčŞä˝ă§ăăăĺăłăźăăźăŤć šăăăăŻăŠăźăżăźăăŹăźăłăćĺłăăžăăďź ăăă§ăŻăĺç´ă¨ăă¸ă¨ć°´ĺšłă¨ăă¸ăŽä¸ĄćšăŽă¨ăă¸ă§ăŤăźăŤă使ç¨ăăăăăăăžă§ăŽčˇé˘ăŤĺşăĽăăŚĺ éĺšłĺăčĄăăă¨ăă§ăăă¨ćăăžăă
PSďźWebGLć´ć°ăăłăťăłăšăčŞăă ĺžăäťćĽă粞庌ă大ĺš
ăŤä¸ăăă¨ăăă˘ă¤ăă˘ăćă澎ăăłăžăă...đĺ§ç¸ŽćčĄăWebGL 1.0ăŤĺŽčŁ
ăăŚă11ăăăăŽç˛žĺşŚăĺŽäžĄăŤĺĺžă§ăăăă¨ăćĺž
ăăŚăăžăăăăĺ¤ăăŽăăšăă§ăăĺ¤ăăŽăăăă ă¤ăžăă rgba
ă使ç¨ăăă¨ă a
ăŻĺšłĺăŽ8ăăăăäżćă§ăă rgb
ăă¨ăŤç˝˛ĺăăă珌ĺˇăŻăăăă1ăăăăŽç˛žĺşŚă襨ăăžăăĺšłĺăăăăŚćĺžăŤ0ăă127ăŽçŻĺ˛ăŤăăä˝ăăŻăĺż
čŚăŞ4ă¤ăŽĺ¤ăŽăăĄăŽ3ă¤ăŤĺŻžăăŚ7ăăăă襨ăăăăŤăĺ¤64ăć¸çŽăăăžăă ĺŽéăŽĺ¤ăŻăcenterďź0ăă2 ^ 11-1ăŽçŻĺ˛ďź+ dist_iăŤăŞăăžăă ĺč¨ăŻĺšłĺă§ăŞăăă°ăŞăăŞăăăă4çŞçŽăŽĺ¤ăŻăăăăŽĺč¨ăĺźăăăăŽăĺŽčĄăăăă¨ăŤăăŁăŚĺ垊ăăăžăă 11ăăăăăĺžăăăžăăăăăăăăăăă§ĺĺă§ăă ăăĺ¤ăăŽăăăăĺĺžăăăŤăŻăĺ¤ăžăăŻr
ă g
ăăăăłb
ă-64ăăĺ°ăăăăćŁăžăăŻč˛ ă64ăă大ăăăăăăšăăăĺż
čŚăăăăžăăä¸ĺ¤ŽăŤ14ăăăăéăăŤ6ăăăăŽăżăä¸ăăžăă ăăăăčŻă匼ĺçšă§ăăďź WebGL 1.0ăćŁç˘şăăäżč¨źăăă¨ăăé常ăŤçˇŠăäżč¨źăăăăŽčăćšăŤĺš˛ć¸ăăŞăăă¨ăăăšăăăĺż
čŚăăăăžăă
ăăăăăăŻç§ăćĺłăăăă¨ă§ăăUă¨VăŽä¸Ąćšă0-1ăŽĺ¤ĺ´ăŤăăă¨ăŞă˘ă ăăăă¨ăăç§ăŻăăă芌ăăŚăżăžăă
@lojjicä˝čŤă§ăăă䝼ĺăŽć稿ă§ăŻăăĄă˘ăŞăŽăăăŤSDFăăŻăťăŤăă¨ăŤ2ă¤ăŽăăŻăšăăŁĺ¤ăăăăă¨ăć¸ĺżľăăŚăăăăă§ăă ç§čŞčşŤăŻăĄă˘ăŞăć¸ăăăă¨ă弽ăżăžăăă64x64ă°ăŞăăä¸ăŽ256ĺăŽă°ăŞăăŻ1 / 4MBăŽăăŻăšăăŁăĄă˘ăŞăăćśč˛ťăăŚăăžăăă ä¸é¨ăŽč¨čŞă§ăŻăăăŤĺ¤ăăŽă°ăŞăăĺż čŚăŤăŞăĺ ´ĺăăăăă¨ăŻçĽăŁăŚăăžăăăăăă§ăBBCăŻăć°čăčŞăăŽăŤĺż čŚăŞăŽăŻ2000/3000ćĺă ăă ă¨č¨ăŁăŚăăžăă ăăăăŁăŚă4000ćĺăŻăăăŻăťăŤSDFăă¨ăŤ1ăă¤ăă§4MBăŤăŞăăžăă ĺżé ăă䞥ĺ¤ăăăăžăăďź
@FunMilesăă§ă˘ăă¤ăłăăăăăŚç§ăŻĺŽéăŤăŻăăŽtbhăŤă¤ăăŚăăžăĺżé ăăŚăăžăăă§ăăă
ăăă¤ăăŽćŞč§ŁćąşăŽä˝ćĽăćŽăŁăŚăăžăăăb19cd3aff4b0876253d76b3fc66b7e2a1f16a7e5ă§ăăŽĺéĄă俎ćŁăăăŚăăžăă react-three-fiberă使ç¨ăăŚăăĺ ´ĺăăăăŻdreiv2.2.0ă§ăŞăŞăźăšăăăŚăăžăă
https://github.com/pmndrs/drei/pull/156
éĺşăăŚăăăă¨ăŻćżçĽăăŚăăăžăăăăäťäşăăăă¨ăăăăăžăăă ç§ăŻăăăç§ăŽă˘ăăŞă§ĺä˝ăăăăă¨ăă§ăăžăăă ăăăăăŁăă˘ăŚăăŠă¤ăłăľă¤ăşăŽć°ĺ¤ă ăăĺăĺ
ĽăăŞăăă¨ăĺ°ăç解ăăžăăă ăăăăçľćăŻăžăăŤç§ăĺż
čŚă¨ăăŚăăăăŽă§ăă
@FunMilesăăăăă ďź outlineWidth
ăŤć°ĺ¤ă使ç¨ă§ăăăŻăă§ăăä˝ăăăŽççąă§ăăăćŠč˝ăăŞăĺ ´ĺăŻăăçĽăăăă ăăă
ăăăŚăéä¸ă§ăăŞăăŽĺ ĽĺăŤćčŹăăžăă ăăŞăăč¨ĺăă税éĄăŽććłă使ç¨ăăŚăăŻăŻăăĺ˘çăŽĺ¤ĺ´ăŽčˇé˘ăăšă ăźăşăŤĺ¤ćżăăăă¨ăŻăžă ă§ăăžăăă§ăăăăăŽăăă太ăă˘ăŚăăŠă¤ăłăŤăŻçžĺ¨ăçšăŤăłăźăăźăŤă´ăă´ăăăăăăăăăăžăăăăťă¨ăăŠăŽĺ ´ĺďźć大ăăăŠăłăăľă¤ăşăŽ10ďź ďźă ç§ăŻăăăăžă ć´çˇ´ăăăă¨čŠŚăżăăă¨ăŤééăăŞăăŞăźăăłă§ăă
ćăĺčăŤăŞăăłăĄăłă
Mapboxă@ anzorbăŤé˘ăăć ĺ ąăăăăă¨ăă ç§ăŻééăăŞăăăăăŽĺŽčŁ ăăă芳細ăŤăă§ăăŻăăžăăăăăŽăăă°ć稿ďźĺ˝źăăŻă˘ăŚăăŠă¤ăłăăăăăźăă¨ĺźăă§ăăžăďźăăă彟ăăŻĺăŤčż°ăšăăăăŤSDFă˘ăŤăăĄăăăĺ¤ă˘ăăăźăă使ç¨ăăŚăăăăă§ăă ăă ăăSDFăŽçćă¨ă˘ăăŠăšăŽăăăăłă°ćŚçĽăŻç§ăŽăăŽă¨ăŻç°ăŞăăă°ăŞăăă¨ăŽčˇé˘ăăŁăźăŤăăľă¤ăşăä¸ĺä¸ă§ăăă¨ăăĺăĺéĄăŻăăăžăăă ăă ăăăăăăĺăć大ă˘ăŚăăŠă¤ăłĺš ăŽĺśéăăăăžăă
ç§ăŻĺŽéăŤăć¨ćşăŽć´žççŠă使ç¨ăăŚ_screenspace_ă˘ăŚăăŠă¤ăłă§ăăăăăŽé˛ćŠăéăăžăăă ă˘ăŚăăŠă¤ăłăćĺłăăçťé˘ăšăăźăšăŻăăăăšăăŽăľă¤ăş/ăšăąăźăŤăžăăŻćă庌ăŤé˘äżăŞăăăă¨ăă°1çťé˘ăăŻăťăŤĺš ăŤăŞăăžăă çŽć¨ăčćŻă¨ăŽăłăłăăŠăšăăčż˝ĺ ăăăă¨ă ăă§ăăĺ ´ĺăăăăšăăľă¤ăşăŤĺăăăŚćĄĺ¤§ç¸Žĺ°ăăă˘ăŚăăŠă¤ăłă¨ĺăăăăčŻăďźăžăăŻăăăăă弽ăžăăďźăăăŤćăăăžăă ăăăŤă¤ăăŚćčŚăŻăăăžăăďź