dev #84

Merged
ksenia_mikhailova merged 141 commits from dev into main 2024-10-03 15:30:24 +03:00
1 changed files with 58 additions and 44 deletions
Showing only changes of commit 32b6702efd - Show all commits

View File

@ -46,35 +46,16 @@ function generateNoiseTexture(width: number, height: number) {
return texture; return texture;
} }
export const set_material = (scene: any, color: any, pattern: { pattern: patternTypes, count: number } | undefined = undefined) => { const m = new MeshStandardMaterial({
let c = color
const material = new MeshStandardMaterial({
color: new Color(c || '#9c9c00'),
// alphaMap: pattern ? texture : null, // alphaMap: pattern ? texture : null,
transparent: true, transparent: true,
opacity: 1, opacity: 1,
roughness: 0.5, roughness: 0.5,
metalness: 0, metalness: 0,
side: DoubleSide, side: DoubleSide,
}) })
const promises = [] const m_onBeforeCompile = (shader) => {
if (pattern && pattern.pattern !== undefined) {
const filename = getFilename(pattern.pattern)
if (filename) {
const texture = loaded_patterns[filename]
promises.push(texture)
texture.then((res: Texture) => {
res.wrapT = RepeatWrapping;
res.repeat.set(1, pattern.count);
res.needsUpdate = true
material.alphaMap = res
return res
})
}
}
material.onBeforeCompile = (shader) => {
// Добавляем uniform переменную // Добавляем uniform переменную
shader.uniforms.customUniform = { value: 1.0 }; shader.uniforms.customUniform = { value: 1.0 };
@ -100,15 +81,48 @@ export const set_material = (scene: any, color: any, pattern: { pattern: pattern
return random((p.x + p.y) * 10000.0); return random((p.x + p.y) * 10000.0);
} }
${shader.fragmentShader} ${shader.fragmentShader}
`.replace( `
// .replace(
// `#include <map_fragment>`,
// `
// float noise_v = noise(diffuseColor.rg);
// float clamped_noise = clamp(noise_v, -0.15, 0.15);
// diffuseColor.rgb *= clamped_noise;
// #include <map_fragment>
// `
// )
.replace(
`#include <dithering_fragment>`, `#include <dithering_fragment>`,
`#include <dithering_fragment> `#include <dithering_fragment>
float noise_v = noise(gl_FragColor.rg); float noise_v = noise(gl_FragColor.rg);
gl_FragColor.rgb += vec3(noise_v); float clamped_noise = clamp(noise_v, -0.05, 0.05);
gl_FragColor.rgb -= clamp(vec3(clamped_noise), 0.0, 1.0);
` `
); );
}; };
export const set_material = (scene: any, color: any, pattern: { pattern: patternTypes, count: number } | undefined = undefined) => {
let c = color
const material = m.clone()
material.color = new Color(c || '#9c9c00')
material.onBeforeCompile = m_onBeforeCompile
const promises = []
if (pattern && pattern.pattern !== undefined) {
const filename = getFilename(pattern.pattern)
if (filename) {
const texture = loaded_patterns[filename]
promises.push(texture)
texture.then((res: Texture) => {
res.wrapT = RepeatWrapping;
res.repeat.set(1, pattern.count);
res.needsUpdate = true
material.alphaMap = res
return res
})
}
}
if (scene) set_metaril_func(scene, material) if (scene) set_metaril_func(scene, material)
else console.log(scene) else console.log(scene)