LAURENCE MORONEY: Welcome to the Googleplex.
This is an incredible place with lots of great stuff being
worked on every single day.
Before I worked here, I always wondered
what it would be like to come to the Googleplex,
meet up with a Googler, and have coffee with them
and just chat about what they do, how they do it,
and why they do it.
And today, We're going to do exactly that.
Welcome to this episode of "Coffee With a Googler."
And if you, like me, love games and love
3D games and all that kind of stuff,
then this show should be a treat for you
because today I'm chatting with Shannon Woods, who's
a technical program manager.
And she works on our rendering teams at Google.
And she's got lots of great stuff
to talk about in the 3D space.
So welcome, Shannon.
How are you?
SHANNON WOODS: I'm doing all right.
How are you?
LAURENCE MORONEY: Really good.
I have to say, I'm really envious of your job.
Could you us what you do?
SHANNON WOODS: So I work with a couple of rendering teams here
at Google, both Android and Chrome.
And we sort of plumb code from user space down to your GPU.
LAURENCE MORONEY: Wow.
Can you translate that?
SHANNON WOODS: Basically, our job
is to get a bunch of triangles from applications
down to the GPU as fast as possible.
LAURENCE MORONEY: Cool.
And all graphics are ultimately made up of triangles, right?
SHANNON WOODS: Basically.
LAURENCE MORONEY: Now recently, you announced Vulcan.
And this is this new and improved 3D rendering API.
Could you tell us a bit about it?
SHANNON WOODS: Historically, Android and all mobile phones
really have used OpenGL ES to communicate to the GPU
within the phone to tell it how to draw scenes.
But unfortunately, over time, the API
has become less and less of a good match
for what the hardware's actually doing beneath.
So what would happen is you would
use this API to communicate a lot of the details
about your scene.
And the GPU has to reorganize all of that
so that it can consume it efficiently
and draw it on the screen.
So what Vulcan is-- it's another API
from the same open standards group that makes OpenGL.
And it's designed to be a lot closer to what
the hardware actually does beneath the covers.
So if you provide the data via Vulcan,
it should be able to draw a lot quicker.
Sort of the flip side of that is that it gives you
all of this control.
But it means that you have to be pretty good at making sure
that your code is doing exactly what you wanted it to do.
LAURENCE MORONEY: Vulcan and OpenGL ES
are both from the same standards body, right?
SHANNON WOODS: Yes.
LAURENCE MORONEY: So that's "Khronas"?
SHANNON WOODS: Yes.
Khronos.
LAURENCE MORONEY: Khronos, sorry.
So you work with the standards body at Khronos?
SHANNON WOODS: I do.
I get to travel all around the world
and see beautiful conference rooms.
But it's actually really interesting
getting to see how the API is made from the ground up.
LAURENCE MORONEY: Cool.
SHANNON WOODS: Android is going to support both OpenGL ES
and Vulcan.
So developers can choose which API
is right for what they're doing, like if they
need to render a FPS game, a first person shooting game that
has to run really fast at a high frame rate, then they're
going to probably want to choose Vulcan so that they can closely
control exactly what's being drawn and when.
LAURENCE MORONEY: Cool.
SHANNON WOODS: But if they just want
to get a couple of shapes onscreen,
then OpenGL ES is probably still the right choice for them.
LAURENCE MORONEY: Cool, cool.
So it's just really nice to have both.
SHANNON WOODS: Yes.
LAURENCE MORONEY: Cool.
And from my understanding, you were saying with Vulcan,
just being able to get down to the chipset level
effectively allows you to squeeze a lot more performance
out of the machine.
SHANNON WOODS: Yeah, it does.
And one of the other things that it does
is that it allows for greater parallelization.
There's a lot of work in OpenGL ES that it's blocking work.
You make a call into OpenGL ES, into the driver code,
and it has to stop and perform the task
that you asked it to do and doesn't return control
to the application until it finishes that task.
And what this means is that if you have multiple threads,
only one of them can really be talking to the driver,
doing these things at the same time.
Vulcan is designed more for multi-threaded applications
so that you can have multiple threads doing things
like constructing buffers full of commands at the same time.
LAURENCE MORONEY: You're getting onto, like,
programming and skills.
And from a skills perspective, are there
things that developers will need to learn
that they don't do already, for example,
if they're doing 3D games in OpenGL ES?
SHANNON WOODS: So the skill sets are
going to be largely the same.
As a Vulcan developer, you're going
to have to have probably a tighter handle on things
like synchronization, careful tracking of memory allocation
because a lot less of that is going to be
done for you by the driver.
The upside of this is that the driver
won't be doing these things when you don't expect it to.
But you're going to have to really hone
your skills at things like multi-threaded synchronization,
memory allocation, make sure that you are closely keeping
an eye on what your code is doing
and what it's asking the GPU to do
because the driver is going to do a whole lot less of that
for you.
It's not going to clean up after you.
It's not going to check that you're making legal calls.
So you're basically going to have to be a bit of a ninja.
LAURENCE MORONEY: It's almost like driving stick
versus driving manual, right?
SHANNON WOODS: That's probably a really good analogy.
LAURENCE MORONEY: So people can learn about Vulcan
on the Khronos site?
SHANNON WOODS: Yes.
LAURENCE MORONEY: So that's khronos.org or--
SHANNON WOODS: Khronos.org.
www.khronos.org.
And Khronos is spelled K-H-R-O-N-O-S.
And they have a Vulcan landing page,
where you can find the latest news about Vulcan and also see
some of the presentations that were given, for example,
at SIGGRAPH this year and at GDC about the shape of the API.
LAURENCE MORONEY: OK.
Now you were at SIGGRAPH, right?
SHANNON WOODS: I was SIGGRAPH.
LAURENCE MORONEY: How did it go?
SHANNON WOODS: It was a lot of fun actually.
We did some demos, showed some spinning teapots.
LAURENCE MORONEY: Teapots?
SHANNON WOODS: So there's a little bit
of history behind the teapot.
The teapot is canonically called the Utah teapot.
And it's because way back in the history of computer graphics,
it's one of the first models that was digitized and shared.
And interestingly, so the teapot everybody
knows, that they've seen here and there over the years-- it
looks short and squat.
But the reason for that is actually
that on the original display system,
the pixels were not square.
So they had a different--
LAURENCE MORONEY: The tiny little ones from TVs?
SHANNON WOODS: Yeah, the aspect ratio
was a little bit different.
So in real life, the teapot's actually a little taller.
LAURENCE MORONEY: Now you're saying
that the pixels are elongated?
They were rectangular pixels because this
was done so long ago?
SHANNON WOODS: Oh, yeah.
It was-- oh, gosh.
I guess it was the '70s.
LAURENCE MORONEY: Wow.
So the first 3D model that was formed in cyberspace
or whatever you want to call it back in the '70s.
And you're still using the same model today
to-- I think Pixar also use the teapot, don't they?
SHANNON WOODS: Yeah.
Actually, the teapot appears in every Pixar film.
And one of the ones I know off the top of my head
is-- they use it in the tea party scene in "Toy Story."
LAURENCE MORONEY: OK.
Naturally, that's where a teapot would fit.
SHANNON WOODS: Yeah.
But there's one in every Pixar film.
LAURENCE MORONEY: Thank you so much, Shannon.
SHANNON WOODS: Thank you.
LAURENCE MORONEY: And thanks, everybody,
for watching this episode of "Coffee With a Googler."
I don't know about you, but I've learned a lot
about the kind of things that can be done with 3D graphics.
And I'm really, really excited about Vulcan coming to Android.
If you've got any questions for me,
or if you've got any questions for Shannon,
just please leave them in the comments below.
We'll also link to the websites in the description
of this video so that you can follow those links.
And if you want to learn anything else about great stuff
that Google has to offer for Android
developers, Chrome developers, and everybody else,
please subscribe to the Google Developers channel.
Thank you.
[MUSIC PLAYING]