three.js의 내장 Inspector의 console 탭 출력 API

const renderer = new THREE.WebGPURenderer({
    canvas: canvas,
    antialias: true,
    // forceWebGL: true 
});

renderer.inspector = new Inspector();

renderer.inspector.console.addMessage("info", "정보 메세지...");
renderer.inspector.console.addMessage("warn", "경고성 메세지...");
renderer.inspector.console.addMessage("error", "에러 메세지...");

렌더러의 forceWebGL을 활성화해도 작동합니다. addMessage의 첫번째 인자는 반드시 info, warn, error 문자열이 와야 하며 이외의 값이 지정되면 출력하지 않습니다. 상기 코드의 출력 결과는 다음과 같습니다.

쉐이더 코드 확인하기

const program = await renderer.debug.getShaderAsync(scene, camera, mesh)
console.log('**VERTEX SHADER CODE**\n\n', program.vertexShader)
console.log('**FRAGMENT SHADER CODE**\n\n', program.fragmentShader)

three.js, userData 노드

three.js는 Mesh 등과 같은 객체에 사용자 데이터를 넣기 위한 userData 속성이 있습니다. 이처럼 userData 속성에 저장된 값을 쉐이더에서 참조할 수 있도록 해주는 노드가 userData 노드입니다. 사용 예시는 다음과 같습니다.

mesh.userData.한글 = new THREE.Color('#ffff00')
material.outputNode = vec4(userData('한글'), 1)

이렇게 사용된 Mesh 객체를 통해 userData의 값이 변경되면 자동으로 TSL 코드를 통해 반영됩니다.

localhost에 SSL 적용하기

localhost는 SSL이 적용되지 않는 http일지라도 SSL이 적용된 것으로 간주됩니다. 그럼에도 불구하고 localhost에 SSL을 적용해야할 상황이 생깁니다.

먼저 다음 패키지를 설치합니다.

npm install @vitejs/plugin-basic-ssl

vite.config.js에서 다음 코드를 추가합니다.

import basicSsl from '@vitejs/plugin-basic-ssl' // ADDED

export default {
  ...

  plugins: [
    ...

    basicSsl(), // ADDED
  ]

  ...
}

이제 http://localhost가 아닌 https://localhost로 결과를 확인할 수 있습니다. 하지만 SSL 인증서가 적합하지 않으므로 웹브라우저에서 사용자가 추가적인 허용을 해줘야 합니다.