骨骼上限扩展器

创作者: backporter
已更新:2026-05-04 20:59:26
5.3MB

前置 MOD

使用 骨骼上限扩展器 时将自动安装

关于此 MOD

使用动态索引时,将骨骼数量上限从80提高到约1365。
背景:
在过渡到特别版期间,Bethesda将网格蒙皮从CPU移到了GPU,但在此过程中,他们将骨骼放入了一个大小约为3840字节(共80根骨骼)的DX11常量缓冲区,这意味着任何超过80根骨骼的护甲在游戏尝试将网格复制到缓冲区以供着色器进行蒙皮时都会导致崩溃。这个模组允许游戏使用超过80根骨骼。

剧透:  
显示

顶点着色器5208:
着色器哈希 fbcdf44f-ec1ded8e-e502b488-f9aea01a
vs_5_0
dcl_globalFlags 允许重构
dcl_constantbuffer cb12[42], immediateIndexed
dcl_constantbuffer cb0[4], immediateIndexed
dcl_constantbuffer cb1[3],立即索引
dcl_constantbuffer cb2[7], immediateIndexed
dcl_constantbuffer cb9[240], dynamicIndexed
dcl_constantbuffer cb10[240],动态索引
dcl_input v0.xyzw
dcl_input v1.xy
dcl_input v2.xyzw
dcl_input v3.xyzw
dcl_input v4.xyzw
dcl_input v5.xyzw
dcl_output_siv o0.xyzw, position
dcl_output o1.xy
dcl_output o2.xyz
dcl_output o3.xyz
dcl_output o4.xyz
dcl_output o5.xyz
dcl_output o6.xyz
dcl_output o7.xyz
dcl_output o8.xyz
dcl_output o9.xyz
dcl_output o10.xyzw
dcl_output o11.xyzw
dcl_output o12.xyzw
dcl_output o13.xyzw
dcl_temps 11
0: mov [precise(w)] r0.w, -cb12[40].x
mov [precise(xz)] r0.xz,l(0x80000000, 0, 0x80000000, 0)
2: mul [precise(xyzw)] r1.xyzw, v5.xyzw, l(765.010010, 765.010010, 765.010010, 765.010010)
3: ftoi [精确(xyzw)] r1.xyzw, r1.xyzw
4: 将 [精确(xyzw)] r2.xyzw 添加到 r0.zzzw 和 cb10[r1.x + 0].xyzw
5: mul [precise(xyzw)] r2.xyzw, r2.xyzw, v4.xxxx
6: 添加 [精确(xyzw)] r3.xyzw, r0.zzzw, cb10[r1.y + 0].xyzw
7: mul [precise(xyzw)] r3.xyzw, r3.xyzw, v4.yyyy
8: add [precise(xyzw)] r2.xyzw, r2.xyzw, r3.xyzw
9: add [precise(xyzw)] r3.xyzw, r0.zzzw, cb10[r1.z + 0].xyzw
  10: add [precise(xyzw)] r4.xyzw, r0.zzzw, cb10[r1.w + 0].xyzw
  11: mul [precise(xyzw)] r4.xyzw, r4.xyzw, v4.wwww
  12: mul [precise(xyzw)] r3.xyzw,r3.xyzw,v4.zzzz
  13: 添加 [精确(xyzw)] r2.xyzw,r2.xyzw,r3.xyzw
  14: 添加 [精确(xyzw)] r2.xyzw, r4.xyzw, r2.xyzw
  15: mov [precise(xyz)] r3.xyz, v0.xyzx
  16: mov [precise(w)] r3.w, l(1.000000)
  17: dp4 [精确(x)] r2.x, r3.xyzw, r2.xyzw
  18: mov [precise(w)] r2.w, l(1.000000)
  19: mov [precise(xz)] r4.xz, l(0x80000000, 0, 0x80000000, 0)
  20: mov [precise(yw)] r4.yw, -cb12[40].yyyz
  21: iadd [精确(xyzw)] r5.xyzw, r1.xxyy, l(1, 2, 1, 2)
  22: add [precise(xyzw)] r6.xyzw, r4.xxxy, cb10[r5.x + 0].xyzw
  23: mul [precise(xyzw)] r6.xyzw, r6.xyzw, v4.xxxx
  24: 将 r7.xyzw 设为 r4.xxxy 与 cb10[r5.z + 0].xyzw 的和(精确模式)
  25: mul [precise(xyzw)] r7.xyzw, r7.xyzw, v4.yyyy
  26: 添加 [精确(xyzw)] r6.xyzw, r6.xyzw, r7.xyzw
  27: iadd [precise(xyzw)] r7.xyzw, r1.zzww, l(1, 2, 1, 2)
  28: add [precise(xyzw)] r8.xyzw, r4.xxxy, cb10[r7.x + 0].xyzw
  29: mul [precise(xyzw)] r8.xyzw, r8.xyzw, v4.zzzz
  30: 添加 [precise(xyzw)] r6.xyzw, r6.xyzw, r8.xyzw
  31: add [precise(xyzw)] r8.xyzw, r4.xxxy, cb10[r7.z + 0].xyzw
  32: mul [precise(xyzw)] r8.xyzw, r8.xyzw, v4.wwww
  33:将[精确(xyzw)]加到r6.xyzw,即r6.xyzw = r6.xyzw + r8.xyzw
  34: dp4 [精确(y)] r2.y, r3.xyzw, r6.xyzw
  35: 将 [precise(xyzw)] r6.xyzw 与 r4.zzzw、cb10[r5.y + 0].xyzw 相加,结果存入 r6.xyzw。
  36: mul [precise(xyzw)] r6.xyzw, r6.xyzw, v4.xxxx
  37: add [precise(xyzw)] r8.xyzw, r4.zzzw, cb10[r5.w + 0].xyzw
  38: mul [precise(xyzw)] r8.xyzw, r8.xyzw, v4.yyyy
  39: add [precise(xyzw)] r6.xyzw, r6.xyzw, r8.xyzw
  40: add [precise(xyzw)] r8.xyzw, r4.zzzw, cb10[r7.y + 0].xyzw
  41: 将 cb10[r7.w + 0].xyzw 与 r4.zzzw 相加,结果存入 r4.xyzw(精确模式)
  42: mul [precise(xyzw)] r4.xyzw, r4.xyzw, v4.wwww
  43: mul [precise(xyzw)] r8.xyzw, r8.xyzw, v4.zzzz
  44: 将精确坐标(xyzw)相加,r6.xyzw += r8.xyzw
  45: 添加 [precise(xyzw)] r4.xyzw, r4.xyzw, r6.xyzw
  46: dp4 [precise(z)] r2.z, r3.xyzw, r4.xyzw
  47: dp4 [精确(x)] r4.x, cb12[8].xyzw, r2.xyzw
  48: dp4 [精确(y)] r4.y, cb12[9].xyzw, r2.xyzw
  49: dp4 [精确(z)] r4.z, cb12[10].xyzw, r2.xyzw
  50: mov [precise(xyz)] o0.xyz, r4.xyzx
  51: dp3 r0.z, r4.xyzx, r4.xyzx
  52: sqrt r0.z, r0.z
  53: mad_sat r0.z, r0.z, cb0[1].y, -cb0[1].x
  54: log r0.z, r0.z
  55: mul r0.z, r0.z, cb0[1].z
  56: exp r0.z, r0.z
  57: 取r0.z与cb0[1].w中的最小值存入r0.z
  58: dp4 [precise(w)] o0.w, cb12[11].xyzw, r2.xyzw
  59: mov [precise(xyz)] o10.xyzw, r2.xyzw
  60: 将v1.xyxx与cb1[2].zwzz进行mad运算,得到o1.xy,并以cb1[2].xyxx作为偏移量。
  61: mov [precise(xyz)] o2.xyz, r2.xyzx
  62:加 o6.xyz,减 r2.xyzx,cb2[6].xyzx
  63: mul r2.xyz, v4.yyyy, cb10[r1.y + 0].xyzx
  64: mad r2.xyz, v4.xxxx, cb10[r1.x + 0].xyzx, r2.xyzx
  65: 计算 r2.xyz,将 v4.zzzz 与 cb10[r1.z + 0].xyzx 进行 mad 运算,结果存入 r2.xyzx。
  66: mad r2.xyz, v4.wwww, cb10[r1.w + 0].xyzx, r2.xyzx
  67: mov r4.x, v0.w
  68: mad r4.y, v2.w, l(2.000000), l(-1.000000)
  69: mad r4.z,v3.w,l(2.000000),l(-1.000000)
  70: dp3 r6.x, r4.xyzx, r2.xyzx
  mul r8.xyz, v4.yyyy, cb10[r5.z + 0].xyzx
  72: mad r8.xyz, v4.xxxx, cb10[r5.x + 0].xyzx, r8.xyzx
  73: mad r8.xyz, v4.zzzz, cb10[r7.x + 0].xyzx, r8.xyzx
  74: mad r8.xyz,v4.wwww,cb10[r7.z + 0].xyzx,r8.xyzx
  75: dp3 r6.y, r4.xyzx, r8.xyzx
  76: mul r9.xyz, v4.yyyy, cb10[r5.w + 0].xyzx
  77: mad r9.xyz, v4.xxxx, cb10[r5.y + 0].xyzx, r9.xyzx
  78: mad r9.xyz,v4.zzzz,cb10[r7.y + 0].xyzx,r9.xyzx
  79: mad r9.xyz, v4.wwww, cb10[r7.w + 0].xyzx, r9.xyzx
  80: dp3 r6.z, r4.xyzx, r9.xyzx
  81: dp3 r0.w, r6.xyzx, r6.xyzx
  82: rsq r0.w, r0.w
  83: 乘以 r4.xyz, r0.wwww, r6.xyzx
  84: 移动 o3.x,r4.x
  85: mad r6.xyz, v3.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(-1.000000, -1.000000, -1.000000, 0.000000)
  86: dp3 r10.x, r6.xyzx, r2.xyzx
  87: dp3 r10.y, r6.xyzx, r8.xyzx
  88: dp3 r10.z, r6.xyzx, r9.xyzx
  89: dp3 r0.w, r10.xyzx, r10.xyzx
  90: rsq r0.w, r0.w
  91: mul r6.xyz, r0.wwww, r10.xyzx
  92:mov o3.y, r6.x
  93: mad r10.xyz, v2.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(-1.000000, -1.000000, -1.000000, 0.000000)
  94: dp3 r2.x, r10.xyzx, r2.xyzx
  95: dp3 r2.y, r10.xyzx, r8.xyzx
  96: dp3 r2.z, r10.xyzx, r9.xyzx
  97: dp3 r0.w, r2.xyzx, r2.xyzx
  98: rsq r0.w, r0.w
  99: mul r2.xyz, r0.wwww, r2.xyzx
 100: mov o3.z, r2.x
 101: mov o4.x, r4.y
 102: mov o4.y, r6.y
 103: mov o4.z, r2.y
 104: mov o5.x, r4.z
 105: mov o5.y, r6.z
 106: 移动 o5.z,r2.z
 107: dp3 o7.x, cb12[0].xyzx, r4.xyzx
 108: dp3 o7.y, cb12[0].xyzx, r6.xyzx
 109: dp3 o7.z, cb12[0].xyzx, r2.xyzx
 110: dp3 o8.x, cb12[1].xyzx, r4.xyzx
 111: dp3 o9.x, cb12[2].xyzx, r4.xyzx
 112: dp3 o8.y, cb12[1].xyzx, r6.xyzx
 113: dp3 o9.y, cb12[2].xyzx, r6.xyzx
 114: dp3 o8.z, cb12[1].xyzx, r2.xyzx
 115: dp3 o9.z, cb12[2].xyzx, r2.xyzx
 116: mov [precise(y)] r0.y, -cb12[41].z
 117: 添加 [精确(xyzw)] r2.xyzw, r0.xxxy, cb9[r5.y + 0].xyzw
 118: mul [precise(xyzw)] r2.xyzw, r2.xyzw, v4.xxxx
 119: 将精确(xyzw) r4.xyzw 与 r0.xxxy、cb9[r5.w + 0].xyzw 相加,结果存入 r4.xyzw
 120: mul [precise(xyzw)] r4.xyzw, r4.xyzw, v4.yyyy
 121: 添加 [precise(xyzw)] r2.xyzw, r2.xyzw, r4.xyzw
 122: 添加 [精确(xyzw)] r4.xyzw,r0.xxxy,cb9[r7.y + 0].xyzw
 123: 添加 [精确(xyzw)] r6.xyzw, r0.xxxy, cb9[r7.w + 0].xyzw
 124: mul [precise(xyzw)] r6.xyzw, r6.xyzw, v4.wwww
 125: mul [precise(xyzw)] r4.xyzw, r4.xyzw, v4.zzzz
 126: 添加 [精确(xyzw)] r2.xyzw, r2.xyzw, r4.xyzw
 127: 添加 [精确(xyzw)] r2.xyzw, r6.xyzw, r2.xyzw
 128: dp4 [精确(z)] o11.z, r3.xyzw, r2.xyzw
 129: mov [精确(xz)] r2.xz,设(0x80000000, 0, 0x80000000, 0)
 130: mov [precise(yw)] r2.yw, -cb12[41].xxxy
 131: add [precise(xyzw)] r4.xyzw, r2.xxxy, cb9[r1.x + 0].xyzw
 132: mul [precise(xyzw)] r4.xyzw, r4.xyzw, v4.xxxx
 133:添加 [精确(xyzw)] r6.xyzw, r2.xxxy, cb9[r1.y + 0].xyzw
 134: mul [precise(xyzw)] r6.xyzw, r6.xyzw, v4.yyyy
 135: 将[精确(xyzw)] r4.xyzw, r4.xyzw与r6.xyzw相加
 136: 将 r2.xxxy 与 cb9[r1.z + 0].xyzw 相加,结果存入 r6.xyzw,并精确计算 [precise(xyzw)]。
 137: 添加 [精确(xyzw)] r1.xyzw, r2.xxxy, cb9[r1.w + 0].xyzw
 138: mul [precise(xyzw)] r1.xyzw, r1.xyzw, v4.wwww
 139: mul [precise(xyzw)] r6.xyzw, r6.xyzw, v4.zzzz
 140: 添加 [精确(xyzw)] r4.xyzw, r4.xyzw, r6.xyzw
 141: add [precise(xyzw)] r1.xyzw, r1.xyzw, r4.xyzw
 142: dp4 [精确(x)] o11.x, r3.xyzw, r1.xyzw
 143: mov o11.w, l(1.000000)
 144:add [precise(xyzw)] r1.xyzw, r2.zzzw, cb9[r5.x + 0].xyzw
 145: 将[精确(xyzw)]的r4.xyzw与r2.zzzw加上cb9[r5.z + 0].xyzw相加
 146: mul [precise(xyzw)] r4.xyzw, r4.xyzw, v4.yyyy
 147: mul [precise(xyzw)] r1.xyzw, r1.xyzw, v4.xxxx
 148: 添加 [precise(xyzw)] r1.xyzw, r4.xyzw, r1.xyzw
 149: 将 [精确(xyzw)] r4.xyzw 与 r2.zzzw、cb9[r7.x + 0].xyzw 相加,结果存入 r4.xyzw
 150: 添加 [精确(xyzw)] r2.xyzw, r2.zzzw, cb9[r7.z + 0].xyzw
 151: mul [precise(xyzw)] r2.xyzw, r2.xyzw, v4.wwww
 152: mul [precise(xyzw)] r4.xyzw, r4.xyzw, v4.zzzz
 153: 添加 [precise(xyzw)] r1.xyzw, r1.xyzw, r4.xyzw
 154: 将 [precise(xyzw)] 加到 r1.xyzw,r2.xyzw,r1.xyzw 中
 155: dp4 [精确(y)] o11.y, r3.xyzw, r1.xyzw
 156: mov o12.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
 157: add r0.xyw, -cb0[2].xyxz, cb0[3].xyxz
 158: mad o13.xyz, r0.zzzz, r0.xywx, cb0[2].xyzx
 159: mov o13.w, r0.z
 160:返回

在cb9/cb10的索引为动态的情况下:
查找当前文件中的所有“cb9”
  ( 9): dcl_constantbuffer cb9[240], dynamicIndexed
  ( 149): 117: 添加 [精确(xyzw)] r2.xyzw, r0.xxxy, cb9[r5.y + 0].xyzw
  ( 151): 119: 将 [精确(xyzw)] r4.xyzw 与 r0.xxxy、cb9[r5.w + 0].xyzw 相加
  ( 154): 122: 将 [精确(xyzw)] r4.xyzw 与 r0.xxxy、cb9[r7.y + 0].xyzw 相加,结果存入 r4.xyzw
  ( 155): 123: 将 [精确(xyzw)] r6.xyzw 加上 r0.xxxy 与 cb9[r7.w + 0].xyzw 的结果相加
  ( 163): 131: 将 [精确(xyzw)] 的 r4.xyzw 与 r2.xxxy、cb9[r1.x + 0].xyzw 相加
  ( 165): 133: add [precise(xyzw)] r6.xyzw, r2.xxxy, cb9[r1.y + 0].xyzw
  add [precise(xyzw)] r6.xyzw, r2.xxxy, cb9[r1.z + 0].xyzw
  ( 169): 137: 添加 [精确(xyzw)] r1.xyzw, r2.xxxy, cb9[r1.w + 0].xyzw
  ( 176): 144: 将 r1.xyzw 加上 r2.zzzw 与 cb9[r5.x + 0].xyzw 的和,结果存入 r1.xyzw
  ( 177): 145: 添加 [精确(xyzw)] r4.xyzw, r2.zzzw, cb9[r5.z + 0].xyzw
  ( 181): 149: 添加 [精确(xyzw)] r4.xyzw, r2.zzzw, cb9[r7.x + 0].xyzw
  ( 182): 150: 将 [precise(xyzw)] r2.xyzw 与 cb9[r7.z + 0].xyzw 相加,存入 r2.xyzw(即 r2.xyzw = r2.zzzw + cb9[r7.z + 0].xyzw)
匹配行数:13

在当前文件中查找所有“cb10”
  ( 10): dcl_constantbuffer cb10[240],动态索引
  ( 36): 4: 将 [精确(xyzw)] r2.xyzw 与 r0.zzzw 和 cb10[r1.x + 0].xyzw 相加
  ( 38): 6: 将 [精确(xyzw)] r3.xyzw 加到 r0.zzzw 上,再加上 cb10[r1.y + 0].xyzw
  ( 41): 9: 将[精确(xyzw)] r3.xyzw、r0.zzzw、cb10[r1.z + 0].xyzw相加
  ( 42): 10: 将[精确(xyzw)] r4.xyzw、r0.zzzw 与 cb10[r1.w + 0].xyzw 相加
  ( 54): 22: 添加 [精确(xyzw)] r6.xyzw,将 r4.xxxy 与 cb10[r5.x + 0].xyzw 相加
  ( 56): 24: add [precise(xyzw)] r7.xyzw, r4.xxxy, cb10[r5.z + 0].xyzw
  ( 60): 28: 添加 [精确(xyzw)] r8.xyzw, r4.xxxy, cb10[r7.x + 0].xyzw
  ( 63): 31: 添加 [精确(xyzw)] r8.xyzw, r4.xxxy, cb10[r7.z + 0].xyzw
  ( 67): 35: 将 [精确(xyzw)] r6.xyzw 与 cb10[r5.y + 0].xyzw 相加,结果存入 r4.zzzw 对应的 r6.xyzw。
  ( 69): 37: 将 [精确(xyzw)] r8.xyzw 与 r4.zzzw、cb10[r5.w + 0].xyzw 相加
  ( 72): 40: 将 [precise(xyzw)] r8.xyzw 与 cb10[r7.y + 0].xyzw 相加,结果存入 r4.zzzw
  ( 73): 41: 添加 [精确(xyzw)] r4.xyzw, r4.zzzw, cb10[r7.w + 0].xyzw
  mul r2.xyz, v4.yyyy, cb10[r1.y + 0].xyzx
  ( 96): 64: mad r2.xyz, v4.xxxx, cb10[r1.x + 0].xyzx, r2.xyzx
  mad r2.xyz, v4.zzzz, cb10[r1.z + 0].xyzx, r2.xyzx
  ( 98): 66: 对 r2.xyz 应用 mad 运算,使用 v4.wwww 和 cb10[r1.w + 0].xyzx 作为操作数,结果存入 r2.xyzx
  mul r8.xyz, v4.yyyy, cb10[r5.z + 0].xyzx
  ( 104): 72: mad r8.xyz, v4.xxxx, cb10[r5.x + 0].xyzx, r8.xyzx
  mad r8.xyz, v4.zzzz, cb10[r7.x + 0].xyzx, r8.xyzx
  mad r8.xyz, v4.wwww, cb10[r7.z + 0].xyzx, r8.xyzx
  mul r9.xyz, v4.yyyy, cb10[r5.w + 0].xyzx
  ( 109): 77: mad r9.xyz, v4.xxxx, cb10[r5.y + 0].xyzx, r9.xyzx
  ( 110): 78: mad r9.xyz, v4.zzzz, cb10[r7.y + 0].xyzx, r9.xyzx
  ( 111): 79: mad r9.xyz, v4.wwww, cb10[r7.w + 0].xyzx, r9.xyzx
匹配线路:25
只要服装不超过64KB这个升级后的限制,就应该不会再崩溃,并且能正常显示皮肤(前提是着色器索引是动态的而非静态的)。


感谢名单:
SKSE团队的SKSE插件。
Ryan 为了无价的 CommonLibSSE.
meh321 用于地址库。
alandse 为了他们的 CommonLibSSE 分支版

MOD作者要求:
  • 着色器必须对骨骼索引使用动态索引,否则此模组将无法正常工作。
用户需求:

兼容性:
SE/AE/VR

源代码
GitHub

变更:
1.0.0.2及更高版本的此模组已将其改为根据网格动态缩放。
1.0.0.1及更早版本的此模组仅将每个常量缓冲区的缓冲区大小增加到64KB(65,536字节)(总计约4个)

备注:
  • 盔甲/网格需要使用新的骨骼,仅此模组本身不会对网格/盔甲产生任何作用。
  • 可能会破坏依赖原始固定骨骼数量且未在GPU常量缓冲区中动态索引骨骼的模组(ENB、CS、DLSS/XESS/FSR)[以CS为例,任何依赖此效果的着色器特效] 这个 准确将不再有效 ]

上古卷轴5:天际 特别版 的热门 MOD

探索适用于 上古卷轴5:天际 特别版 的最佳MOD,带来新功能、升级画面,以及令人兴奋的方式来改变您的游戏体验。

2025-12-16 11:53:50

前置必备Mod

修改与Mod必备前置工具

ModOrganizerTeam2024-08-04 16:31:44

Mod Organizer(MO)是一个用于管理任意大小的Mod集合的工具。它是专门为那些喜欢尝试mods的人设计的,因此需要一种简单可靠的方法来安装和卸载它们。

天空用户界面

schlangster2017-10-04 05:03:26

界面优雅,对电脑友好,并具有许多高级功能。

非官方《上古卷轴5:天际》特别版补丁 - USSEP

Arthmoor2025-09-01 07:56:09

一款针对《上古卷轴V:天际特别版》的综合性错误修复模组。非官方天际特别版补丁(简称USSEP)的目标是最终修复《天际特别版》中所有尚未被官方修复的错误。

静态网格改进模组 - SMIM

Brumbek2018-07-05 02:28:26

这是一个旨在大幅提升《上古卷轴5:天际》中无数静态3D模型外观的大型项目。简而言之,我希望通过这个项目让天际的建筑、杂物、家具和景观更加美观。

SKSE插件的地址库

meh3212024-02-14 09:19:54

包含头文件和数据库,以便轻松实现 SKSE DLL 插件的版本独立性。

比赛菜单

expired69782024-01-27 03:38:17

角色创建菜单全面改版,新增多种自定义功能,例如多种RGBA战纹、身体彩绘、手部彩绘和脚部彩绘。(需要SKSE)

Fores Skyrim SE-FNIS SE中的新闲置

NexusModsCaretaker2020-02-19 01:47:03

Skyrim没有可能的自定义动画?错误的。FNIS行为允许添加不同类型的动画到游戏:闲置/姿势,顺序,家具,配对,杀戮,生物,等等。

使用 Xmod 解锁 上古卷轴5:天际 特别版 的全部潜力 — 今天就探索这些顶级 MOD!