after applying it as texture
loadedTexture.generateMipmaps = false
loadedTexture.colorSpace = THREE.SRGBColorSpace // Update to the correct THREE.js constant
loadedTexture.repeat.y = -1
loadedTexture.offset.y = 1
loadedTexture.offset.x = 0
// Increase sharpness
loadedTexture.minFilter = THREE.LinearFilter
loadedTexture.magFilter = THREE.LinearFilter
loadedTexture.anisotropy = renderer.capabilities.getMaxAnisotropy() // Max anisotropy supported by the device
clonedMaterial.color = new THREE.Color(1, 1, 1) // Set to white color
clonedMaterial.emissive = new THREE.Color(1, 1, 1) // Set to black emissive to avoid color alteration
clonedMaterial.emissiveIntensity = 0.8
clonedMaterial.emissiveMap = loadedTexture
const dLight = new THREE.DirectionalLight(‘white’, 1.0) // Create a directional light.
dLight.position.set(20, 30, 0) // Set the light’s position.
dLight.castShadow = true // Enable shadow casting for the light.
dLight.shadow.mapSize.set(4096, 4096) // Set the shadow map size.
const d = 35 // A distance parameter for shadow camera settings.
dLight.shadow.camera.left = -d // Set the left boundary of the shadow camera’s view.
dLight.shadow.camera.right = d // Set the right boundary of the shadow camera’s view.
dLight.shadow.camera.top = d // Set the top boundary of the shadow camera’s view.
dLight.shadow.camera.bottom = -d // Set the bottom boundary of the shadow camera’s view.
const aLight = new THREE.AmbientLight(‘white’, 0.3) // Create an ambient light.
const hemiLight = new THREE.HemisphereLight(0xffffbb, 0x080820, 0.8) // Create a hemisphere light.
const renderer = new THREE.WebGLRenderer({ antialias: true }, { canvas }) // Create a WebGLRenderer with antialiasing.
these are my light and color configs