►
From YouTube: Silk.NET Coffee & Code Catchups
Description
Join the Silk.NET team for a quick catchup. This is a more informal stream wherein we'll be discussing what we've been doing on the Silk.NET project, what we've been doing outside of Silk.NET, bouncing ideas off each-other, and (most importantly!) provides us an opportunity to answer any questions the community may have.
These streams are impromptu and the VOD will be unlisted as a result.
GitHub: https://github.com/dotnet/Silk.NET
Discord: https://discord.gg/DTHHXRt
Background music by HOME.
A
A
A
A
A
A
C
B
B
Actually
I
did
want
to
see
the
chat
but
hello,
hello.
B
B
C
Well,
I
woke
up
had
to
immediately
woke
up
way
earlier
than
usual,
like
nine,
when
it
was
8.
30.
I
had
to
panic,
get
ready
to
go.
Do
like
the
onboarding
stuff
at
my
new
school
and
now
I'm
here
without
properly
eating
breakfast.
But
that's
fine.
B
D
I
mean
it's
the
evening
for
me:
now
had
a
fun
day.
I
didn't
really
do
much
yet
work
a
little
bit.
I
guess
but
yeah
pretty
chill
day
for
me
today.
Awesome.
D
C
B
B
B
Yeah
so
I
was
just
gonna
say
for
anyone
who
hasn't
tuned
into
these
streams
in
the
past.
These
are
very
impromptu
streams.
They
are
not
to
the
usual
quality
standards,
with
the
amount
of
planning
as
our
API
review
streams
or
our
community
meetings.
B
But
basically
this
is
just
an
opportunity
to
sit
down
and
have
a
chat
for
between
the
salt
team,
the
community
that
should
whether
that
be
silk
related
or
Not
Silk
related
generally.
We
do
try
to
keep
it
at
least
a
little
bit
on
topic,
but
graphics
and
the
programming,
but
other
than
that
yeah
and
it's
good
opportunity
to
match
up,
but
seeing
as
the
only
people
in
the
school
are
silk
people.
What's
everyone
be
doing
silkwise.
C
C
And
since
then
we
have
there's
been
a
PR
coming
in
for
more
tutorials
I
opened
a
PR
to
add
bindings
for
the
various
spear
V
related
libraries
and
tools
and
we're
also
working
on
redoing,
our
native
Library
building
to
be
a
bit
more
robust
and
or
platforms.
Hopefully,
and
the
Linux
libraries
should
work
on
more
distributions.
B
Suppose
I'm
working
on
well
yeah
today
is
it
is
what
usually
would
be
update
Friday,
but
we
stopped
the
monthly
updates
well
up
on
my
resignation
to
try
to
try
and
not
overload
the
few
remaining
maintainers,
so
I
guess
whenever,
but
it's
not
really
no
rush.
It
doesn't
even
have
to
be
on
a
Friday.
You
should
do
it
whenever.
D
Yeah
I
mean
I
I.
Think
honestly,
I've
been
really
impressed
with
the
2x
progress.
I
sort
of
didn't
think
that
we
could
even
do
this
much
anymore
but
yeah.
It's
really
impressive.
So.
B
Yeah
yeah
I
thought
I
thought
I
thought
2.0
was
done,
but
I
decided
by
the
time
that
I
signed
off,
but
then
Bailey's
just
coming
like
oh
yeah,
there's
add
a
million
things
yeah.
D
B
A
B
Taken
up
the
mental
because
well
certainly
with
the
bindings
generator
as
well
like
it
is
good
to
have
someone
else
that
has
some
idea
of.
What's
going
on,
yeah.
C
B
Yeah
well
I
mean,
as
I
repeatedly
say,
build
tools
predates
silk.net
itself,
so
it's
been
passed
around
a
lot
of
people.
I
think
there
are
still
so
yeah
there's
some
bits
of
code
that
were
that
was
written
by
Jax
that
is
still
floating
around
in
there
somewhere
and
he's
never
worked
on
something
like
that,
so
other
than
the
opening
hours.
C
It's
just
it's
just
a
little,
this
just
a
little
a
little
hard
to
work
with
sometimes.
D
Yeah
I
mean
there's
not
much
going
on
I
think
there's
one
Community
member
that
has
like
looked
at
it,
which
I
have
found
to
be
really
interesting.
I.
A
D
Think
they
plan
on
contributing
anything
or
you
know,
but
it's
still
nice
to
see
that
the
Kobe
is
apparently
usable
in
some
like
usable,
for
a
developer
to
like
work
with
and
which
is
I
mean
the
main
goal
of
people
know
right:
yeah
and
I
mean
I.
I
haven't
worked
much
in
it.
I
I
do
like
a
little
bit
of
a
you
know
like
a
few
changes
here
and
there
when
I
have
like
some
time
but
yeah
I
mean
I.
D
This
is
like
a
long
way
to
go
until
we
have
like
functional
bindings
right,
but
in
terms
of
punishing
the
inputs
and
like
all
that,
it's
actually
pretty
like
close
to
being
done.
I
think
but
yeah
I
don't
know,
I
haven't
really
watching
it.
So
yeah
I.
E
D
This
is
actually
for
three
years
now
that
we
started
working
3.0
because
I
think,
at
least
in
my
mind,
we
started
designing
and
like
thinking
about
3.0
when
we
did
the
jet
braids
thing
two
years
ago,
yeah
so
yeah,
it's
been
over
two
years
now,
since
we
like
the
gun,
yeah
yeah,.
B
D
I
say
like
in
the
last
few
months,
I
did
like
a
lot
of
things
where,
like
bit
more
like,
like
you
know,
didn't
do
that
much
coding
and
yeah
I
think
that's
like
really
fun.
Maybe
we
had
a
chance
to
do
something
like
that.
Sometime.
D
This
is
like
I
think
this
is
always
super
fun.
I
love
talking
about
like
this
stuff.
B
Yeah
yeah
yeah;
no,
it
is,
it
is
really
cool.
It
feels
like
we
do,
have
a
very
active
Community
as
well
right.
So
it's
certainly
more
than
when
I
first
started
working
on
silk
I
mean
silk,
had
a
lot
of
followers
from
open,
take
in
previous
iterations
of
the
library,
but
it
was
never
like.
Oh
yeah
lots
of
people
come
and
go
and
either
use
the
library
or
try
to
contribute
to
it.
I
mean
it.
B
D
Yeah
yeah
and
I
mean
like
for
for,
like
if
you're
like
you,
look
at
the
C
sharp
stack
of
like
a
silk
based
application.
Basically,
it
like
most
likely
it's
like
all
the
way
at
the
bottom
of
the
site,
there's
nothing
really
below
so
in
terms
of
C
sharp.
So
it's
really
awesome
to
like
see
that
there's
actually
quite
a
few
people
that,
like
care
about
this.
B
Yes,
yeah
absolutely
and
speaking
of
caring
about
things,
if
you
care
to
ask
us
a
question,
put
it
in
the
chat,
I,
don't
know
why
I've
tried
to
segue
into
everything.
Speaking
of
Segways
have.
B
B
E
D
I
mean
technically
just
brings
this
training
for
sponsor
we
get
licenses
I.
Think
that's.
E
A
A
B
B
Yeah
well
I
just
find
it
ironic
that
the
stride
projects
for.
B
To
still.net
3.0
has
more
more
financial
support
than
0.3.0
itself.
I.
B
E
C
D
C
I
mean
yeah
I,
think
Uno's
using
or
open
job
weddings
now
really.
C
B
A
D
B
Strike
was
a
big.
There
are
a
few
projects
that
I'm
really
Keen
to
get
on
silk,
and
that
was
certainly
in
the
initial
days
of
silk
that
I
used
to
actively
push
for
that,
like
stride,
was
one
that
I
blocks
in
basically
immediately
because
well,
certainly
now
that
we're
both
in
the.net
Foundation
makes
for
all.
It
makes
sense
for
all
of
the.net
foundation
projects
to
talk
to
each
other.
D
Oh
for
sure,
yeah
I
think
we
also
at
some
point
pushed
for
I.
Think
it
was
Revolution.
Is
that
correct
I.
B
A
C
C
Like
not
biased
at
all,
of
course,.
D
D
Like
short
DX,
which
is
also
like
yes,
it's
good,
but
also
No,
One,
updates
it
so.
D
B
C
C
D
I
think
the
x
is
like
one
of
those
which
would
massively
benefit
from
like
the
class
thing
that
we
worked
on,
but
yeah.
That's
really
something
that's
impossible
to
open
this
yeah.
One
of
the
like
main
things
for
3.0,
is
having
like
the
class
overloading
right.
You
remember.
D
D
B
Oh
yeah,
because
the
features
of
the
language
and
runtime
that
we're
using
seem
pretty
stable
now
because,
whereas,
if
you
look
at
the
2.0
we're
making
that
we're
making
the
first
previews
of
that
as.net
Source
generators
were
being
themselves
being
worked
and
function,
points
as
being
works
on
themselves.
So
we
were
very
much
bleeding
edge
and
it
did
hurt
us
a
bit.
D
I
ran
for
like
several
months
on
literally
like
a
custom-built
Rosalind
version
with
all
the
branches
emerged,
because
I
was
like
I
I
need
this
now
give
it
to
me,
but
yeah
I
mean
it
was
like
as
bleeding
as
much
as
it
gets
so
yeah
yeah.
B
And
then
after
we
actually
started
using
saw
straight
away
it's
properly,
we
realized.
Oh,
this
was
maybe
a
mistake.
D
C
D
I
mean
the
main
problem
is
just
a
pretty
cardio
smoothie
threading,
and
then
we
just
have
like
what,
like
only
millions
of
API
definitions,
right,
yeah,.
C
I
think
our
generated
code
alone
is
like
a
good
like
seven
million
lines
on
that
generated
code
is
then
regenerated,
Again
by
The
Source
generators,
it's
probably
creating
like
50
million
lines
of
code
at
the
end
of
The
Source
generation,
yeah.
C
C
D
B
D
B
I
mean
I,
think
dividing
in
the
YouTube
channel
is
hit.
The
nail
on
the
head
is
that
it's
it's
brought
Source
generation
down
to
the
compiler
layer,
but
his
yield
did
exactly
none
of
the
benefits
of
it.
It.
A
B
Taken
the
AST
and
show
that
open,
then
it's
got
to
figure
out.
You
know
how,
because
no
one
will
make
a
perfect
AST
and
a
source
generator.
So
of
course
it's
got
to
try
and
figure
out
all
the
context
and
whatnot,
but
that's
that
would
still
be
better
than
just
just
pure
straight
up
with
the
sources
yeah
yeah
we've
got
to
oh
convert
it
to
a
string
and
then
parse
it
again
to
get
all
the
content
like.
B
A
D
C
D
C
That
would
be
like
80
different
CI
shops
running
I.
Don't
think
Microsoft
would
be
very
happy
with
us
running.
Adc
eye
drops.
C
E
C
D
C
B
Of
interdependency
between
the
projects
and
Newcastle.
B
Gets
every
single
project
that
is
referenced
by
any
project.
It
is
certainly
possible.
It's
just
maintaining
we
see.
If
we
Auto
generated
the
CR
workflow,
then
yeah
fine
I
know
at
work.
We
have
a.
We
have
a
gitlab
pipeline
that
spawns
thousands
actually
thousands
of
jobs.
E
C
I
think
it's
the
new
native
libraries
we've
been
adding
like
I,
think
it's
specifically
a
problem
with
the
sdl
library
CIS,
because
I'm
adding
like
three
different
supported,
I'm,
adding
three
new
supported
architectures
to
sdl,
to
RCL
Librarians,
combined
with
the
wgpu
ones
and
the
other
ones,
I've
been
adding
the
ones
I'm
going
to
be
adding
I
think
we're
just
starting
to
hit
a
limit
of
the
storage
capacity
because
cloning
cloning,
a
fully
recursive
GitHub
like
a
fully
recursive
copy
of
the
siliconet
repository,
is
like
four
gigabytes
I.
C
Think
let
me
I
actually
have
a
fresh
clone
of
silk.net
wait.
How
do
you
view
a
folder
or
size
on
Linux
like
DH
or
something
DF?
Oh.
B
D
C
C
C
One
of
their
examples
also
has
an
lovm
sub
module.
So
we
have
like
two
copies
of
lovm
the
entire
git
tree
and,
like
the
80
other
sub
modules,
with
tons
of
git
history,
too
angle
is
a
big
one.
Dawn
we
have
Dawn
as
a
sub
module
now
too,
which
is
massive,
so
like
kind
of
full
recursive,
I
I
think
it
would
help
a
lot
if
we
set
up
the
CI
to
only
clone
a
depth
of
one.
C
That
would
probably
help
a
lot
of
upload
artifacts
if
they're
built
and
delete
them.
Today's,
the
runner
I,
was
suggested
that
by
I,
don't
remember
who
I'm
sorry.
If
you're
in
the
chat,
someone
suggested
that
instead
of.
C
C
B
A
A
C
B
From
the
latest
release
and
figure
out
how
much
we're
bankrupting
the.net
Foundation.
D
No,
do
we
have
a
clue
how
many
cores
we're
using
I.
B
I
think
it's
I
think
it's
a
dual
core
machine,
because
I
remember
when
I
tried
to
paralyze
the
compilation
for
some
of
the
Native
binaries
and
silk
itself
to
be
fair,
it
actually
starved
the
thread
that
was
talking
to
GitHub
actions.
So
that's
that's
the
main
reason
why
we
need
the
self-hosted
runner.
C
Right
I
think
I
think
that's
also
a
thing
we
do
in
the
in
the
generate
binding,
C
I
think
we
specified
to
build
tools
to
only
do
generation.
Oh.
C
C
Look
at
my
stl2
libraries,
PR
you'll,
see
it
failing.
You'll
see
one
of
them
failed.
Just
after
six
seconds
and
yeah
the
temporarily
disabled
self-hosted
Runner
commit
in
my
PR.
It
failed
after
30
minutes,
which
is
quicker
than
it
usually
did.
D
I'm
assuming
I'm
using
the
wrong
table,
because
this
really
can't
be
I
mean
this
is
probably
wrong.
I
I
hope
that
this
is
wrong,
but
if
I'm
like,
if
I
understand
the
table
right
which
I
hopefully
don't
then
would
mean
that
running
it
once
for
90
minutes
and
capping
out
the
storage
costs
you
like
80
dollars
every
time.
Oh.
C
C
D
C
D
D
B
Just
figured-
and
it
was
let's
just
see
how
long
it
takes.
A
B
D
I
I
need
the
I
need
to
see
the
bottom
of
this
because,
like
you
can
see
how
it
says,
attempting
to
cancel
both
and
in
that
second,
you
get
back
the
resolution.
It's
beautiful.
B
C
I
can't
you,
you
still
can't
build
silk.net
entirety
under
Linux.
You
have
to
patch
silk.net.math
to
remove
the
iOS
workloads.
You
have
to
patch
STL
windowing
to
remove
iOS.
Sorry.
C
C
I
have
a
patch
Set
I,
just
have
a
patch
I
was
sitting
somewhere
on
my
home
folder,
which
just.
B
Well,
I
hope
not
I,
don't
know.
Let
me
check
oh
Jesus
sound.
B
C
C
I
tried
it
recently
and
it
made
Ryder
suck
up
like
24
gigs
of
RAM
yeah
I'm,
not
surprised.
It's
Visual,
Studio
I
tried
it
on
my
dev
kit.
I
tried
to
do
Visual
Studio
on
the
full
Solution
on
my
dev
kit,
Visual
Studio
sucked
up
like
18
gigs
of
RAM,
then
crashed
yeah.
It's
bad
like
you'd
think
that
a
machine
with
32
gigs
of
RAM
and,
like
you
know,
a
decently
powerful
arm
CPU,
should
be
able
to
handle
at
least
opening
the
solution,
but
no
visual
studio,
just
flat
out
crashes,
Visual.
D
C
C
C
Rocket
once
you
let
Ryder
fully
settle,
it
will
it'll
steady
around
24
gigs
of
usage
on
RAM,
and
then
it
will
actually
be
semi-okay.
You
will
get
completions.
C
D
You
should
disable
swap
while
you
do
it,
because
it'll
just
not
work.
B
B
Recently,
upgraded
from
16
I've
got
80
kicks
now
and
I
think
Peak
usage
when
compiling
all
the
stuff.net
was
37.
Gigs
I
think
you
have
80
gigs
yeah
well,
I
just
got
I
just
got
264
sticks,
so
I've
got
my
my
two
eight
gigs,
which
I
had
before
and
now
I've.
A
B
Yeah
well,
yeah,
the
speeds
are
the
same.
Yeah
I
know
it's
not
an
option,
okay
operation,
but
it's
just
like
I
didn't
I
couldn't
afford
to
get
four
four
thirty
two
sticks
I
can't.
C
I'm
using
11
gigs
right
now,
3.1
gigabytes,
that
is
Visual
Studio
code.
2.5
of
that
is
Firefox
and
a
gigabyte
is
from
Discord.
C
C
It
shows
me
it
per
on
a
per
application
basis
on
the
overview.
Let's
see,
yeah
I,
don't
know
what
is
calendar
reminders.
Jimmy
is
calendar
reminders
taking
a
bunch
of
RAM
on
your
system
too,
if
you're
still
in
chat.
C
Oh
no
answer,
are
you
sure
you're
not
looking
at
shared
memory,
I'm
just
looking
at
memory,
the
memory
tab
on
the
applications
overview.
C
Probably,
however,
oh
wait:
okay,
wait,
yeah,
okay,
okay,
so
the
200
megabytes
is
mysqld
thanks,
calendar
reminders.
So
no
it's
not
shared
memory.
It's
literally
just
it
has
the
full
copy
of
MySQL
running
in
the
background
right.
Why
did
why
they
didn't
use
like
anything
else
like
sqlite,
for
you
know
for
like
a
reminder
system
I,
don't
see
any
other
calendar?
Okay,
it's
probably
just
something:
I
installed,
I
think
I
have
the
full
K
Suite,
but
yeah.
It
literally
just
has
a
MySQL
running
as
a
sub
process.
A
B
So
I
guess,
on
the
on
the
3.0
front,
I
mean
I'm
still
trying
to
play
around
with
my
generator
experiments,
I
mean
I
actually
trying
to
focus
on.
It
is
difficult,
but
I
I,
suppose
my
aim.
There
is
like
I'm
not
trying
to
I'm,
not
trying
to
rotate
development
or
anything
I'm,
literally
just
trying
to
experiment
with
okay.
Well,
what?
If
we?
B
What
if
we
made
a
3.0
generator
that
is
still
user
usable,
but
try
to
do
it
without
all
of
the
plugable
flexibility
stuff
the
3.0
like,
but
really
needs,
but
at
the
same
time
it
doesn't
lose
that
much
if
we
don't
have
it,
especially
if
we're
not
gonna
have
Source
generator
we've
gotten.
If
we're
going
to
have
a
source
generator,
then
yeah
we
kind
of
need
it,
but
yeah.
Really,
it's
just
for
me
to
get
my
ideas
of
what
3.0
should
be
off
out
of
my
head
and
onto
paper.
B
But
yeah
I
haven't
got
anywhere
with
that,
yet
I
suppose
the
main
thing
with
the
Clank
sharp
compatibility
as
well
again
repeating
the
vein
of
of.net
Foundation
projects
talking
and
working
with
each
other
I
really
want
to
get
I
really
want
to
be
able
to
feed
all
of
the
terror
effects
properties
through
whatever
3.0
generator.
B
We
end
up
making
and
and
just
apply
our
morphs,
our
our
modifications
to
it
to
make
them
silky,
because
that
way,
this
is
something
that
Tanner
and
I
have
talked
about.
A
bunch
internet
well,
silt.net
and
terafx
have
very
different
goals,
but
right
now
the
apis
that
each
project
exposes
themselves
different
and
it'll
be
nice.
If
it
were
clear-cut
which
Library
you
should
probably
use
with
no
compromise
going
between
the
two
so
and
terrafx
is
very
proven
on
the
Windows
front,
so
well,
yeah.
B
If
we
can
throw
all
of
our
win
all
of
their
Windows
generator
properties
through
our
generator
and
thereby
feed
it
down
to
Clan,
sharp
and
then
just
apply
our
modifications
like
we
would
as
usual,
it
means
that
there's
no
there's
no
real
downside
to
using
silk
or
using
terafx
it's
just
whichever
binding
style.
You
prefer.
D
Yeah
I
mean
I
really
like
this
is
I
I.
Think
terrify
is
great.
You
know,
but
I
think
I'd
really
like
to
get
to
the
point
where
Circus
like
a
strict
superset
of
therapist,
because
I
think
like
I
I'm,
just
I,
just
think
that,
like
the
wall
Styles
like
my
name,
is
like
good
for
some
cases
but
I
think
there's
so
many
opportunities
to
just
have
like
easy,
safe
variants
that
cost
nothing
that
like
I'm,
not
a
fan
of
like
saying.
Oh,
we
only
do
raw
bindings.
It's
like
that's!
D
B
Yeah
I
mean
yeah,
that's
what
I
want
to
get
to
as
well
to
be
fair
because
I
I,
don't
obviously
so
self-drivener
should
be
very
usable
like
if
you,
if
you
want
to
avoid
a
pointer.
Well,
okay,
it
might
be
a
struggle,
but
we
can
probably
make
that
work,
but
it's
it's.
It
should
be
a
case
of
well
yeah,
it's
it.
It
still
feels
C
sharp
like
and
you
can
still
use
the
raw.
You
can
still
use
pointers
and
everything
if
you
want,
but
fundamentally
you
have
no
cost.
B
B
It's
you
shouldn't
it
shouldn't,
look
horrible
and,
like
you
like,
you've,
just
copied
and
pasted
a
bunch
of
C
code
into
your
c-sharp
file,
but
at
the
same
time
some
people
want
that
some
people
want
the
ability
to
just
have
a
c
implementation
and
be
able
to
put
into
C
sharp
and
it
mostly
just
work
with
minus
weeks.
C
E
C
Yeah,
so
what
I?
What
I
was
thinking
of
doing
is
having
an
excellent
yeah.
I
was
thinking
of
having
extra
methods
generated
by
build
tools,
or
maybe
silk
touch
can
do
it.
That
would,
instead
of
instead
of
returning.
E
C
C
But
if
you
could
still
get
the
original
pointer
back,
if
you
dereference
a
pointer
and
call
a
method
on
the
dereferenced
object,
if
you
can
still
get
the
original
pointer
back,
then
it
should
be
possible
to
just
like.
Have
the
user
specify
a
global
static
web
GPU
somewhere
and
then
you
can
then
do
I'll
put
it
in
the
text.
Chat
for
this
channel
it'll
be
something
like
device
create
buffer.
C
If
I
can
still
get
back
the
original
pointer
for
device
inside
the
create
buffer
function,
then
it
would
be
possible
to
then
redirect
that
to
just
wgpu
device
create
buffer
and
then
pass
in
the
device.
So
it
ideally
having
a
way
to
have
those
two
things
be
the
same.
Things
would
be
really
good.
It
would
improve
usability
a
lot,
but
if
that's
not
possible,
then
I
can
have
something
yeah.
D
This
is
pretty
much
exactly
a
feature
that
I've
been
talking
about
slightly
different,
like
I
would
match
it
slightly
differently,
because
Vulcan
does
the
same
thing
right
like
it's.
The
exact
same
thing
with
like
most
woken
things
are
like
very,
like
object
oriented
where
you
have
like
a
make
object
that
I
creates
like
more
in
them
like
you
have
functions
that
operated
those
Etc
I,
don't
think
you
can
do
it
using
like
The
Arrow
syntax,
but
the
way
I
like
think
we
should
implement.
D
It
eventually
is
by
having
a
sort
of
class
that
like
has
this,
that's
basically
a
safe
handle.
That's
the
way
I
like
to
think
about
it
that
has
the
actual
handle
inside
so
for.
D
That
don't
have
a
specific
value,
but
I
guess
for
web
GPU.
It
would
just
be
a
pointer
I
guess
it
doesn't
really
matter
what
the
inner
type
is
and
then
you
can
just
like
make
a
class
or
make
like
a
extension
methods
on
top
of,
like
that
say,
General,
and
that
those
do
exactly
this
and
yeah
I
guess
with
webp
we
can
yeah
exactly
that's
basically
what
it
would
look
like
but
like
it
then
it
can
also
do
I'm.
Not
sure.
Do
you
have
to
stream
on
the
chat
right
now.
D
D
So
basically,
like
this
I
know,
you
can
do
this
like
for
all
the
like
things.
This
is
important
for
Vulcan
I,
don't
know
if
the
same
thing
applies
to
web
GPU,
and
then
you
can
do
this
all
the
way
down
which
makes
the
binding
super
safe
and
like
work.
D
Amazingly
I
have
I
had
like
a
smallish
prototype
of
this,
like
it's,
it's
amazing
to
use
because
you
can
like
you,
can
make
them
implement
the
suppose
to
like
free
them,
like
you
can
do
all
the
like
c-sharpiness
that
you
would
expect
from
like
an
object,
oriented
API
and
it's
amazing
and
you
don't
have
like
to
provide
the
same
handles
everywhere.
It's
great
to
use,
but
I
pretty
much
found
this
to
be
like
more
or
less
impossible
to
generate
right
now,
because
there's
no
in
I
I
mean
it's.
D
Basically,
you
would
require,
like
a
huge
amount
of
code,
of
build
Tools
in
in
build
tools
and
I
mean
if
you
manage
to
do
this.
I
would
be
amazed,
but
yeah
I
I
found
it
to
be
very
difficult.
So.
A
C
Gonna
as
well
yeah,
the
reason
I
was
thinking
about
pointeresting
is
that
our
our
direct
3D
bindings
used
to
work
this
way
the
pre-2017
directory
bindings.
You
would
de-reference
a
pointer
and
call
a
method
on
that.
I
have
no
idea
how
that
works.
C
I
am
not
very
well
versed
in
the
windows
component
object
model,
but
if
you
can
get
the
original
pointer
of
and
the
example
I
sent
in
the
channel,
if
you
can
get
the
original
pointer
of
underscore
d39
inside
of
get
adapter
identifier,
then
it's
totally
possible
to
do
so,
although
I'm
not
sure
if
that's
doable,.
D
I
mean
you
can
do
this,
it
I
think
the
way
it
works
is
you
just
have
to
make
a
function
pointer
and
then
this
is
like
fairly
easy.
I'm,
not
super
sure
why
we
would
want
this
to
use
like
The,
Arrow,
syntax
I
feel
like
just
having
a
normal
like
making
normal
mythics
would
be
better.
D
C
Yeah,
the
reason
why
is
because
wgp
returns,
pointers
to
objects
like
a
star
buffer
or
I
guess
would
be
a
c
would
be
a
buffer
star
or
an
instant
star,
and
you
I,
don't
think
you
can
add
extension
methods
for
a
pointer
to
an
object.
I
think
you
could
only
add
them
as
the
object
itself.
I
I'm,
not
sure
on
that,
but
I
believe
that's
how
it
works.
Yeah,
but
yeah
I.
Don't
think
you
can
add
an
extension
method
like
you
can't
do
this
instance
star
and
like
I
mean.
D
D
Access
to
the
original
web
GPU
object,
anyways
to
like
make
the
inner
call,
so
you
sort
of
have
to
make
like
a
wrapper
anyways
right.
Yes,.
C
My
my
thoughts
for
that
were
to
for
that
the
user
is
in
most
cases,
I
say
most.
The
user
is
discouraged
from
creating
multiple
API
objects,
because
in
web
GPU
and
Vulcan
I
I
think
so
too.
You
have
instances
device
and
instances
adapters
and
devices
and
generally
you'll
have
one
instance,
sometimes
multiple
adapters
and
sometimes
multiple
devices.
It's
very
rare
that
you'll
have
multiple
instances,
let
alone
multiple
copies
of
the
Native
Library,
like
you're,
never
going
to
be
calling
into
both
John
and
wgpu
at
the
same
time.
C
So
my
thoughts
were
to
just
at
setup
time.
When
you
create
the
web
GPU
object,
there
will
be
an
option
to
basically
store
that
object
in
global
state
somewhere,
like,
for
example,
in
the
web
GPU
class.
There
could
be
a
static
web
GPU
instance
that
we
can
call
probably
not
instances
of
diffusing.
But
if
we
store
a
static
copy
of
it,
then
we
wouldn't
need
to
store
another
copy.
C
So
we
wouldn't
need
the
wrapper
class
and
it
would
be
if
we
wouldn't
have
to
create,
like
a
separate
method
where
you
wouldn't
have
to
do,
for
example,
instance:
wrapper
equals,
like
instance,
wrapper
instance,
equals
new
instance
wrapper,
VK,
dot,
create
instance.
You
wouldn't
have
to
do
something
like
that.
It
would
just
you
would
just
directly
dereference
the
pointers
you
get
from
the
normal
API
things
and
you'll
be
able
to
call
the
methods,
presuming
that
you
have
set
that
Global
static.
State
yourself.
B
C
Yeah
I
I,
don't
think
any
of
us
here
are
like
experts
in
math,
especially
quaternions.
No
one
understands
quaternions
people
say
they
do,
but
they
probably
don't.
Oh
Mario's,
Sky
I
think
I
died
right.
B
B
For
multiplication
equation,
I
think
we
do
have
some
helper
apis
install.net
maths
yeah
for
converting,
but.
E
C
Yeah,
but
if
there's
anything
missing
with
our
quaternity
and
like
apis
and
such
feel
free
to
open
proposal,
we
are
still
open
to
them
for
two
ducks
and
most
of
the
math
stuff
that
is
in
2.x
is
probably
going
to
be
reevaluated
and
probably
push
into
3.2
yeah.
We
should
have
most
of
the
methods
for
quaternion,
yes,
I.
Think
numerix
also
has
one
all
right:
kitara.
A
D
At
least
okay
yeah.
C
B
Yeah
the
thing
is
it's.
It
would
be
great,
however,
I
don't
want
to
lock
people
in
into
using
that,
because
I
know,
that's
a
that's.
Actually
one
thing
that
Thomas
really
hates
is
those
rappers
that
are
just
a
rap
Rover,
the
API
objects
and
the
handle
ones.
Basically,
you
just
play
say
GL
something
do
this
with
something
dot.
Do
this.
A
C
The
the
good
thing
about
the
one
like
if
it
does
work
this
way,
if
you
can
in
fact
get
to
the
original
pointer
when
you
dereference
a
call
method
on
it.
If
it
does
work
that
way,
then
it
would
be
completely
optional.
You
could
just
do
wgpu
dot
device,
great
buffer
or
you
could
do
device.
Do
you
reference
create
buffer
and
they
would
both
work
exact
same
way.
C
If
you
didn't
want
to
use
the
because
it
wouldn't
be
a
wrapper
object,
it
would
just
be
the
exact
same
pointer,
but
when
you
do
reference,
the
pointer
you
get
back
or
you
get
an
object
with
a
bunch
of
methods
on
it
because
they're
all
just
all
the
web,
GPU
objects
are
just
opaque
types,
pointers,
dual
pink
types.
So
if
you
can
still
get
the
original
pointer
back
out,
this
would
be
a
completely
optional
way
of
doing
this.
C
And
if
you
can
pass
a
reference
to
a
static
object,
and
then
we
store
that
reference
to
your
static
object,
we
wouldn't
even
need
to
have
like
a
static
web
GPU.
We
would
just
store
a
reference
to
another
to
to
the
users
static
web.
Gpu
because
then
they
could
handle
their
static
objects.
However,
they
need
I,
don't
know
how
feasible
that
is
not.
D
A
C
Api
wrappers
understand
me:
they
can
both
be
really
helpful,
but
also
really
limiting
if
you're
forced
to
use
them,
but
also
some
API
wrappers
just
aren't
helpful
and
they
can
be
like
sometimes
you'll
you'll
be
encouraged
to
use
them,
but
they
limit
how
you
interact
with
the
API.
C
C
C
It
would
be
slightly
on
a
special
case
basis
like
how
exactly
it
interacts
with
the
functions,
because
we
can't
just
assume
for
if
there's
a
shared
prefix
on
a
bunch
of
types
and
the
first
parameter
of
those
shared
prefix
functions
is
the
same
name
as
that
prefix.
We
can't
just
assume
that
is.
We
should
turn
that
to
API
wrapper
I
think
for
it
to
not
be
annoying.
It
should
be
like
manually,
you
have
to
say
all
functions
that
start
with
device
and
have
a
device
Stars
first
parameter.
C
Those
should
be
turned
to
a
prefix
object
for
the
device
parameter,
because
there's
not
really
a
good
way
to
do
this
safely,
without
introducing
a
bunch
of
unnecessary
your
reference
overloading,
unlike
a
bunch
of
random
objects
or
like
unnecessarily
produce
or
if
we
do
have
to
go,
the
wrapper
root
unnecessarily,
producing
a
bunch
of
wrapper
objects
for
things
that
don't
need
it
so
I
think
it
I
think
it
would
be
like
a
manual
thing
where
use
where
a
developer
would
go
through
and
manually
put
in
each
type.
C
That
needs
to
have
these
special
overloads.
They
would
mainly
put
that
in
the
general
Json
and
it
would
just
be
shoved
into
build
tools.
D
C
Yeah
I,
don't
think
for
opengl
would
work.
I
I
feel
like
unfortunately,
opengl
just
would
not
be
possible
because
nothing
strongly
typed
into
mgl.
It's
all
events,
but
for
for
something
like
Vulcan
or
web
GPU
I
believe
metal
too.
Although
metal
is
a
bit
of
a
different
case,
because
it's
Objective
C.
B
Yeah
for
metal,
we're
forced
to
make
a
rapper
like
that
anyway.
So.
B
C
Gpu,
it
would
be
totally
feasible
to
have
extension
methods,
because
everything
every
single
object
type
is
strongly
typed
in
both
C
and
C,
sharp
already
so
being
able
to
just
add
extension
methods
or
overloads.
That
would
be
that
would
work
great.
B
Yeah
I'm
curious
Bailey.
How
do
you
feel
about
the
new
strongly
typed
Handles
in
opengl.
C
With
the
ones
that
are
in
two
decks,
yes,
yeah
I
think
they're
a
little
clunky
to
use
mostly
because
functions,
don't
return
them
directly,
yes,
wrap
it
in
the
new.
That's
my
main
problem.
If,
if
it,
if
it
did
return
the
object
directly,
it's
a
double-edged
sword,
it
forces
you
to
use
it.
So
you
can't
use
all
units
and
then
it's
it's
basically
just
object.
Oriented
opengl
at
that
point
which
yeah
I
I.
C
Personally,
whenever
I'm
working
with
opengl
and
silk
I,
always
use
UNS
directly,
but
yeah
I
can
understand
the
need
for
the
stronger
type
handles
because
yeah
my
solution
is
just
I,
don't
use
opengl
anymore
I.
Everything
I
do
is
web
GPU
or
direct311
through
the
xbk
native
that
my
solution
is
just
I:
don't
I
don't
mess
it
up
in
jail
anymore.
C
I'm
sure
I'm
sure
someone's
come
up
with
some
genius
way
to
have
it
all
be
context.
Surface
dependent
and
clean
wrapper
objects
that
correspect
to
humans
and
such,
but
it's
a
lot
of
work
for
what
is
essentially
a
feature
that
a
fair
amount
of
people
are
going
to
opt
out
of
because
not
Everyone
likes
the
wrapper
objects.
Everyone.
Some
people
just
want
to
work
directly
with
the
units
and
do
not
care,
which
is
fair.
That's
how
I
work
with
it
yeah
for
something
like
opengl.
C
It's
a
double-edged
sword
but
I
feel
like
it
could
work
for
other
bindings,
because,
arguably
right
now,
direct
3D
11.,
like
the
general
direct
3D
family
of
bindings,
is
the
best
one,
the
ones
that
translate
the
best
in
C
sharp
because
of
the
comforter,
because
you're
able
to
just
directly
call
methods
on
I
think
that
I
think
those
findings
translate
the
best
into
C
sharp,
just
like
from
a
E's
perspective,
but
I
feel
like
if
we
do
this
like
overloading
thing
with
dereferencing
or
if
we
have
to
we
do
a
wrapper
object.
C
C
It
is
something
I
want
to
see.
I
want
to
make
web
GPU
As
Nice
of
the
experience
to
use
from
C
sharp
as
possible,
because
even
from
using
it
just
in
C,
it
is
not
the
best
experience
working
with
the
multiple
different
headers
that
argue
with
functions.
They're,
not
even
being
a
single
dispose
mechanism
Universal
it's
it's
quite
a
mess
and
I've
been
able
to
wrap
around
some
of
that
mess
with
the
extensions
that
we
provide.
C
But
my
goal
is
to
make
it
just
a
good
experience
and
better
than
everything
else,
because
from
what
I've
seen
at
least
the
average
in
web
GPU
bindings
are
no
offense
but
they're
bad.
It's
just
rapper
strucks
over
inputer
and
their
bindings
are
their
separate
bindings
depending
on
whether
you're
targeting
Dawn
or
the
browser.
C
A
B
Know
that
that
with
the
wgpu
and
Dawn
have
partial
implementations
of
web
GPU,
headers
and
I
know
that
M
scripting
is
supposed
to,
but
as
anyone
I
actually
successfully
used
them
and
just
them.
C
Way
to
dispose
most
GPU
objects.
You
can
get
most
of
the
way
there,
but
you
will
leak
memory
constantly
and
there
is
no
way
to
fix
that
without
using
extension
methods
which
don't
really
exist
in
C,
but
I
think
we
made
that
work
so.
B
For
inscription
I'm
guessing
I'm
guessing
we
just
need
to
make
our
make
our
own,
because
I
know
there
is
a.
There
is
a
wrapper,
but
it's
basically
trying
to
stay
as
close
to
the
JavaScript
stuff
as
possible
and
I'm
guessing.
We.
A
C
M
scripton
provides
just
like
with
sdl
and
glfw
and
a
few
other
things
they
provide.
They.
Let
you
we're
able
to
pee
invoke
into
a
web
GPU
header
that
is
supposedly
the
same
as
the
main
ones.
However,
it's
based
on
Dawn
and
it's
10
months
old
and
no
one's
touched
it,
but
you
theoretically,
if
we
were
to
try,
we
could
have
our
web
GPU
bindings
work
on
encryptum,
just
out
of
the
box.
C
All
the
existing
web
GPU
code
could
just
work,
but
in
practicality,
that's
not
going
to
work
because
the
the
header
is
Dawn
based
and
it's
old,
so
the
function
signatures
haven't
been
changed
like
not
even
that
long
ago
they
change
a
bunch
of
function,
signatures
and
the
types
of
some
enums
added
some
values.
So
it's
just
not
not
really
doable
right
now,
maybe
I'll
try
to
fix
that
myself.
C
B
A
C
B
C
D
Just
tell
me
if
I
started
lagging
okay,
because
I
can
hear
you
perfectly
your
whole
time.
It
just
needed,
like
I,
don't
know
yeah,
so
I
just
wanted
to
like
search
back
to
the
like
wrapper
thing,
because
I
know
we
had
like
a
decision
with
Thomas
about
this
before
that.
Like,
oh,
you
know,
GL
has
this
thing,
but
it's
just
like
a
unit,
and
we
all
just
pretend
this
makes
it
safer,
but
it
really
doesn't
but
I
think
for
apparently
web
GPU,
but
especially
for
Vulcan
I.
D
Think
there's
a
lot
of
value
in
making
these
Rippers
and
I
think
we
can
make
them
very,
like
icu's,
Without,
Really,
much
cost,
but
I
think
it's
better
to
essentially
all
the
types
then
like
doing
like
static
State,
because
I
think
the
cost
of
just
having
like
a
like.
D
You
just
like
have
a
mirror
of
all
the
things,
and
it's
like
you
know
it
just
like
it's
a
bit
of
a
cost
and
like
a
bit
of
a
Trader
versus
like
the
static
State
thing,
but
I
think
it
could
work
really
nicely
and
I
think
they
fall
like
woken,
which
is
inherently
very
weak.
Oriented
I
think
we
would
get
a
lot
of
value
out
of
it.
I
just
think
that
matching
these
functions
like
finding
the
right
functions
to
add,
is
very
difficult.
C
D
The
the
way
I
wanted
this
to
work
for
Vulcan
and
the
way
that,
like
the
like,
I
made
a
small
proof
of
concept
of
this
that,
like
kind
of
worked,
the
way
that
work
was
like
it's
a
it's
basically
like
a
recursive
thing
where,
for
example,
in
woken
all
of
the
methods
have
like
a
like.
D
The
president
is
just
an
instance,
and
then
it
would
like
find
all
of
those
make
them
into
like
the
instance
wrapper
like
you
know,
make
the
function
whatever
and
then
it
would
like
go
again
and
like
look
at
all
like
the
new
functions
and
the
remaining
like
all
functions
and
like
look
which
one
of
these
device
now
going
like
this
or
even
and
that
way
we
can
get
get
things
that
is
like
an
object
rated
from
another
object,
so,
for
example,
in
Vulcan.
D
This
is
like
super
common
to
have
like
a
device
function.
Numbers,
like
takes
the
instance,
the
first
perimeter,
and
then
the
device
is
like
after
those
two,
so
you
could
like
all
smash
that
and
it's
like,
but
that
way
it's
really
like
get
useful,
not
just
like
in
basically
you
and
drop
it
basically,
but.
D
C
For
web
GPU,
it's
a
lot
easier
because
they
don't
have
like
you,
don't
pass
instance
for
every
method.
The
instance
is
tied
inherently
to
the
device
object
itself.
It's
it's
its
internal
state
that
the
implementation
takes
care
of.
So
instead
of
passing
an
instance
then
device
you
just
pass
in
device
and
then
the
implementation
will
internally
take
care
of
finding
the
instance
of
doing
everything
to
see.
E
C
C
B
C
C
C
You
don't
have
to
create
a
wrapper
object.
You
don't
have
to
have
extra
methods
to
return,
exact
objects
or
you
don't
have
to
have
the
user
constructed
your
apologies
below
it.
Just
quote:
unquote
works.
You
can
directly
dereference
it
and
call
a
method
on
it.
You
don't
have
to
worry
about.
Oh,
is
this
object,
keeping
a
copy
of
my
w
of
my
web
GPU?
C
You
don't
have
to
worry
about
that.
It
just
kind
of
functions.
I
see,
yeah
I,
think
that
state
would
mean
that
you,
instead
of
having
to
worry
about
some
random
object,
you've
left
in
a
list.
C
You
forgot
to
clear,
holding
your
web
GPU
object
hostage
from
the
garbage
collector
I
think
having
it
as
a
single
static
object
that
the
user
has
to
explicitly
set
themselves
before
using
these
methods
would
mean
that
the
user
is
fully
aware
that
there
is
a
static
reference
to
this
object
and
it
will
not
get
cleared
by
the
garbage
collector
until
they
clear
the
static
reference.
I
think
that.
A
C
D
But
I
feel
like
this
is
just
like
there's
a
small
game
here
and
it
feels
more
magical,
but
I
feel
this
deviled
topics.
So
the
first
one
is
like.
Oh.
B
Yeah
I
suppose
dependent
handle
exists,
so
we
can
tell
the
GC
what
depends
on
what.
D
C
C
Compatibility
with
existing
code,
less
overloads
and
not
having
the
user
handle
this
checkbox
because
you
either
have
like
double
the
overloads
for
creating
these
wrapped
objects
or
you
have
the
user
have
to
construct
these
rap
documents,
which
is
why
that
the
strong
strong
type
Handles
in
opengl
are
not
too
helpful
is
because
the
user
has
to
explicitly
construct
them.
C
B
Yeah
I
think
I
think
the
way
I
feel
about
static
and
not
having
static
functions
was
something
that
where
silk
has
gone
against
pretty
much
every
other
binding
Library
out
there,
but
we
did
so
in
the
name
of
correctness.
For
example,
opengl
has
no
like
it.
The
the
function
addresses
are
dependent
on
the
context
in
which
the
GL
objects
is
created,
so
it
made
sense
for
it
to
be
an
instance
and
with
Vulcan
as
well.
B
We
have
the
VK
get
instance
process
address
and
the
get
device
proc
address,
which
obviously
you
think
the
for
Vulcan.
We
could
have,
like
the
create
instance,
function
as
a
static,
because
that
is
in
theory,
constant,
like
you
can't
you
can't
get
it.
You
can't
think
I
get
into
this
proc
address
of
VK,
create
instance,
because
in
order-
or
rather
you
can,
but
you
can't
having
an
instance
handle,
because
you
would
have
already
created
an
instance
at
that
point,
so
I
think
Vulcan.
B
We
could
have
one
static
function
being
great
instance
and
and
the
get
proc
address
for
get
instance
proc
address,
but
that's
literally
it.
C
What
it
meant,
I
didn't
mean
like
aesthetic
functions,
I
meant
here,
I'm.
C
C
B
C
D
It's
so
there's
so
little
benefit,
which
is
just
like
having
an
extra
type
like
you
get
this
like
extra,
like
confusing
error
when
you
initialize
it
wrongly,
like
this,
the
likelihood
of
someone
calling
this
function
not
realizing
they
have
to
like
set
the
instances.
So
big
and
I
mean
like
I.
Just
don't
really
see
it.
I
think
I.
Think
that,
like
having
a
proper
like
managed
object,
gives
us
this
and
like
and
more
I
mean
we
can
then
like
also
handle
like
destroying
your
object
again
using
this
pose.
D
We
can
like
there's
so
much
more.
We
can
do
if
we
make
like
a
proper
managed
object
and
like
having
the
static.
I.
Don't
know,
I
feel
like
having
a
static
field
is
like
already
pretty
bad
and
like
it
doesn't
really
give
us
anything.
So
I
feel
like
making
like
making
it
like.
A
proper
object
is
just
better.
C
A
lot
of
it
for
me
is
just
not
having
to
deal
with
the
proper
object,
because
that
that
has
to
come
with
some
compromise
either
we
double
the
amount
of
overloads
for
those
methods
which
overload
overload.
Explosion
is
already
a
quite
a
big
problem
with
silk,
like
I've
spent
like
an
hour
just
trying
to
get
a
single
method
to
be
happy
because
there's
like
50,
overloads
and
I
have
no
idea
what
it
wants.
C
Having
a
double
set
of
overloads,
not
probably
not
overloads
but
like
a
different
set
of
functions
with
a
different
name,
would
just
be
confusing,
but
we
can.
We
can
make
the
enre
a
bit
nicer
by
just
checking
at
the
start
of
the
method,
if
instance
is
null,
then
do
something
else
like
like
say:
Throw
exception.
C
You
cannot
use
the
dereference
overloads
unless
you
set
the
static
state
which
would
make
it
very
clear
what
you
have
to
do,
and
it
would.
It
would
remove
the
need
for
that
second
set
of
methods
that
Returns
the
wrapped
object
and
but
yeah
the
options
are
returning.
The
wrapped
object
directly
using
a
second
set
of
methods
or
having
the
user
construct
themselves,
so
we're
either
doubling
the
amount
of
functions
for
a
lot
of
a
lot
of
things
or
we're
having
the
user
Constructor
stuff,
which
is
the
main
thing
that
I
was
thinking
of.
D
I
I,
don't
know
how
bad
this
is
in
in
web
GPU,
but
I
would
so
for
me,
it's
like
in
in
Vulcan.
You
have
this
like
sort
of
tree
of
objects.
Anyways,
it's
like
you,
get
like
the
root
API
in
the
from
the
API.
You
make
an
instance
from
the
instance
you
maybe
make
like
a
couple
physical
devices.
Then
you
use
a
physical
device
to
make
like
a
logical
device
or
maybe
use
a
couple
to
make
with.
D
From
that,
you
like,
create
your
shaders
and
whatever
so
like
it's
just
sort
of
Trio
like
objects
right,
and
so
what
I
would
do
is
when
you
make
one
managed
object,
all
the
apis
that
you
call
Via.
This
managed
object
will,
in
turn,
automatically
return
more
managed
objects
that,
like
keep
the
references,
so
you
would
only
have
to
create
the
you
only
have
to
have
like
a
single
overload
wins
for
like
creating
the
instance
that
like
to
say
so.
D
It's
like,
oh
give
me
like
a
managed
instance,
this
time
or
like,
or
maybe
to
use
that
to
construct
themselves
like
once
and
then
all
the
API
usage
is
like,
after
that,
after,
like
the
point
where
they
created
themselves
or
like
they
get
it
from
like
it's
like
one
extra
function,
everything
after
that
is
like
automatically
managed
it's
like
that
also
well.
This
applies
to
work
here,
but.
C
C
See
what
we're
talking
about
that
would
also
apply
to
web
GPU,
but
one
thing
about
that
is
that
it's
not
the
the
two
sets
of
like
methods,
don't
really
interrupt
too
well.
Like
say
you
have
an
existing
web
GPU
code
base
and
you
want
to
migrate
from
the
old
non
non-special
overloads
way,
and
you
want
to
move
to
the
new
way
if
you
you
would
have
to.
If
you
want
to
properly
take
advantage
of
the
code.
Readability
Improvement
of
the
wrapper
objects.
C
You'd
have
to
restructure
all
of
your
code
to
properly
of
the
tree.
Yeah.
C
D
You
can
do
some
of
the
readability
because
you
have
to
construct
objects,
but
while
you
like,
pull
it
to
like
a
new
API
and
you
like
started
using
more
of
the
new
API
that,
like
boiler,
moves
up
more
and
more
until
eventually
that
I
put,
it
will
be
like
right
at
the
instance
where
it's
like
you
create
like
one
object
once
and
like
that's.
It's
right,
like
so
I
think
like
while
porting
it.
D
D
You
again,
where
you're
coming
from
I'm,
just
really
afraid
of
it's
like
having
a
study
Cube.
C
Yeah
having
to
be
static
is
like
a
big
downside,
because
then
the
user
isn't
in
full,
like
it
isn't
in
clear
full
control
of
the
the
view
of
the
object.
As
it's
now
I
I
checked
on
Sharp
lab
if
you
can
store
a
static
reference
to
an
object
instead,
but
it's
like
a
static
ref
on
a
reference
like
a
oh
yeah.
Yes
like
if
you
store
a
static
ref
like
inside
of
a
class,
can
you
store
a
public
static,
ref
of
a
class?
And
you
can't
unless
the
ref
struct.
E
C
D
I
mean
really
just
like
like
having
this
like
discussion
of
like
do.
We
want
to
like
have
this
like
static
state
that
we
like
store
to
make
things
a
little
easier,
I.
Think
that's
like
one
of
the,
like
main
asks
of
like
anyone
that
has
used
so,
but.
C
D
A
D
C
Most
projects
I've
seen
that
you
silk,
they
all
store
the
global
GL
object
or
the
global
VK
object.
They
all
store
that
globally
static.
It's
like
axis
of
everywhere,
because
it's
so
it's
just.
It
gets
annoying.
Sometimes
passing
around
the
general
object.
I
have.
D
Also
seen
quite
a
few
people
that
and
I
find
this
way.
Every
time
is,
do
you
have
like
your
engine
object
or
whatever,
like
I,
think
very
few
people
make
like
their
injured,
State
static,
I,
think
most
people
make
like
an
engine
object
or
something,
and
then
like
I,
always
just
stored
everything
in
there
and
then
passed
it
as
appropriate,
which.
D
Make
like
their
own
like
buffer
object,
which
then
like
stores
like
buffer,
handles
and
like
I,
think
that
would
work
quite
well
like
sort
of
what
I
was
trying
to
do
when
I
like
prototype
with
this
API
for
a
2.0,
was
like
mirroring
this,
like
object-oriented
approach
to
designing
like
the
engine,
but
maybe
make
it
like
sort
of
automatically
work.
C
Yeah,
it's
it
it's
tough
to
do
this
in
a
clean
in
like
a
in
a
truly
silky
smooth
way.
Both
ways
has
some
drawing,
but
yeah
I,
think
I.
Think
if
you
I
think
the
tree
approach
would
actually
be
better.
Yes,
I
I
feel
like.
Instead
of
storing
the
static
state
is
ugly
but
yeah.
I
I
feel
like
just
having
objects
and
just
that
that
transition
point
being
more
painful,
I
feel
like
yeah,
I
I
do
agree.
You
know
that
that
having
that
transition
point
be
more
painful
temporarily,
but
yeah.
D
C
Have
the
I
I
I've
looked
around
and
build
tools,
we
have
the
framework
in
place
to
make
this
relatively
simply
in
webview,
I
I'm,
not
versed
in
Vulcan.
It's
the
same.
It's
really
I'm
really
not
versed
in
Vulcan.
It's
there's
a
lot
more
stuff
to
take
into
account
because
it's
a
much
bigger,
API
too
web
GPU
is
like
I.
Think
it's
like
50
functions
or
something
it's
a
lot
simpler.
C
D
I
think
in
I
think
full
film
is
if
it
was
like
complexity,
it's
pretty
much
the
same.
The
only
editing
would
be
that
Volcan
has
extensions
such
as
Network
GPU
does
not
and
I'm.
C
Not
sure
it
does,
but
it
handles
it
slightly
differently.
Web
GPU
itself
does
not
have
the
same
concept
of
extensions,
there's
unofficial
Extensions
by
both
the
implementers
of
web
GPU,
but
those
aren't
true
standards,
but
there's
also
the
chaining
mechanism,
which
is
how
you're
supposed
to
do
extensions
in
web
GPU
by
chaining.
Multiple
objects
together
like,
for
example,
the
the
best
example
of
how
training
works
is
the
Shader
creation.
You
have
a
Shader
module
descriptor
and
that
points
to
either
a
wgsl
descriptor
or
it
can
also
point
to
a
sphere
V
descriptor.
C
Let's
see,
and
those
are
both
just
cast
down,
it's
like
S-Type
those
trucks
have
an
S-Type
and
the
main
Shader
module
scripter
points
to
one
of
those
chain.
Structs.
That's
how
you're
supposed
to
do
extensions
in
web
GPU,
but
that
only
but
in
the
in
the
in
context
of
native
that,
that's
not
how
most
people
do
it
most.
D
Yeah
I,
don't
know
I
mean
like
for
extensions,
I,
think
this
ties
into
I
think
the
other
like
big
features
of
B
flat,
pretty
friendly
land
for
3.0,
and
we
just
like
to
interfaces
yeah
I
think
that's
like,
but
yeah,
but.
D
How
I
was
like
planning
to
handle
extensions
in
my
3.0,
which,
like
then
also
with
the
Menace
wrappers
thing
because,
like
you
could
have
like
for
every
Ascension?
It
would
be
like
an
interface
it
like
says.
B
D
B
D
C
I
I
think
I
think
for
web
GPU
it'd
be
a
relatively
simple
change,
relatively
I
mean,
but
for
Vulcan
it's
gonna
be
a
lot
more
work
because
I'm
assuming
there's
also
a
lot
more
different
types
of
things
in
Vulcan,
and
that
tree
is
probably
a
lot
more
complex
because
I
think
in
web
GPU.
The
tree
only
gets
like
four
objects:
deep
Max
I
think
the
deepest.
It
goes
with
texture
view,
texture
device,
adapter
instance,
I
think
I
think
that's
the
deepest.
It
goes
in
web
GPU,
but
I'm
assuming
in
Vulcan.
C
It
can
go
a
lot
deeper.
So
it's
going
to
be
a
lot
more,
a
lot
more
to
take
into
account,
but
yeah
I
think
I.
Think
as
like
a
first
pilot
implementation,
it's
gonna,
I'm
gonna,
do
it
as
just
web
GPU
just
to
get
something
down
and
something
functional
and
yeah.
When
I
do
try.
This
I
am
going
to
attempt
to
have
just
a
an
extra
function,
for
instance,
which
are
terms
of
managed
instance,
and
that's
a
wrapper
object.
C
E
Know
how
I
feel
about
automatic
disposal
on
the
main
thing?
That's
iffy,
because
if
someone
pulls
out
the,
if
someone
pulls
out
the
wrong
object
and
just
gets.
C
D
I
mean
yes,
you
could
also
shoot
yourself
in
the
food
with
with
this
both
but
like
you're.
C
Bad
yeah
web
GPU
how
how
at
least
have
wgpu
or
no
no
but
both
Google
and
Mozilla,
do
it.
When
you
delete
an
object,
it
does
not
actually
delete
the
object
until
everything's
done.
You
cannot
delete
an
object
and
cause
a
problem
of
it's
still
in
use
in
the
frame.
If
you
draw
with
the
texture
and
then
delete
the
texture,
it
doesn't
actually
remove
the
texture
from
memory
until
after
the
frame
is
not
rendering
so
I
think
I
think
it's
less
of
a
problem
with
web
GPU,
but
I.
C
C
C
Because
if
it
doesn't
shoot
you
in
the
foot-
and
it
does
just
keep
it
internally
until
it's
done
being
used,
I
believe
that's
a
failure.
Okay,
in
that
case,
yeah
other
undefined
yeah.
In
that
case,
we
probably
shouldn't.
Have
it
automatically
disposed
for
web
GPU
would
be
fine,
but
not
for
Vulcan
and
I'd,
rather
keep
the
logic
or
I
I
keep
I
want
to
keep
the
behavior
the
same
between
web
GPU
and
Vulcan
for
this
because
I'd,
rather
it
not
be
okay,
it
disposes
automatically
on
webjp,
but
not
on
open
I'd,
rather
not
do.
E
B
C
C
Writer
has
a
pattern
for
automatically
generating
this
kind
of
thing
where
it
will
it'll
create
like
it
is
disposed.
Oh
yeah,
yeah.
C
Gpu
wrap
the
wrapper
object
itself
will
in
the
destructor,
we'll
call
suppose
if
it's
not
already
been
called
writer.
Has
this
like
remove
unmanaged
resources
thing
or
whatever
that
it
does,
when
you
like,
generate
High
disposable
patterns
but
yeah
that
that
that
that's
what
I?
Since
it
says
it's
undefined
in
Vulcan,
I,
I,
I'm
gonna,
avoid
that
and
just
have
disposal
is
manually.
But
you
have
a
knife:
stop
dispose
function,
honest
random
images,
as
there
is
a
values
of
API
if
all
commands
are
for
them
exactly.
Okay,
yeah!
C
Thank
you.
So
in
that
case
it
will
not
be
automatic
because
it
is
too
easy
to
accidentally
shoot
yourself
in
the
foot
by
just
pulling
a
method
of
them
up
then
letting
the
object
die
too
soon,
because
if
the
garbage
collector
calls
at
the
wrong
time,
then
you're
screwed
up
possibly
the
manage
chain
apis
kind
of
Vulcan
you'd,
have
to
ask
perks
your
Kai
I,
don't
actually
know.
B
How
yeah
I
think
I
think
I
think
Sarge
and
I
discussed
this
and
we
couldn't
really
make
it
generic,
or
rather
it
it
is
built
on
top
of
a
structure,
type
type
which
only
exists
in
Vulcan
or
open
XR
or
web
GPU.
B
So
we
given
that
at
the
time
it
was
only
Vulcan
and
open
XR
that
would
ever
have
chaining
it.
We
just
decided
yeah
if
we
want
it
we'll
copy
and
paste
it,
and
we
couldn't
Dairy
copy
and
paste
it
into
web
GPU,
although
I
don't
think
they're
enough.
In
fact,
no
we
couldn't,
because
we
don't
have
any
information
as
to
what
change
to
what
like
we
do
in
the
Vulcan
spec.
You
don't
work,
pixel
specs.
B
C
Just
a
pointer
cast,
there's
no
information,
no,
like
Don,
has
a
file
which
generates
their
header.
It's
a
it's
a
big
old
Json
blob,
but
that
doesn't
impressive
information.
It's
literally
just
the
structs
the
names
and
you
even
have
to
mingle
the
names
yourself
into
the
proper
like
names.
It's
so
that's
it's!
Sadly,
there
just
isn't
enough
information
provided
to
us
by
the
header
to
know
what
chains
go
where
there's
not
like:
it's,
not
even
a
naming
convention
for
it
I,
don't
think
I
believe
I've
seen
naming
so
it's
it's
a
nightmare.
C
It's
a
nightmare,
see
I
I,
don't
think
it'd
be
possible
to
move
the
trucks.
The
Struck
Chuck
struck
chaining
mechanism
into
a
GPU,
but
chaining
is
in
the
average
application
you're
going
to
use
chaining
once
and
it's
going
to
be
when
you
create
your
shaders
and
you're,
going
to
write
that
code
once
and
never
touch
it
again.
So
it's
not
without
a
real
problem,
but
in
Vulcan
I'm
assuming
chaining
is
a
common
thing.
C
Yes,
yes,
web
gpus,
like
that
too,
everything
starts
with
the
pnext.
However,
we
don't
know
at
at
generation
time,
which
ones
are
valid
like
we
like
like
for
an
example
of
the
Shader
module.
We
don't
know
a
generation
time
that
the
only
chains
that
are
valid
are
WG
cell
descriptor
or
spear
V
descriptor.
All
we
know
is
that
any
void
star
object
can
go
there.
I
guess
I
think
it's
actually
a
wgpu
like
chain,
Struck
it
or
something
I,
don't
think
it's
actually
avoid
starting.
It's
a
chain
struck
star,
but
yeah
I.
C
C
But
yeah
I
think
I,
think
I
think
just
just
having
the
wrapper
Optics
would
be
a
big
boost
to
readability.
B
Yeah
all
right,
well,
I,
think
there's
been
a
lot
of
great
discussion
after
all
the
off-topicness
at
the
start,
but
should
probably
wrap
this
up.
We've
been
well,
we've
been
live
for
over
100
minutes
now
so
yeah.
Thank
you.
Thank
you
both
for
coming.
It's
it's
good.
As
always,
it
is
very
nice
to
do
these
streams.
Whatever
you've
got.
B
E
B
Oh
well,
I
shall
I
should
see
what
the
the
next
stream
then
thank
you
both
for
coming,
see.