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,18 +46,67 @@ function generateNoiseTexture(width: number, height: number) {
return texture; return texture;
} }
const m = new MeshStandardMaterial({
// alphaMap: pattern ? texture : null,
transparent: true,
opacity: 1,
roughness: 0.5,
metalness: 0,
side: DoubleSide,
})
const m_onBeforeCompile = (shader) => {
// Добавляем uniform переменную
shader.uniforms.customUniform = { value: 1.0 };
// Изменяем вершинный шейдер
shader.vertexShader = `
uniform float customUniform;
varying vec2 vPosition;
${shader.vertexShader}
`.replace(
`#include <begin_vertex>`,
`#include <begin_vertex>
vPosition = position.xy;
`
);
// Изменяем фрагментный шейдер
shader.fragmentShader = `
float random(float p) {
return fract(sin(p) * 10000.0);
}
float noise(vec2 p) {
return random((p.x + p.y) * 10000.0);
}
${shader.fragmentShader}
`
// .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>
float noise_v = noise(gl_FragColor.rg);
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) => { export const set_material = (scene: any, color: any, pattern: { pattern: patternTypes, count: number } | undefined = undefined) => {
let c = color let c = color
const material = new MeshStandardMaterial({ const material = m.clone()
color: new Color(c || '#9c9c00'), material.color = new Color(c || '#9c9c00')
// alphaMap: pattern ? texture : null, material.onBeforeCompile = m_onBeforeCompile
transparent: true,
opacity: 1,
roughness: 0.5,
metalness: 0,
side: DoubleSide,
})
const promises = [] const promises = []
if (pattern && pattern.pattern !== undefined) { if (pattern && pattern.pattern !== undefined) {
@ -74,41 +123,6 @@ export const set_material = (scene: any, color: any, pattern: { pattern: pattern
}) })
} }
} }
material.onBeforeCompile = (shader) => {
// Добавляем uniform переменную
shader.uniforms.customUniform = { value: 1.0 };
// Изменяем вершинный шейдер
shader.vertexShader = `
uniform float customUniform;
varying vec2 vPosition;
${shader.vertexShader}
`.replace(
`#include <begin_vertex>`,
`#include <begin_vertex>
vPosition = position.xy;
`
);
// Изменяем фрагментный шейдер
shader.fragmentShader = `
float random(float p) {
return fract(sin(p) * 10000.0);
}
float noise(vec2 p) {
return random((p.x + p.y) * 10000.0);
}
${shader.fragmentShader}
`.replace(
`#include <dithering_fragment>`,
`#include <dithering_fragment>
float noise_v = noise(gl_FragColor.rg);
gl_FragColor.rgb += vec3(noise_v);
`
);
};
if (scene) set_metaril_func(scene, material) if (scene) set_metaril_func(scene, material)
else console.log(scene) else console.log(scene)