protectwise / troika

A JavaScript framework for interactive 3D and 2D visualizations

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Vertex shader is not compiled, function already has a body.

zhangyahan opened this issue · comments

I use @react-three/drei^9.56.27 ,Got the following error.

<Text
  font="/fonts/china-license-plate.ttf"
  textAlign="center"
  position={[0, 1.94, 0.1]}
  fontSize={1}
  color={color}
  anchorX="center"
  anchorY="middle"
  userData={props.userData}
  getObjectsByProperty={undefined}
  getVertexPosition={undefined}
>
  {licensePlate}
</Text>
THREE.WebGLProgram: Shader Error 1282 - VALIDATE_STATUS false

Program Info Log: Vertex shader is not compiled.
ERROR: 0:63: 'troika_position_1' : redefinition
ERROR: 0:64: 'troika_normal_1' : redefinition
ERROR: 0:65: 'troika_uv_1' : redefinition
ERROR: 0:66: 'troika_position_1' : redefinition
ERROR: 0:67: 'troika_normal_1' : redefinition
ERROR: 0:68: 'troika_uv_1' : redefinition
ERROR: 0:459: 'uTroikaSDFTextureSize' : redefinition
ERROR: 0:460: 'uTroikaSDFGlyphSize' : redefinition
ERROR: 0:461: 'uTroikaTotalBounds' : redefinition
ERROR: 0:462: 'uTroikaClipRect' : redefinition
ERROR: 0:463: 'uTroikaOrient' : redefinition
ERROR: 0:464: 'uTroikaUseGlyphColors' : redefinition
ERROR: 0:465: 'uTroikaDistanceOffset' : redefinition
ERROR: 0:466: 'uTroikaBlurRadius' : redefinition
ERROR: 0:467: 'uTroikaPositionOffset' : redefinition
ERROR: 0:468: 'uTroikaCurveRadius' : redefinition
ERROR: 0:469: 'aTroikaGlyphBounds' : redefinition
ERROR: 0:470: 'aTroikaGlyphIndex' : redefinition
ERROR: 0:471: 'aTroikaGlyphColor' : redefinition
ERROR: 0:472: 'vTroikaGlyphUV' : redefinition
ERROR: 0:473: 'vTroikaTextureUVBounds' : redefinition
ERROR: 0:474: 'vTroikaTextureChannel' : redefinition
ERROR: 0:475: 'vTroikaGlyphColor' : redefinition
ERROR: 0:476: 'vTroikaGlyphDimensions' : redefinition
ERROR: 0:478: 'troikaVertexTransform1' : function already has a body
ERROR: 0:524: 'troikaOrigMain1' : function already has a body
ERROR: 0:538: 'uTroikaSDFTextureSize' : redefinition
ERROR: 0:539: 'uTroikaSDFGlyphSize' : redefinition
ERROR: 0:540: 'uTroikaTotalBounds' : redefinition
ERROR: 0:541: 'uTroikaClipRect' : redefinition
ERROR: 0:542: 'uTroikaOrient' : redefinition
ERROR: 0:543: 'uTroikaUseGlyphColors' : redefinition
ERROR: 0:544: 'uTroikaDistanceOffset' : redefinition
ERROR: 0:545: 'uTroikaBlurRadius' : redefinition
ERROR: 0:546: 'uTroikaPositionOffset' : redefinition
ERROR: 0:547: 'uTroikaCurveRadius' : redefinition
ERROR: 0:548: 'aTroikaGlyphBounds' : redefinition
ERROR: 0:549: 'aTroikaGlyphIndex' : redefinition
ERROR: 0:550: 'aTroikaGlyphColor' : redefinition
ERROR: 0:551: 'vTroikaGlyphUV' : redefinition
ERROR: 0:552: 'vTroikaTextureUVBounds' : redefinition
ERROR: 0:553: 'vTroikaTextureChannel' : redefinition
ERROR: 0:554: 'vTroikaGlyphColor' : redefinition
ERROR: 0:555: 'vTroikaGlyphDimensions' : redefinition
ERROR: 0:557: 'troikaVertexTransform1' : function already has a body
ERROR: 0:603: 'troikaOrigMain1' : function already has a body

What situation would cause the problem?Looks like this piece of code caused an unexpected situation.

// packages/troika-three-utils/src/DerivedMaterial.js 396
let _idCtr = 0
const optionsHashesToIds = new Map()
function getKeyForOptions(options) {
  const optionsHash = JSON.stringify(options, optionsJsonReplacer)
  let id = optionsHashesToIds.get(optionsHash)
  if (id == null) {
    optionsHashesToIds.set(optionsHash, (id = ++_idCtr))
  }
  return id
}

What material are you assigning to it? Can you provide a test case showing the issue?

@lojjic Hello, friend, I found a problem. https://codesandbox.io/s/drei-text-demo-fl1v7t Because I created a copy of the object material in useFrame, the problem occurred..