建立网站的目的是什么做网站虚拟主机配置
2026/5/21 12:29:57 网站建设 项目流程
建立网站的目的是什么,做网站虚拟主机配置,上海市场调研公司,企业网页设计报价使用Mesh Renderer渲染图集图片#xff0c;并保证图片不变形效果#xff08;采用GPU Instancing优化合批#xff09;创建一个Quad物体#xff0c;材质Shader如下#xff0c;将图集图片通过SpriteAtlas加载出来得到Sprite对象进行后面的传参操作即可进行渲染出图集图片。Te…使用Mesh Renderer渲染图集图片并保证图片不变形效果采用GPU Instancing优化合批创建一个Quad物体材质Shader如下将图集图片通过SpriteAtlas加载出来得到Sprite对象进行后面的传参操作即可进行渲染出图集图片。Texture2D texture sprite.texture; m_QuadSpriteRenderer.sharedMaterial mat; //皮肤共享材质 m_QuadSpriteRenderer.sharedMaterial.SetTexture(_Tex, texture); //非instanced贴图设置 MaterialPropertyBlock mpb new MaterialPropertyBlock(); //最好静态统一一个对象 m_QuadSpriteRenderer.GetPropertyBlock(mpb); Vector4 rectUV DataUtility.GetOuterUV(sprite); mpb.SetVector(atlasSpriteRectUV, rectUV); //实例instanced数据设置 m_QuadSpriteRenderer.SetPropertyBlock(mpb); Vector2 size new Vector2(texture.width, texture.height); float width rectUV.z - rectUV.x; //width小图片宽度/大图片宽度 float height rectUV.w - rectUV.y; //height小图片高度/大图片高度 float scaleX size.x * width / 128f; //小图片宽度比例缩小值大图片宽度*width/128f 128是小图片资源本身的宽度 float scaleY size.y * height / 128f;//小图片高度比例缩小值大图片高度*height/128f128是小图片资源本身的高度 m_QuadSpriteRenderer.transform.localScale new Vector3(scaleX, scaleY, 1); //为什么是有这个缩小值是因为小图片放到图集里后小图片的透明部分会裁剪掉导致小图片实际会缩小 //所以要进行计算出这个缩小值才能还原出正确的图片显示不然可能小图片会变形。Shader Custom/QuadSprite { Properties { _Tex(Tex, 2D) white{} } SubShader { Tags { RenderTypeTransparent QueueTransparent } Pass { Tags { LightMode ForwardBase } Blend SrcAlpha OneMinusSrcAlpha CGPROGRAM #pragma multi_compile_instancing #pragma vertex vert #pragma fragment frag #include UnityCG.cginc struct appdata { float4 vertex : POSITION; float2 uv : TEXCOORD0; UNITY_VERTEX_INPUT_INSTANCE_ID }; struct v2f { float2 uv : TEXCOORD0; float4 vertex : SV_POSITION; UNITY_VERTEX_INPUT_INSTANCE_ID }; UNITY_INSTANCING_BUFFER_START(Props) //Props是BUFFER块名称访问时使用到 //属性块里的属性全部类似写到这里 UNITY_DEFINE_INSTANCED_PROP(float4, atlasSpriteRectUV) UNITY_INSTANCING_BUFFER_END(Props) sampler2D _Tex; float4 _Tex_ST; inline float2 NormalizeAtlasSpriteUV(float2 uv) { float4 data UNITY_ACCESS_INSTANCED_PROP(Props, atlasSpriteRectUV); float width data.z - data.x; float height data.w - data.y; return float2((uv.x - data.x) / width, (uv.y - data.y) / height); } inline float2 ReverseNormalizeAtlasSpriteUV(float2 uv) { float4 data UNITY_ACCESS_INSTANCED_PROP(Props, atlasSpriteRectUV); float2 r uv; r.x data.x (data.z - data.x) * r.x; r.y data.y (data.w - data.y) * r.y; return r; } v2f vert (appdata v) { v2f o; UNITY_SETUP_INSTANCE_ID(v); UNITY_TRANSFER_INSTANCE_ID(v, o); o.vertex UnityObjectToClipPos(v.vertex); o.uv TRANSFORM_TEX(v.uv, _Tex); return o; } fixed4 frag (v2f i) : SV_Target { UNITY_SETUP_INSTANCE_ID(i); i.uv.xy ReverseNormalizeAtlasSpriteUV(i.uv.xy); fixed4 col tex2D(_Tex, i.uv); i.uv.xy NormalizeAtlasSpriteUV(i.uv.xy); return col; } ENDCG } } }

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询