Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
14 / 14 / 5
Регистрация: 27.06.2017
Сообщений: 254

Шейдер пропускающий свет через прозрачные элементы

18.09.2017, 23:01. Показов 2102. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую.

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

Сейчас шейдер такой:
glSlang
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
Shader "Game/Terrain Full" {
    Properties {
        _Texture0 ("Alpha Blended (RGBA)", 2D) = "" {}
        _Texture1 ("Alpha Blended (RGBA)", 2D) = "" {}
        _Texture2 ("Alpha Blended (RGBA)", 2D) = "" {}
        _Texture3 ("Alpha Blended (RGBA)", 2D) = "" {}
    }
    
    Category {
        Tags { "Queue"="Transparent" "RenderType"="Transparent" }//"IgnoreProjector"="True" 
        
        Blend SrcAlpha OneMinusSrcAlpha
        //Cull Back Lighting Off ZWrite Off
       
        SubShader {
            CGPROGRAM
            #pragma surface surf Lambert alpha noforwardadd
 
            sampler2D _Texture0;
            sampler2D _Texture1;
            sampler2D _Texture2;
            sampler2D _Texture3;
 
            struct Input {
                float2 uv_Texture0;
                float2 uv2_Texture1;
                float2 uv3_Texture2;
                float2 uv4_Texture3;
            };
            
            float4 CombineTextures3(float4 c1, float4 c2) {
                float a = c1.a;
                float na = 1-a;
                float4 c = float4(
                    (c2.r * na + c1.r * a),
                    (c2.g * na + c1.g * a),
                    (c2.b * na + c1.b * a),
                    (a + c2.a * na)
                );
                
                return(c);
            }
 
            void surf (Input IN, inout SurfaceOutput o) {
                float4 c0 = tex2D(_Texture0, IN.uv_Texture0);
                float4 c1 = tex2D(_Texture1, IN.uv2_Texture1);
                float4 c2 = tex2D(_Texture2, IN.uv3_Texture2);
                float4 c3 = tex2D(_Texture3, IN.uv4_Texture3);
                
                float4 c = c3;
                c = CombineTextures3(c, c2);
                c = CombineTextures3(c, c1);
                c = CombineTextures3(c, c0);
 
                o.Albedo = c.rgb;
                o.Alpha = c.a;
            }
            ENDCG   
        }
        FallBack "Mobile/VertexLit"
    }    
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.09.2017, 23:01
Ответы с готовыми решениями:

Прозрачные элементы
Всем привет! Такая проблема. Я создал свой пользовательский интерфейс программы, но при создании таких элементов на форме как кнопка,...

Освещение через шейдер
В общем проблема такая. Нужен шейдер, который реализует точечное освещение. Вот куда ни плюнь везде о направленном свете говорится. Пытался...

Выбор объектов через шейдер
Привет всем! Кто давно дружит с OpenGL - помогите пожалуйста советом. Можно ли средствами OpenGL как-то определять индекс объекта,...

1
294 / 257 / 107
Регистрация: 26.10.2012
Сообщений: 808
22.09.2017, 13:54
По-моему через
#pragma surface surf Lambert alpha noforwardadd noshadow
не помню, юнити далеко. Но надо отключить Pass Shadow Caster

Для частичной прозрачности должен подойти стандартный шейдер с Standard с режимом Fade

Чтобы объект полностью не отбрасывал тени, достаточно в его компоненте MeshRenderer
поставить ShadowMode -> NoShadows
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.09.2017, 13:54
Помогаю со студенческими работами здесь

Естественный свет проходит через два поляроида
Естественный свет проходит через два поляроида, плоскости пропускания которых расположены под углом 60° друг к другу. После прохождения...

Почему красный свет виден через зеленый светофильтр?
почему красный свет виден через зеленый светофильтр? Зеленый светофильтр должен ведь задерживать красный свет.

Прозрачные окна
Проблема такая, нужно сделать прозрачное окно, а в нем несколько дочерних(непрозрачных). Подскажите, это вообще возможно реализовать?

прозрачные div
помогите кто может) есть такая проблема! есть 2 прозрачных div'a. 1 зафиксирован над 2 когда прокручиваю сайт 2 div заходит под 1 и го...

Прозрачные пиксели
Здрасти. У меня транспарантные пиксели не дают слушателю правильно работать. Можно их как нибудь убрать???? Добавлено через 4 часа 35...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Киев стоит - украинская песня
zorxor 28.01.2026
wfWdiRqdTxc О Господи, Вечный, Ты . . . Я помоги, Бесконечный. . . Я прошу Ты. . . Я погибаю, спаси. . . Я прошу Тебя Вечный. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru