COMMAND ENCODER (Barkar Ivan)
163 subscribers
168 photos
72 videos
17 files
108 links
Cool shading, nice ball moment
Download Telegram
Я тоже в пространствах плаваю. Завел себе короче профессиональную сцену с плейном и шариками, сразу стало видно, как я накосячил с поинтами. Но вроде поправил. Поинты у меня в основном во вью считаются. А еще круто было расположить их центром прям по высоте Плейна и искать почему дот направления до света и нормалей в 0 (2й скрин)
Forwarded from SergeyK
Зацените. Более дешёвая формула синуса
Forwarded from SergeyK
От -1 до 1
Forwarded from SergeyK
-x * abs(x) + x
where x in [-1,1]
Media is too big
VIEW IN TELEGRAM
чет всегда GBuffer в первом кадре из серии длиннее остальных
raster order group очень сократили этот первый кадр. но хз
да в попу ваш метол и TBDR туда же
This media is not supported in your browser
VIEW IN TELEGRAM
давайте немного Юнити. Первое знакомство с рендер гафом в контексте кастомного SRP.

Этот самый примитивный рендер пасс для геометрии ничего не может сказать, кроме как "прекольно!"
Все изменилось, но стало удобно.
private static BaseRenderFunc<DrawGeometryPassData, RenderGraphContext> _renderFunction;

static MyPass()
{
_renderFunction = RenderFunction;
}
В гудини вспомнили про Контекст обработки изображений, и в будущей версии, решили на все деньги его обновить. Теперь это сабстанс какой-то. Любопытна передача данных симуляции.
🤯1
тогда

cmd.SetGlobalConstantBuffer(lightingPassData.DirectionalLightDataBuffer,"DirectionalLightDataBuffer",0, DirectionalLightData.stride);


в шейдере
 

CBUFFER_START(DirectionalLightDataBuffer)
half4 directionLightColor;
half4 directionLightDirectionaAndMask;
half4 shadowData;
CBUFFER_END
а ну и не забыть у графа перед создание BufferHandle
cs 
directionalLightDataBufferDescriptor.target = GraphicsBuffer.Target.Constant;
итого на сегодня вот такой рендер пайплайн пока
конечно, я забыл про преобразование

m - это VP матрица света


private static Matrix4x4 ConvertMatrix(Matrix4x4 m)
{
if (SystemInfo.usesReversedZBuffer)
{
m.m20 = -m.m20;
m.m21 = -m.m21;
m.m22 = -m.m22;
m.m23 = -m.m23;
}
m.m00 = 0.5f * (m.m00 + m.m30);
m.m01 = 0.5f * (m.m01 + m.m31);
m.m02 = 0.5f * (m.m02 + m.m32);
m.m03 = 0.5f * (m.m03 + m.m33);
m.m10 = 0.5f * (m.m10 + m.m30);
m.m11 = 0.5f * (m.m11 + m.m31);
m.m12 = 0.5f * (m.m12 + m.m32);
m.m13 = 0.5f * (m.m13 + m.m33);
m.m20 = 0.5f * (m.m20 + m.m30);
m.m21 = 0.5f * (m.m21 + m.m31);
m.m22 = 0.5f * (m.m22 + m.m32);
m.m23 = 0.5f * (m.m23 + m.m33);
return m;
}


для каскадов добаавляется оффсет и скейл, но это потом