【求助】关于使用cc_spriteTexture_ST来动态适配UV的问题

  • Creator: 3.8.5
  • 浏览器:chrome
    已知动态合图会引起effect中的uv偏移,需要设置图片的packable=false。故提问deepseek有没有不需要设置packable的方法,给出如下代码
CCProgram sprite-vs %{
  precision highp float;
  #include <builtin/uniforms/cc-global>
  #if USE_LOCAL
    #include <builtin/uniforms/cc-local>
  #endif
  #if SAMPLE_FROM_RT
    #include <common/common-define>
  #endif

  // 添加 cc_spriteTexture_ST 的 uniform 声明
  uniform vec4 cc_spriteTexture_ST;

  in vec3 a_position;
  in vec2 a_texCoord;
  in vec4 a_color;

  out vec4 color;
  out vec2 uv0;

  vec4 vert () {
    vec4 pos = vec4(a_position, 1);

    #if USE_LOCAL
      pos = cc_matWorld * pos;
    #endif

    #if USE_PIXEL_ALIGNMENT
      pos = cc_matView * pos;
      pos.xyz = floor(pos.xyz);
      pos = cc_matProj * pos;
    #else
      pos = cc_matViewProj * pos;
    #endif

    // 应用纹理的缩放和偏移
    uv0 = a_texCoord * cc_spriteTexture_ST.xy + cc_spriteTexture_ST.zw;
    #if SAMPLE_FROM_RT
      CC_HANDLE_RT_SAMPLE_FLIP(uv0);
    #endif
    color = a_color;

    return pos;
  }
}%

试验之后发现cc_spriteTexture_ST的值都是0,应该是没有自动设置值。是哪里还需要配置,还是ai给的是不存在的答案,看官方文档也没有cc_spriteTexture_ST的说明

ai给的这个方案没有什么太大意义。st是需要自己额外设置的。但是就算设置好了,这个参数的修改也会造成你的材质是一个单独的实例,无法和其他的合批。