Страница 1 из 1

Не изменяются параметры материала

СообщениеДобавлено: 23 мар 2021, 18:45
Woolf
Второй день сижу туплю, что не так.. Есть материал воды, хочу, чтобы в зависимости от условий среды изменялась волна на воде.
Применяю вот такой код, и.. и ничего не меняется в динамике. Параметры изменяются, а материал нет. Но стоит только тыкнуть на материал объекта воды в редакторе, как тут же
все изменения применяются, и дальше всё работает, как положено. Чего происходит и как это победить-то?

Синтаксис:
Используется csharp

    void OnEnable() {
        rend = GetComponent<Renderer>();
        sharedMaterial = rend.sharedMaterial;
        currentWave = sharedMaterial.GetVector("_GerstnerVertexIntensity");
        baseSpeed = sharedMaterial.GetVector("_BumpSpeed");
        baseRotate = sharedMaterial.GetVector("_BumpRotation");
        baseBump = sharedMaterial.GetFloat("_ReflectionBumpScale");

        currBump = baseBump;
        currentSpeed = baseSpeed;
        currentRotate = baseRotate;
    }

void Update() {

    //изменения currentWave, currentSpeed и так далее
}

    private void OnWillRenderObject() {
            rend.material.SetVector("_GerstnerVertexIntensity", currentWave);
            rend.material.SetVector("_BumpSpeed", currentSpeed);
            rend.material.SetVector("_BumpRotation", currentRotate);
            rend.material.SetFloat("_ReflectionBumpScale", currBump);

    }
 

Re: Не изменяются параметры материала

СообщениеДобавлено: 23 мар 2021, 19:13
Alkos26Rus
Это же сторонний шейдер воды? Скорей всего дело в самом шейдере, может там прописаны какие то условия принятия изменений, например для работы в редакторе (раз уж параметры материала изменены а результата нет). Поэтому нужно выложить сам шейдер, пусть кто шарит в шейдерах подскажет. Так как в логику шейдера могут закинуть что угодно.