Shader Chunk 相对引用目录有问题

Cocos-Creator-3.8.3

目录结构

resources/

  • chunks
    • my_common.chunk
  • myShader
    • Demo1.effect

Demo1.effect 中,引用 my_common.chunk 会报错

#include "../chunks/my_common.chunk"


报错如下:
/Demo1.effect - my_common:vert: Error EFX2001: can not resolve ‘my_common’

引用的 chunk 代码是正确的,代码如下:

precision highp float;
#include <cc-global>
#if USE_LOCAL
  #include <cc-local>
#endif

#if SAMPLE_FROM_RT
  #include <common/common-define>
  //老版本引用
  //#include <common>
#endif

in vec3 a_position;
in vec2 a_texCoord;
in vec4 a_color;
out vec4 i_color;
out vec2 uv0;
out vec2 uv1;
out vec3 v_position;

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;
  #if SAMPLE_FROM_RT
    uv1 = uv0;
    CC_HANDLE_RT_SAMPLE_FLIP(uv1);
  #endif
  i_color = a_color;
  return pos;
}

如果放到同一个目录,引用改成

#include “my_common.chunk”

又正常了,但是这样没办法让 chunk 复用

删除effect 重新导入一下。

试过了,不行
跨目录还是报 path 找不到
我怀疑是解析路径 chunk 错了

如果 2 个目录放在 assets/ 目录下,又是正常的。

只能放在跟目录。

大佬是引擎组的人吗?后面官网文档可以完善一下说明吗
支持相对路径只是部分支持

救命,我以为我一直写错了

你仔细看下 引擎根目录里面有一个 chunk 目录 我估计编译 2个目录会合并,而且大小都必须一样的。我也吃这个亏的人。

我更换过命名也不行。
相对路径
在 assets/ 目录下的一级目录ok。
在 assets/resources/shader/xxxx 这样的多级目录就报错了

我这同级也不行 :joy: 必须放到asset/chunks里 或internal/chunks里,怎么回事