remove noise texture
This commit is contained in:
parent
3af5d804fb
commit
fb5aec6bac
@ -41,7 +41,7 @@ void AsyncWorkerEntryPoint(WaveLaneCtx *lane)
|
||||
|
||||
// Tick forever
|
||||
for (;;)
|
||||
ProfZoneDF("Async Tick")
|
||||
// ProfZoneDF("Async Tick")
|
||||
{
|
||||
AsyncWorkerCtx *w = &Base.async.worker;
|
||||
{
|
||||
|
||||
@ -27,9 +27,9 @@
|
||||
#define PROFILING_ENABLED 0
|
||||
|
||||
|
||||
#define PROFILER_PRIORITY_ASYNC 10
|
||||
#define PROFILER_PRIORITY_ASYNC 30
|
||||
#define PROFILER_PRIORITY_SIM 20
|
||||
#define PROFILER_PRIORITY_VIS 30
|
||||
#define PROFILER_PRIORITY_VIS 10
|
||||
|
||||
|
||||
|
||||
|
||||
@ -270,10 +270,7 @@ void GC_TickAsync(WaveLaneCtx *lane, AsyncFrameLaneCtx *base_async_lane_frame)
|
||||
ResourceKey resource = glyph->desc.font.r;
|
||||
GC_GlyphDesc desc = glyph->desc;
|
||||
TTF_GlyphResult ttf_result = Zi;
|
||||
ProfZoneDF("Rasterize glyph")
|
||||
{
|
||||
ttf_result = TTF_RasterizeGlyphFromCodepoint(frame_arena, desc.codepoint, resource, desc.font_size);
|
||||
}
|
||||
ttf_result = TTF_RasterizeGlyphFromCodepoint(frame_arena, desc.codepoint, resource, desc.font_size);
|
||||
glyph->font_size = desc.font_size;
|
||||
glyph->font_ascent = ttf_result.font_ascent;
|
||||
glyph->font_descent = ttf_result.font_descent;
|
||||
|
||||
@ -5,11 +5,6 @@
|
||||
|
||||
@Dep platform
|
||||
|
||||
//////////////////////////////
|
||||
//- Resources
|
||||
|
||||
@EmbedDir G_Resources gpu_res
|
||||
|
||||
//////////////////////////////
|
||||
//- Api
|
||||
|
||||
|
||||
@ -31,29 +31,6 @@ void G_BootstrapCommon(void)
|
||||
);
|
||||
}
|
||||
|
||||
// Init noise texture
|
||||
{
|
||||
String noise_data = DataFromResource(ResourceKeyFromStore(&G_Resources, Lit("noise_128x128x64_16.dat")));
|
||||
Vec3I32 noise_dims = G_BasicNoiseDims;
|
||||
if (noise_data.len != noise_dims.x * noise_dims.y * noise_dims.z * 2)
|
||||
{
|
||||
Panic(Lit("Unexpected noise texture size"));
|
||||
}
|
||||
G.basic_noise_tex3d = G_PushTexture3D(
|
||||
cl, gpu_perm,
|
||||
G_TextureLayout_Common,
|
||||
G_Format_R16_Uint,
|
||||
noise_dims,
|
||||
.name = Lit("Noise texture")
|
||||
);
|
||||
G_CopyCpuToTexture(
|
||||
cl,
|
||||
G.basic_noise_tex3d, VEC3I32(0, 0, 0),
|
||||
noise_data.text, noise_dims,
|
||||
RNG3I32(VEC3I32(0, 0, 0), noise_dims)
|
||||
);
|
||||
}
|
||||
|
||||
// Init basic samplers
|
||||
{
|
||||
{
|
||||
@ -216,8 +193,3 @@ G_TextureRef G_Blank2D(void)
|
||||
{
|
||||
return G.blank_tex2d;
|
||||
}
|
||||
|
||||
G_TextureRef G_BasicNoise3D(void)
|
||||
{
|
||||
return G.basic_noise_tex3d;
|
||||
}
|
||||
|
||||
@ -6,7 +6,6 @@ Struct(G_Ctx)
|
||||
// Common shared resources
|
||||
G_IndexBufferDesc quad_indices;
|
||||
G_TextureRef blank_tex2d;
|
||||
G_TextureRef basic_noise_tex3d;
|
||||
G_SamplerRef basic_samplers[G_BasicSamplerKind_COUNT];
|
||||
};
|
||||
|
||||
@ -50,4 +49,3 @@ Rng2 G_ScissorFromTexture(G_TextureRef texture);
|
||||
G_SamplerRef G_BasicSamplerFromKind(G_BasicSamplerKind kind);
|
||||
G_IndexBufferDesc G_QuadIndices(void);
|
||||
G_TextureRef G_Blank2D(void);
|
||||
G_TextureRef G_BasicNoise3D(void);
|
||||
|
||||
BIN
src/gpu/gpu_res/noise_128x128x64_16.dat
(Stored with Git LFS)
BIN
src/gpu/gpu_res/noise_128x128x64_16.dat
(Stored with Git LFS)
Binary file not shown.
@ -76,11 +76,6 @@ Enum(G_BasicSamplerKind)
|
||||
G_BasicSamplerKind_COUNT
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
//~ Basic noise
|
||||
|
||||
#define G_BasicNoiseDims VEC3I32(128, 128, 64)
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
//~ Index buffers
|
||||
|
||||
|
||||
@ -2376,6 +2376,10 @@ void P_StepFrame(P_Frame *frame)
|
||||
guy->is_guy = 1;
|
||||
guy->key = player->guy;
|
||||
guy->source = player->key;
|
||||
if (player->is_bot)
|
||||
{
|
||||
guy->xf.r = Vec2FromAngle(Norm24(RandU64FromState(&world->rand)) * Tau);
|
||||
}
|
||||
|
||||
//- Choose guy spawn point
|
||||
{
|
||||
|
||||
@ -496,6 +496,7 @@ Enum(P_MsgKind)
|
||||
P_MsgKind_SaveWorld,
|
||||
P_MsgKind_ResetWorld,
|
||||
P_MsgKind_ClearBullets,
|
||||
P_MsgKind_KillBots,
|
||||
P_MsgKind_Teleport,
|
||||
P_MsgKind_TileEdit,
|
||||
P_MsgKind_Prefab,
|
||||
|
||||
@ -204,6 +204,7 @@ void S_TickForever(WaveLaneCtx *lane)
|
||||
//////////////////////////////
|
||||
//- Connect clients
|
||||
|
||||
ProfZoneDF("Connect clients")
|
||||
for (P_MsgNode *msg_node = in_msgs.first; msg_node; msg_node = msg_node->next)
|
||||
{
|
||||
P_Msg *msg = &msg_node->msg;
|
||||
@ -308,6 +309,7 @@ void S_TickForever(WaveLaneCtx *lane)
|
||||
//////////////////////////////
|
||||
//- Read snapshots
|
||||
|
||||
ProfZoneDF("Read snapshots")
|
||||
for (P_MsgNode *msg_node = in_msgs.first; msg_node; msg_node = msg_node->next)
|
||||
{
|
||||
P_Msg *msg = &msg_node->msg;
|
||||
@ -432,7 +434,7 @@ void S_TickForever(WaveLaneCtx *lane)
|
||||
//- Apply bot controls
|
||||
|
||||
{
|
||||
b32 should_bots_target_player = TweakBool("Swarm bots to player", 1);
|
||||
b32 should_bots_target_player = TweakBool("Swarm bots to player", 0);
|
||||
if (should_bots_target_player)
|
||||
{
|
||||
P_Ent *target_player = &P_NilEnt;
|
||||
@ -455,6 +457,7 @@ void S_TickForever(WaveLaneCtx *lane)
|
||||
bots_count += 1;
|
||||
}
|
||||
}
|
||||
f32 damp = 1;
|
||||
|
||||
{
|
||||
u64 bot_idx = 0;
|
||||
@ -469,6 +472,7 @@ void S_TickForever(WaveLaneCtx *lane)
|
||||
{
|
||||
P_Ent *bot_guy = P_EntFromKey(world_frame, bot->guy);
|
||||
Vec2 dir_to_target = SubVec2(target_pos, bot_guy->xf.t);
|
||||
dir_to_target = MulVec2(dir_to_target, Vec2Len(dir_to_target) / damp);
|
||||
bot->control.move = dir_to_target;
|
||||
bot->control.look = dir_to_target;
|
||||
}
|
||||
@ -729,6 +733,21 @@ void S_TickForever(WaveLaneCtx *lane)
|
||||
}
|
||||
P_SpawnEntsFromList(world_frame, ents);
|
||||
} break;
|
||||
//- Kill bots
|
||||
case P_MsgKind_KillBots:
|
||||
{
|
||||
for (P_Ent *ent = P_FirstEnt(world_frame); !P_IsEntNil(ent); ent = P_NextEnt(ent))
|
||||
{
|
||||
if (ent->is_bot)
|
||||
{
|
||||
P_Ent *bot_guy = P_EntFromKey(world_frame, ent->guy);
|
||||
if (bot_guy->is_guy)
|
||||
{
|
||||
bot_guy->health = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
} break;
|
||||
//- Delete entity
|
||||
case P_MsgKind_Delete:
|
||||
{
|
||||
@ -837,6 +856,7 @@ void S_TickForever(WaveLaneCtx *lane)
|
||||
//////////////////////////////
|
||||
//- Send snapshots
|
||||
|
||||
ProfZoneDF("Send snapshots")
|
||||
for (S_Client *client = S.first_client; !S_IsClientNil(client); client = client->next)
|
||||
{
|
||||
Struct(PackedDeltaNode)
|
||||
@ -973,6 +993,7 @@ void S_TickForever(WaveLaneCtx *lane)
|
||||
//////////////////////////////
|
||||
//- Send messages
|
||||
|
||||
ProfZoneDF("Send network messages")
|
||||
{
|
||||
// Group messages by client
|
||||
for (P_MsgNode *msg_node = P_tl.out_msgs.first; msg_node; msg_node = msg_node->next)
|
||||
|
||||
@ -3429,7 +3429,7 @@ void V_TickForever(WaveLaneCtx *lane)
|
||||
{
|
||||
V_Emitter emitter = Zi;
|
||||
emitter.kind = V_ParticleKind_Debris;
|
||||
emitter.count = 32;
|
||||
emitter.count = 128;
|
||||
|
||||
f32 angle = AngleFromVec2(impact_dir);
|
||||
|
||||
@ -3743,39 +3743,55 @@ void V_TickForever(WaveLaneCtx *lane)
|
||||
emitter.angle.max = angle + angle_spread * 0.5;
|
||||
V_PushParticles(emitter);
|
||||
}
|
||||
|
||||
// {
|
||||
// V_Emitter emitter = Zi;
|
||||
|
||||
// // emitter.kind = V_ParticleKind_BloodTrail;
|
||||
// emitter.kind = V_ParticleKind_BloodDebris;
|
||||
|
||||
// f32 angle = AngleFromVec2(frame->look);
|
||||
// // f32 angle = 0;
|
||||
// f32 angle_spread = Tau * 0.25;
|
||||
// // f32 angle_spread = Tau;
|
||||
// // f32 angle_spread = 0;
|
||||
|
||||
// // f32 speed = 5;
|
||||
// f32 speed = 10;
|
||||
// // f32 speed = 50;
|
||||
// // f32 speed = 100;
|
||||
// f32 speed_spread = speed * 2;
|
||||
|
||||
// emitter.pos.p0 = emitter.pos.p1 = frame->world_cursor;
|
||||
// emitter.speed.min = speed - speed_spread * 0.5;
|
||||
// emitter.speed.max = speed + speed_spread * 0.5;
|
||||
// emitter.angle.min = angle - angle_spread * 0.5;
|
||||
// emitter.angle.max = angle + angle_spread * 0.5;
|
||||
// emitter.count = Kibi(32) * frame->dt;
|
||||
// V_PushParticles(emitter);
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if (frame->held_buttons[Button_B])
|
||||
// if (frame->held_buttons[Button_F] && !prev_frame->held_buttons[Button_F])
|
||||
// if (0)
|
||||
{
|
||||
{
|
||||
V_Emitter emitter = Zi;
|
||||
|
||||
emitter.kind = V_ParticleKind_BloodTrail;
|
||||
// emitter.kind = V_ParticleKind_BloodDebris;
|
||||
|
||||
f32 angle = AngleFromVec2(frame->look);
|
||||
// f32 angle = 0;
|
||||
// f32 angle_spread = Tau * 0.25;
|
||||
f32 angle_spread = Tau;
|
||||
// f32 angle_spread = 0;
|
||||
|
||||
// f32 speed = 5;
|
||||
// f32 speed = 25;
|
||||
f32 speed = 500;
|
||||
// f32 speed = 100;
|
||||
f32 speed_spread = speed * 2;
|
||||
|
||||
emitter.pos.p0 = prev_frame->world_cursor;
|
||||
emitter.pos.p1 = frame->world_cursor;
|
||||
emitter.count = Kibi(512) * frame->dt;
|
||||
|
||||
emitter.speed.min = speed - speed_spread * 0.5;
|
||||
emitter.speed.max = speed + speed_spread * 0.5;
|
||||
emitter.angle.min = angle - angle_spread * 0.5;
|
||||
emitter.angle.max = angle + angle_spread * 0.5;
|
||||
V_PushParticles(emitter);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//////////////////////////////
|
||||
//- Push test explosion
|
||||
|
||||
@ -3802,7 +3818,7 @@ void V_TickForever(WaveLaneCtx *lane)
|
||||
|
||||
emitter.pos.p0 = prev_frame->world_cursor;
|
||||
emitter.pos.p1 = frame->world_cursor;
|
||||
emitter.count = Kibi(128) * frame->dt;
|
||||
emitter.count = Mebi(1) * frame->dt;
|
||||
|
||||
emitter.speed.min = speed - speed_spread * 0.5;
|
||||
emitter.speed.max = speed + speed_spread * 0.5;
|
||||
@ -4207,6 +4223,8 @@ void V_TickForever(WaveLaneCtx *lane)
|
||||
panel->bg = theme.col.panel_bg;
|
||||
panel->bd = theme.col.panel_bd;
|
||||
panel->opacity = theme.col.panel_opacity;
|
||||
panel->resizer_opacity = theme.col.panel_resizer_opacity;
|
||||
panel->rounding = UI_Rpx(0);
|
||||
|
||||
UI_PushDF(Tag, panel->contents_box.v)
|
||||
UI_PushDF(Parent, panel->contents_box)
|
||||
@ -4717,6 +4735,9 @@ void V_TickForever(WaveLaneCtx *lane)
|
||||
{
|
||||
// FIXME: Finalize
|
||||
|
||||
panel->rounding = UI_Rpx(10 * theme.rounding);
|
||||
panel->resizer_opacity = 0;
|
||||
|
||||
|
||||
|
||||
// // FIXME: Remove this
|
||||
@ -4770,7 +4791,7 @@ void V_TickForever(WaveLaneCtx *lane)
|
||||
|
||||
// UI_Size profiler_height = UI_Fnt(70, 1);
|
||||
UI_Size profiler_height = UI_Grow(1, 0);
|
||||
UI_Size header_height = UI_Fnt(2, 1);
|
||||
UI_Size header_height = UI_Fnt(1.5, 1);
|
||||
UI_Size footer_height = UI_Fnt(2, 1);
|
||||
UI_Size window_padding = UI_Fnt(0.60, 1);
|
||||
UI_Size minor_padding = UI_Fnt(0.15, 1);
|
||||
@ -5259,6 +5280,7 @@ void V_TickForever(WaveLaneCtx *lane)
|
||||
// UI_PushDF(Parent, UI_BuildColumnEx(profiler_box))
|
||||
// UI_PushDF(Parent, UI_BuildRow())
|
||||
{
|
||||
UI_BuildSpacer(window_padding, Axis_X);
|
||||
UI_BuildSpacer(window_padding, Axis_X);
|
||||
UI_PushDF(Parent, UI_BuildColumn())
|
||||
{
|
||||
@ -5266,13 +5288,13 @@ void V_TickForever(WaveLaneCtx *lane)
|
||||
// UI_PushDF(BackgroundColor, Color_Red)
|
||||
// UI_SetNext(BorderColor, Color_Red);
|
||||
// UI_SetNext(BorderSize, 1);
|
||||
// UI_SetNext(ChildAlignment, UI_Region_Center);
|
||||
// UI_PushDF(Height, header_height)
|
||||
// UI_PushDF(Parent, UI_BuildBoxEx(UI_KeyF("profiler header")))
|
||||
// {
|
||||
// UI_PushDF(TextColor, theme.col.hint)
|
||||
// UI_BuildLabelF("Profiler");
|
||||
// }
|
||||
UI_SetNext(ChildAlignment, UI_Region_Center);
|
||||
UI_PushDF(Height, header_height)
|
||||
UI_PushDF(Parent, UI_BuildBoxEx(UI_KeyF("profiler header")))
|
||||
{
|
||||
UI_PushDF(TextColor, theme.col.hint)
|
||||
UI_BuildLabelF("Profiler");
|
||||
}
|
||||
|
||||
// UI_BuildSpacer(window_padding, Axis_Y);
|
||||
// UI_BuildSpacer(window_padding, Axis_Y);
|
||||
@ -5280,10 +5302,10 @@ void V_TickForever(WaveLaneCtx *lane)
|
||||
|
||||
//- Graph
|
||||
// UI_SetNext(BackgroundColor, Color_Cyan);
|
||||
UI_SetNext(Height, graph_height);
|
||||
UI_PushDF(Parent, UI_BuildBoxEx(profiler_graph_box))
|
||||
{
|
||||
}
|
||||
// UI_SetNext(Height, graph_height);
|
||||
// UI_PushDF(Parent, UI_BuildBoxEx(profiler_graph_box))
|
||||
// {
|
||||
// }
|
||||
// UI_BuildDivider(UI_Px(1, 1), theme.col.divider, Axis_Y);
|
||||
|
||||
// UI_BuildDivider(UI_Px(1, 1), theme.col.divider, Axis_Y);
|
||||
@ -5786,7 +5808,8 @@ void V_TickForever(WaveLaneCtx *lane)
|
||||
// UI_SetNext(TextColor, theme.col.positive);
|
||||
// UI_SetNext(TextColor, theme.col.button_active);
|
||||
|
||||
UI_SetNext(TextColor, theme.col.button_selected);
|
||||
// UI_SetNext(TextColor, theme.col.button_selected);
|
||||
UI_SetNext(TextColor, VEC4(1, 0.8, 0, 1));
|
||||
UI_BuildLabelF("%F", FmtTimeNs(ruler_len_ns, .p = 2));
|
||||
|
||||
// UI_SetNext(TextColor, theme.col.button_selected);
|
||||
@ -5893,6 +5916,7 @@ void V_TickForever(WaveLaneCtx *lane)
|
||||
}
|
||||
}
|
||||
UI_BuildSpacer(window_padding, Axis_X);
|
||||
UI_BuildSpacer(window_padding, Axis_X);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -6117,12 +6141,12 @@ void V_TickForever(WaveLaneCtx *lane)
|
||||
// {
|
||||
// V_Panel *panel = left_panel;
|
||||
// panel->parent = V.root_panel;
|
||||
// panel->axis = Axis_X;
|
||||
// panel->axis = Axis_Y;
|
||||
// DllQueuePush(panel->parent->first, panel->parent->last, panel);
|
||||
// panel->box = UI_RandKey();
|
||||
// panel->contents_box = UI_KeyF("panel contents box %F", FmtUint(panel->box.v));
|
||||
// panel->resizer_box = UI_KeyF("panel resizer box %F", FmtUint(panel->box.v));
|
||||
// panel->pct = 0.10;
|
||||
// panel->pct = 0.20;
|
||||
// panel->is_organizational = 1;
|
||||
// }
|
||||
|
||||
@ -6140,6 +6164,20 @@ void V_TickForever(WaveLaneCtx *lane)
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
// //- Test stats panel
|
||||
// {
|
||||
// V_Panel *parent = left_panel;
|
||||
// V_Panel *panel = PushStruct(perm, V_Panel);
|
||||
// panel->axis = Axis_X;
|
||||
// DllQueuePush(parent->first, parent->last, panel);
|
||||
// panel->box = UI_RandKey();
|
||||
// panel->contents_box = UI_KeyF("panel contents box %F", FmtUint(panel->box.v));
|
||||
// panel->resizer_box = UI_KeyF("panel resizer box %F", FmtUint(panel->box.v));
|
||||
// panel->flags |= V_PanelFlag_Stats;
|
||||
// panel->pct = 0.5;
|
||||
// }
|
||||
|
||||
// //- Test spawn panel
|
||||
// {
|
||||
// V_Panel *panel = PushStruct(perm, V_Panel);
|
||||
@ -6163,7 +6201,7 @@ void V_TickForever(WaveLaneCtx *lane)
|
||||
// panel->contents_box = UI_KeyF("panel contents box %F", FmtUint(panel->box.v));
|
||||
// panel->resizer_box = UI_KeyF("panel resizer box %F", FmtUint(panel->box.v));
|
||||
// panel->flags |= V_PanelFlag_Profiler;
|
||||
// panel->pct = 0.75;
|
||||
// panel->pct = 0.15;
|
||||
// }
|
||||
|
||||
// //- Vis screen panel
|
||||
@ -6176,7 +6214,7 @@ void V_TickForever(WaveLaneCtx *lane)
|
||||
// panel->contents_box = vis_screen_panel_box;
|
||||
// panel->resizer_box = UI_KeyF("panel resizer box %F", FmtUint(panel->box.v));
|
||||
// panel->flags |= V_PanelFlag_Screen;
|
||||
// panel->pct = 0.25;
|
||||
// panel->pct = 0.52;
|
||||
// }
|
||||
|
||||
// //- Test console panel
|
||||
@ -6190,7 +6228,7 @@ void V_TickForever(WaveLaneCtx *lane)
|
||||
// panel->resizer_box = UI_KeyF("panel resizer box %F", FmtUint(panel->box.v));
|
||||
// panel->flags |= V_PanelFlag_Console;
|
||||
// // panel->flags |= V_PanelFlag_Spawn;
|
||||
// panel->pct = 0.25;
|
||||
// panel->pct = 0.10;
|
||||
// }
|
||||
// }
|
||||
|
||||
@ -6509,7 +6547,7 @@ void V_TickForever(WaveLaneCtx *lane)
|
||||
Vec4 panel_bd = panel->bd;
|
||||
|
||||
Vec4 resizer_color = theme.col.divider;
|
||||
resizer_color.a *= theme.col.panel_resizer_opacity;
|
||||
resizer_color.a *= panel->resizer_opacity;
|
||||
panel_bd.a *= theme.col.panel_border_opacity;
|
||||
|
||||
Vec2 dims_rate = VEC2(Inf, Inf);
|
||||
@ -6567,6 +6605,7 @@ void V_TickForever(WaveLaneCtx *lane)
|
||||
UI_SetNext(BorderSize, 2);
|
||||
UI_SetNext(DimsRate, dims_rate);
|
||||
// UI_SetNext(Rounding, UI_Rpx(10 * theme.rounding));
|
||||
UI_SetNext(Rounding, panel->rounding);
|
||||
UI_SetNext(Flags, UI_BoxFlag_Scissor | (UI_BoxFlag_CaptureMouse * (!is_screen_panel_box && !panel->is_organizational)));
|
||||
UI_PushDF(Parent, UI_BuildBoxEx(contents_box))
|
||||
{
|
||||
@ -8491,6 +8530,7 @@ void V_TickForever(WaveLaneCtx *lane)
|
||||
msg->prefab = P_PrefabKind_Bot;
|
||||
msg->key = P_RandEntKey();
|
||||
msg->xf.t = frame->world_cursor;
|
||||
msg->xf.r = Vec2FromAngle(Norm24(RandU64FromState(&frame->rand)) * Tau);
|
||||
if (V_CountVisCmds(V_CmdKind_spawn_tp_bot))
|
||||
{
|
||||
for (P_Ent *ent = P_FirstEnt(local_frame); !P_IsEntNil(ent); ent = P_NextEnt(ent))
|
||||
@ -8504,6 +8544,11 @@ void V_TickForever(WaveLaneCtx *lane)
|
||||
}
|
||||
}
|
||||
|
||||
if (V_CountVisCmds(V_CmdKind_kill_bots))
|
||||
{
|
||||
P_PushMsg(P_MsgKind_KillBots, Zstr);
|
||||
}
|
||||
|
||||
if (V_CountVisCmds(V_CmdKind_delete))
|
||||
{
|
||||
if (!P_IsEntNil(hovered_ent))
|
||||
@ -8721,7 +8766,6 @@ void V_TickForever(WaveLaneCtx *lane)
|
||||
// Init registers
|
||||
G_SetRegister(cl, V_GpuReg_Flags, gpu_flags);
|
||||
G_SetRegister(cl, V_GpuReg_Frame, gpu_frame);
|
||||
G_SetRegister(cl, V_GpuReg_NoiseTex, G_BasicNoise3D());
|
||||
}
|
||||
|
||||
G_Sync(cl);
|
||||
@ -8929,57 +8973,9 @@ void V_TickForever(WaveLaneCtx *lane)
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////
|
||||
//- Prune sim ents
|
||||
|
||||
// {
|
||||
// i64 ents_to_prune_count = 0;
|
||||
// P_Ent **ents_to_prune = PushStructsNoZero(frame->arena, P_Ent *, sim_frame->ents_count);
|
||||
// for (P_Ent *ent = P_FirstEnt(sim_frame); !P_IsEntNil(ent); ent = P_NextEnt(ent))
|
||||
// {
|
||||
// if (ent->exists <= 0)
|
||||
// {
|
||||
// ents_to_prune[ents_to_prune_count] = ent;
|
||||
// ents_to_prune_count += 1;
|
||||
// }
|
||||
// }
|
||||
|
||||
// for (i64 prune_idx = 0; prune_idx < ents_to_prune_count; ++prune_idx)
|
||||
// {
|
||||
// P_Ent *ent = ents_to_prune[prune_idx];
|
||||
// P_EntBin *bin = &sim_frame->ent_bins[ent->key.v % sim_frame->ent_bins_count];
|
||||
// DllQueueRemoveNP(bin->first, bin->last, ent, next_in_bin, prev_in_bin);
|
||||
// DllQueueRemoveNPZ(&P_NilEnt, sim_frame->first_ent, sim_frame->last_ent, ent, next, prev);
|
||||
// sim_frame->ents_count -= 1;
|
||||
// SllStackPush(sim_world->first_free_ent, ent);
|
||||
// }
|
||||
// }
|
||||
|
||||
//////////////////////////////
|
||||
//- Send messages
|
||||
|
||||
|
||||
|
||||
|
||||
// FIXME: Remove this (testing)
|
||||
|
||||
// if (frame->held_buttons[Button_R] && !prev_frame->held_buttons[Button_R])
|
||||
// {
|
||||
// LogDebugF("Sending test payload");
|
||||
// NET_Send(net_pipe, frame->sim_key, STRING(P_TilesCount, predict_world->tiles), NET_SendFlag_None);
|
||||
// // NET_Send(net_pipe, frame->sim_key, Lit("Hello there!"), NET_SendFlag_None);
|
||||
// }
|
||||
|
||||
|
||||
|
||||
|
||||
// for (P_MsgNode *msg_node = P_tl.out_msgs.first; msg_node; msg_node = msg_node->next)
|
||||
// {
|
||||
// P_Msg *msg = &msg_node->msg;
|
||||
// String packed = P_PackMessage(frame->arena, msg);
|
||||
// NET_Send(net_pipe, frame->sim_key, packed, NET_SendFlag_None);
|
||||
// }
|
||||
|
||||
ProfZoneDF("Publish net msgs")
|
||||
{
|
||||
if (P_tl.out_msgs.count > 0)
|
||||
@ -9004,7 +9000,7 @@ void V_TickForever(WaveLaneCtx *lane)
|
||||
//- End frame
|
||||
|
||||
|
||||
i32 vsync = !!TweakBool("Vsync", 1);
|
||||
i32 vsync = !!TweakBool("Vsync", 0);
|
||||
UI_EndFrame(ui_frame, vsync);
|
||||
|
||||
if (frame->tick == 1)
|
||||
|
||||
@ -20,6 +20,7 @@
|
||||
X(tp_player, Teleport Player, V_CmdDescFlag_None, V_HOTKEY( Button_Q, .alt = 1 ), ) \
|
||||
X(spawn_tp_bot, Spawn/Teleport Bot, V_CmdDescFlag_None, V_HOTKEY( Button_T, .alt = 1 ), ) \
|
||||
X(spawn_bot, Spawn Bot, V_CmdDescFlag_None, V_HOTKEY( Button_T, .alt = 1, .shift = 1 ), ) \
|
||||
X(kill_bots, Kill Bots, V_CmdDescFlag_None, V_HOTKEY( Button_K, .alt = 1 ), ) \
|
||||
X(delete, Delete entity at cursor, V_CmdDescFlag_None, V_HOTKEY( Button_M2 ), ) \
|
||||
X(reset_world, Reset world, V_CmdDescFlag_None, V_HOTKEY( Button_R, .ctrl = 1, .alt = 1 ), ) \
|
||||
X(clear_particles, Clear particles, V_CmdDescFlag_None, V_HOTKEY( Button_C, .alt = 1, ), ) \
|
||||
@ -366,6 +367,8 @@ Struct(V_Panel)
|
||||
Vec4 bg;
|
||||
Vec4 bd;
|
||||
f32 opacity;
|
||||
f32 resizer_opacity;
|
||||
UI_Round rounding;
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
|
||||
@ -1,14 +1,6 @@
|
||||
////////////////////////////////////////////////////////////
|
||||
//~ Helpers
|
||||
|
||||
f32 V_RandFromPos(Vec3 pos)
|
||||
{
|
||||
Texture3D<u32> noise3d = G_Deref(V_GpuReg_NoiseTex, Texture3D<u32>);
|
||||
u32 noise = noise3d[(Vec3U32)pos % G_BasicNoiseDims];
|
||||
f32 rand = Norm16(noise);
|
||||
return rand;
|
||||
}
|
||||
|
||||
f32 V_LifetimeFromParticleDesc(V_ParticleDesc desc, u32 particle_idx)
|
||||
{
|
||||
u64 seed = MixU64(V_ParticleLifetimeBasis ^ particle_idx);
|
||||
|
||||
@ -44,7 +44,6 @@ Struct(V_DVertPSOutput)
|
||||
////////////////////////////////////////////////////////////
|
||||
//~ Helpers
|
||||
|
||||
f32 V_RandFromPos(Vec3 pos);
|
||||
f32 V_LifetimeFromParticleDesc(V_ParticleDesc desc, u32 particle_idx);
|
||||
f32 V_FalloffFromParticleDesc(V_ParticleDesc desc, u32 particle_idx);
|
||||
Vec4 V_ColorFromParticleDesc(V_ParticleDesc desc, u32 particle_idx, f32 alive_seconds, u32 density);
|
||||
|
||||
@ -15,9 +15,8 @@ Enum(V_GpuFlag)
|
||||
|
||||
G_DeclRegister(V_GpuFlag, V_GpuReg_Flags, 0);
|
||||
G_DeclRegister(G_BufferRef, V_GpuReg_Frame, 1);
|
||||
G_DeclRegister(G_TextureRef, V_GpuReg_NoiseTex, 2);
|
||||
G_DeclRegister(i32, V_GpuReg_MipsCount, 3);
|
||||
G_DeclRegister(i32, V_GpuReg_MipIdx, 4);
|
||||
G_DeclRegister(i32, V_GpuReg_MipsCount, 2);
|
||||
G_DeclRegister(i32, V_GpuReg_MipIdx, 3);
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
//~ Particle types
|
||||
@ -104,7 +103,7 @@ Enum(V_ParticleLayer)
|
||||
/* Stain rate, pen chance */ 0, 0, \
|
||||
/* Lifetime */ Inf, Inf, \
|
||||
/* Falloff */ 20, 30, \
|
||||
/* Prune speed threshold */ 0.1, \
|
||||
/* Prune speed threshold */ 0.01, \
|
||||
/* Base color */ VEC4(2, 0.5, 0, 1), \
|
||||
/* Dry color factor */ VEC4(0.2, 0.1, 0.1, 1) \
|
||||
) \
|
||||
|
||||
@ -25,7 +25,6 @@ void PT_RunForever(WaveLaneCtx *lane)
|
||||
// Gpu upload pass
|
||||
{
|
||||
G_ResetArena(cl, gpu_frame_arena);
|
||||
frame->noise_tex = G_BasicNoise3D();
|
||||
frame->sampler = G_BasicSamplerFromKind(G_BasicSamplerKind_PointClamp);
|
||||
frame->compute_target = G_PushTexture2D(
|
||||
cl, gpu_frame_arena,
|
||||
|
||||
@ -107,7 +107,7 @@ TTF_GlyphResult TTF_RasterizeGlyphFromCodepoint(Arena *arena, u32 codepoint, Res
|
||||
Unlock(&lock);
|
||||
}
|
||||
if (!font)
|
||||
ProfZoneDF("Load & cache DirectWrite font")
|
||||
ProfZoneDF("Cache font")
|
||||
{
|
||||
Lock lock = LockE(&TTF_DW.font_bins_mutex);
|
||||
{
|
||||
@ -180,7 +180,7 @@ TTF_GlyphResult TTF_RasterizeGlyphFromCodepoint(Arena *arena, u32 codepoint, Res
|
||||
f32 font_cap = font->design_metrics.capHeight * pixels_per_design_unit;
|
||||
|
||||
TTF_GlyphResult result = Zi;
|
||||
ProfZoneDF("Rasterize")
|
||||
ProfZoneDF("Rasterize DirectWrite Glyph")
|
||||
{
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
|
||||
Loading…
Reference in New Issue
Block a user