Смешайте 2 текстуры Unity C # - PullRequest
0 голосов
/ 01 апреля 2019

Как мне смешать две текстуры в новую?

У меня есть текстура из галереи Android и немного логотипа png.Мне нужно добавить этот логотип в текстуру из галереи и сохранить его как переменную, чтобы сохранить в галерее как новое изображение.

1 Ответ

1 голос
/ 01 апреля 2019

Эти шейдеры смешиваются между двумя текстурами, основываясь на значении 0-1, которым вы управляете.Первая версия очень быстрая, потому что она не использует освещение, а вторая использует те же базовые вычисления ambient + diffuse, которые я использовал в своем шейдере Simply Lit.

http://wiki.unity3d.com/index.php/Blend_2_Textures

Dragразличные текстуры на каждом из переменных слотов материала, и используйте элемент управления Blend, чтобы смешать их по вкусу.

Обратите внимание, что для светящейся версии требуется два прохода на графическом процессоре, используемом в самых старых устройствах iOS.

ShaderLab - Смешайте 2 текстуры. Шейдер

Shader "Blend 2 Textures" { 

Properties {
    _Blend ("Blend", Range (0, 1) ) = 0.5 
    _MainTex ("Texture 1", 2D) = "" 
    _Texture2 ("Texture 2", 2D) = ""
}

SubShader { 
    Pass {
        SetTexture[_MainTex]
        SetTexture[_Texture2] { 
            ConstantColor (0,0,0, [_Blend]) 
            Combine texture Lerp(constant) previous
        }       
    }
} 

}

ShaderLab - Смешайте 2 текстуры, просто Lit.shader

Shader "Blend 2 Textures, Simply Lit" { 

Properties {
    _Color ("Color", Color) = (1,1,1)
    _Blend ("Blend", Range (0,1)) = 0.5 
    _MainTex ("Texture 1", 2D) = "" 
    _Texture2 ("Texture 2", 2D) = ""
}

Category {
    Material {
        Ambient[_Color]
        Diffuse[_Color]
    }

    // iPhone 3GS and later
    SubShader {Pass {
        Lighting On
        SetTexture[_MainTex]
        SetTexture[_Texture2] { 
            ConstantColor (0,0,0, [_Blend]) 
            Combine texture Lerp(constant) previous
        }
        SetTexture[_] {Combine previous * primary Double}
    }}

    // pre-3GS devices, including the September 2009 8GB iPod touch
    SubShader {
        Pass {
            SetTexture[_MainTex]
            SetTexture[_Texture2] {
                ConstantColor (0,0,0, [_Blend])
                Combine texture Lerp(constant) previous
            }
        }
        Pass {
            Lighting On
            Blend DstColor SrcColor
        }
    }
}

}
...