Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Unity (проблемы, решения, перспективы) (91 стр)

Unity (проблемы, решения, перспективы) (91 стр)

Страницы: 190 91 92 93104 Следующая »
WISHMASTER35Участникwww12 июля 201816:08#1350
Сегодня перестал работать incremental compiler. Пишет ошибку:
(0,0): Unable to start the incremental compiler service:System.Exception: Subscribe exception: EAGAIN(11): Resource temporarily unavailable

Никто не сталкивался?
Вчера перешел на версию 2018.2. Может из-за этого.

KumoKairoПостоялецwww12 июля 201816:14#1351
Вчера перешел на версию 2018.2.

Изображение
alexzzzzПостоялецwww12 июля 201817:11#1352
WISHMASTER35
Ну да, я тоже попробовал релиз 2018.2 с той же ошибкой. Причём в бетах 2018.2 вроде всё работало.
alexzzzzПостоялецwww12 июля 201821:00#1353
А сейчас работает. Не знаю, что изменилось.

Любопытно, зачем они в Incremental Compiler привязались к старой бета-версии Roslyn 2.6.0 и в файлы csproj пишут версию C# 7.0, хотя
- вышло уже несколько финальных версий Roslyn
- их старый 2.6.0 beta 3 поддерживает C# 7.2
- сами же в дефайнах указывают CSHARP_7_2

WISHMASTER35Участникwww14 июля 201812:47#1354
Сейчас заметил, что Vector3Int не имеет forward и back констант. https://docs.unity3d.com/ScriptReference/Vector3Int.html

Мне интересно в Unity посчитали их не нужными или просто забыли.
Есть даже фидбек https://feedback.unity3d.com/suggestions/vector3int-dot-forward-a… 3int-dot-back

alexzzzzПостоялецwww15 июля 201816:50#1355
Подскажите, где я неправ.

Есть два материала-шейдера, "красный" и "зелёный", назначенные двум квадам. Красный квад рендерится первым и находится дальше от камеры. Зелёный квад рендерится вторым и находится ближе к камере. Нужно, чтобы зелёный квад не рендерился там, где уже отрендерился красный. Вот так:

+ Желаемый результат (фотошоп)

Такое можно сделать при помощи stencil-буфера или замутить с буфером глубины, но я пробую сделать при помощи нестандартного режима блендинга: красный шейдер пишет 1 в альфа-канал, а зелёный пишет только туда, где альфа==0.

+ Красный шейдер ничем не примечателен:
+ У зелёного шейдера включен блендинг и очередь рендеринга выставлена так, чтобы он рендерился после красного:

Результаты

+ После рендеринга красного квада:
+ После рендеринга зелёного квада:

Зелёный квад записался только в альфа-канал, а в rgb-канале ничего не изменилось.

Проверяю формулу блендинга: Blend OneMinusDstAlpha DstAlpha

В точке, где зелёный рендерится поверх фонового красного с альфой=1, должен остаться красный:
= (зелёный * OneMinusDstAlpha) + (фоновый_красный * DstAlpha) =
= (зелёный * (1-1)) + (фоновый_красный * 1) =
= (зелёный * 0) + (фоновый_красный * 1) = фоновый_красный

В точку, где зелёный рендерится поверх пустого фона с альфой=0, должен записаться зелёный:
= (зелёный * OneMinusDstAlpha) + (пустой_фон * DstAlpha) =
= (зелёный * (1-0)) + (пустой_фон * 0) =
= (зелёный * 1) + (пустой_фон * 0) = зелёный

а получается так, что вместо зелёного остаётся пустой фон. В чём проблема?

Такой же результат получается при Blend Zero One, т.е. будто DstAlpha всегда равна 1.

PS
Блин, это Skybox в scene view как-то влияет. В game view всё работает правильно. Если в scene view выключить skybox, то тоже правильно.

Правка: 15 июля 2018 17:23

alexzzzzПостоялецwww15 июля 201821:37#1356
Шейдер скайбокса, который по умолчанию, непонятно зачем пишет в альфа-канал единицы:
skybox | Unity (проблемы, решения, перспективы)

а в scene view режим "Alpha channel", похоже, не рендерит скайбокс и поэтому показывает, что весь фон залит нулями, что есть неправда.

Также в Game View скайбокс рендерится после непрозрачной геометрии, а в Scene View ― сразу после очистки кадра, перед всей геометрией. Поэтому результаты экспериментов могут отличаться в разных режимах и зависят от того, какие очереди рендеринга прописаны в шейдерах.

Правка: 15 июля 2018 21:41

MiraПостоялецwww28 июля 201812:19#1357
есть возможность в юнити сделать материал стекла полупрозрачный только в одну сторону? (без всяких скриптов)
и вообще такой шейдер возможен?

нужен эффект тонированного стекла

Правка: 28 июля 2018 12:20

foxesПостоялецwww29 июля 20185:09#1358
SignaПостоялецwww29 июля 20186:08#1359
Mira
Сделать меш из двух элементов, где на каждом свой материал, с одной стороны не прозрачный, с другой прозрачный.
MiraПостоялецwww29 июля 201812:45#1360
спасибо, это подойдет
WISHMASTER35Участникwww1 авг. 201822:14#1361
Нашел в C# одну неприятную особенность. Или я чего-то не пойму.

Допустим есть 3 сборки: первая, вторая и третья.
Первая сборка зависит от второй. Вторая сборка зависит от третьей.

Во второй сборке есть: класс Values с несколькими перегруженными функциями:
class Values {
  public object GetValue(int index) ...
  public object GetValue(Index index) ...
}
В третьей сборке: структура Index.

Из первой сборки я пытаюсь вызвать Values.GetValue(int index), но компилятор требует, чтобы я подключил третью сборку! Хотя мне не нужны Values.GetValue(Index index) и сам Index. Что за черт?

+ Показать

Правка: 3 авг. 2018 9:58

ShadowTeologПостоялецwww2 авг. 20180:02#1362
для этой цели добрые дяди придумали интерфейсы
interface A //это запихнуть в третью сброрку
{
object GetValue(int index);
}
//это во вторую
class Values : A{
  public object GetValue(int index) ...
  public object GetValue(Index index) ...
}
//соответсвенно в третьей сборке не нужно знать тип Values, только о том что мы имеем объект типа A, а что там внутри уже не важно. Циклической зависимости нет.
Кстати как вижу в коде тип object рука тянется к маузеру.
alexzzzzПостоялецwww3 авг. 201814:14#1363
WISHMASTER35
> Что за черт?

Предполагаю, что перед тем, как выбрать из нескольких перегрузок метода подходящую, компилятору нужно рассмотреть все существующие, и т.к. одна из перегрузок использует неизвестный доселе тип Index, то чтобы получить о нём информацию, необходимо загрузить сборку, в которой он объявлен.

Для вызова метода с целочисленным аргументом - GetValue(0) трудно придумать такую перегрузку, которая подходила бы не хуже, чем GetValue(int). Но в общем случае компилятору необходимо изучить все перегрузки прежде чем делать выбор.

WISHMASTER35Участникwww3 авг. 201814:25#1364
alexzzzz
Если тип аргумента не известен, то я ни как не могу вызвать эту перегрузку. Разве если используется какое-то неявное преобразование типов. Хотя по-моему даже в этом случае можно было бы обойтись без явного знания типов.
В любом случае в некоторых случаях это может быть палкой в колесо.
Страницы: 190 91 92 93104 Следующая »

/ Форум / Программирование игр / Общее

2001—2018 © GameDev.ru — Разработка игр