Pull to refresh
17
0
Send message

Вы не можете напрямую читать из буфера глубины, вы можете читать из текстуры глубины, а в нее скопировать буфер глубины.

Так чтобы ее сформировать, надо или рисовать в нее, или копировать из буфера глубины. Потом уже использовать.

Как, по-вашему, формируется _CameraDepthTexture? Вы или отдельным пассом ее заполняете (а это два раза рисовать сцену), или копируете из буфера глубины, с МСАА это может быть дорого, так как нужен резолв.

Вы описываете подход декалей на основе текстуры глубины. Для текстуры глубины вам надо или сцену рисовать 2 раза, или делать резолв глубины. С включенным мсаа это может быть долго. Если честно, не замерял, но не думаю что это быстро для свитча.

В любом случае, это дольше чем построить меш и просто рисовать.

Все равно будет так, если игнорит глубину, то проходит насквозь, если не игнорит, то втыкается.

Можно, но сам террейн же не плоский, на нем есть подъемы и другие неровные дороги и поверхности. Будет видно что проходит насквозь, втыкаясь в террейн.

А как это будет выглядеть на подъемах, рядом с вертикальными пропами, клиффах и т.д.?

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

UV формируются в шейдере

Varyings vert (Attributes input)
{
	Varyings output;

	UNITY_SETUP_INSTANCE_ID(input)
	UNITY_TRANSFER_INSTANCE_ID(input, output);

	VertexPositionInputs vertexInput = GetVertexPositionInputs(input.vertex.xyz);
	output.positionCS = vertexInput.positionCS;

	output.uv = input.vertex / _Size + 0.5; // нормализванное положение вершины: [0; 1]
	output.fogFactor = CalculateFogFactor(vertexInput.positionCS);
	
	return output;
}

Вертикальная компонента также используется для затухания по высоте, причем, затухание выше тени сильнее, чем ниже:

float y = input.uv.y; // [0; 1]
float fade = 1-y; // затехание тени сверху вниз [0; 1]
fade *= fade; // нелинейное затухание
float4 color = tex2D(_BaseMap, input.uv.xz) * _Color;

Да, это техника проекционных мешей, мы ее применяем и для декалей и линейного света.

Мы искренне очень рады это слышать!

Могу быть не прав, но, при совмещении симд и не симд инструкций в цикле происходит pipeline flush.

Пришлите, пожалуйста, адрес электронной почты на help@tankionline.com, разберёмся.

Спасибо за комментарий. Да, SIMD это классно, но с ним тоже надо уметь работать, переключение с векторных регистров на скалярные и в обратную сторону не очень быстрое.

Не проедет, потому что тогда в этой системе отсчета и остановки по маршруту будут двигаться со скоростью 40 км/ч.

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

Все потому что игра - это не только код, но и контент

1

Information

Rating
Does not participate
Registered
Activity