Deep State – A slack bot for dystopian and immutable organizations - <AUTHOR> https://deepstate.actor/ <comment><USER2> I participated (mostly lurked) on the -offtopic of a niche IRC channel which had developed the most fascinating culture I have ever encountered anywhere, on the Internet or in person. This channel had developed a governance model based heavily on English Socialism (as seen in Orwell's _1984_ ). Over time, a hundred-some-odd-section rulebook had been formed, with rules ranging from "no nick-spam" to "UTF-8 is the one true encoding" to "all rules currently in effect have always been in effect;" this last in particular resulted in people suddenly not talking about any past violations of a rule after the rule was put into place.

A dystopian chatroom is an extraordinarily odd place.</comment>


The Intel 80386, part 12: The stuff you don't need to know - <AUTHOR> https://blogs.msdn.microsoft.com/oldnewthing/20190205-00/?p=100865 <comment><USER2> Raymond Chen always writes the neatest shit.</comment>


The electric car as a talisman of false hope - <AUTHOR> https://www.jussipasanen.com/electric-cars-promise-change-without-changing/ <comment><USER3> His argument distills to: solve it all-at-once, or don't solve it at all.

This is an uninteresting and uninspiring line of thinking that ignores the nature of socially dynamic systems which don't exist in a world of instantaneous cause-and-effect.

His conclusion states that electric cars make a difference, but they don't make a _real_ difference: "I do think they can slightly reduce unsustainability" but "by switching from a regular car to electric I might think that I am making a real difference".

I'm sorry that the author doesn't consider a _real_ reduction in emissions a _real_ difference.

Look, it's simple, climate change will require a concerted effort to change in multiple markets across multiple arenas. And the solutions are not mutually exclusive. People that buy electric cars to help the environment or become vegetarian, are probably _more_ likely to make additional changes in their life, and persuade others to make changes as well, to reduce emissions.

Most people arrive at the decision to purchase an electric vehicle exactly because they are questioning their way of life. Electric vehicles are not a talisman of false hope, they're a singular step in the right direction.

<comment><USER4> The argument isn't that doing _something_ is bad, it's that the amount of effort people put into obtaining their shiny non-paleolithic-compost-fueled- but-rather-battery-powered 2 tonne sledgehammers would be better spent changing policies that operate on organizational rather than individual units. How about we just stop buying as much shit from halfway across the world? Global trade requires us to spend stupid amounts of fuel in engines that have never been optimized for emissions. This of course involves making changes to global trade, this is a lot harder, but surely all those people who are capable of shelling out at least 30000$ (but in reality, barely anyone gets the cheapest model because this is a luxury item) could be doing things that make a bigger difference.

<comment> Al-Khwarizmi This is a textbook example of false dilemma fallacy. Replacing ICE cars with electric cars doesn't preclude other environmental measures, and in fact, people who worry about their car's emissions tend to be people who worry about other environmental issues as well.

<comment><USER5> ..it surely precludes the environmental measure of not having a car.

<comment><USER6> And what exactly is that impact? The author never specified; just asserted "cars are bad because reasons" and left it at that.

</comment></comment></comment></comment></comment><comment><USER7> Alot about our system of roads and cars strikes me as crazy. Most of the vehicles on the road have only one person in them, yet weigh as much as an elephant. Nobody drives under the speed limit, which is typically fast enough to result in hundreds of thousands of fatalities every year anyways. Every neighborhood designed primarily for these idiotically heavy vehicles, that occasionally drive over pets and children who made the mistake of wandering off a footpath. Then there's the pollution, of course. I can't imagine many people would accept the way we do things today, if we started from zero and someone proposed it, instead of the situation slow-boiling us over a period of a half century.

<comment><USER8> The worst part about it IMO is traffic light and stops. In a city, if you can drive around 20mph (25 maybe) uninterrupted, you get in most places very fast, very pleasantly and with fuel savings since you never slow down.

Instead of a smooth flow, you get drivers that do:

        - high accelerations
        - nervous braking
        - idle engine running between 30 - 60 seconds (120 max?)

Pure waste.

Maybe I'm asking for a problem too complex to solve, but a smooth oriented traffic organization would help. Well, that is until fossil fuels are removed from the market.

<comment><USER9> > high accelerations

Acceleration does not waste energy (other than speed related things like wind resistance). This is a myth that is perpetuated without merit, but probably because it's typically associated with overall aggressive driving, which implies bad braking habits.

Max efficiency is typically near peak torque for internal combustion engines [0]. For EV's, electric motors are actually most efficient at higher RPMs [1].

Fuel efficiency can be measured by breaking habits alone.

Edit: sources:

[0] [https://i.stack.imgur.com/RE4SM.png](https://i.stack.imgur.com/RE4SM.png)

[1] [https://qph.fs.quoracdn.net/main-qimg- fcf541de83bd871b9ba92d...](https://qph.fs.quoracdn.net/main-qimg- fcf541de83bd871b9ba92ddf643fb09c)

<comment><USER8> true, but I'd bet a 100$ that people accelerating too fast do speed too long and brake too much..

<comment><USER10> I gun the shit out of my Tesla at a green light, but look far ahead and slowly ease to a stop using regen braking only. Regen braking and one pedal driving is a nice incentive to not waste energy with brakes, and as EV's become more popular, I bet driving habits will become more efficient generally across the board.

<comment><USER9> Just curious, do you have stats on your watts per mile efficiency you can share? How it compares to the EPA estimates?

<comment><USER10> 244 Wh/mi over 17,000 miles in a Model 3 LR. That's really close to the rated 310 miles for the 75 kw battery. The vast majority of my miles are driving 72 mph on the freeway.

</comment></comment></comment></comment></comment></comment></comment><comment><USER11> Seems to me a lot of people are so attached to carculture that they can't even read the article properly.

The author sees all sorts of good things about electric cars. I drive them myself. I love cars. But...

The points the article makes about cars being part of a larger flawed system of urban and rural development are spot on.

'Self-driving' cars will only make this worse.

Even just the excessive prevalence of hard-top surfaces in roads and parking lots leads to environmental catastrophe when flooding begins.

Urban sprawl leads to farmland and natural area destruction.

The car is the ultimate symbol of entitled consumerist individualism, and it is becoming more and more unsustainable.

The net effect of every household being in car(s) with a population as big as we have is really bad, even if all emissions were to be eliminated.

If all the private investment money being dumped into self-driving technology at the moment were public money being put into urban mass transit, just think of what could be accomplished...

<comment><USER12> urban mass transit is never used by the wealthy. the last thing people with ill gotten gains want to do is to be around others who can identify them and see with their own eyes how much they've stolen. and they don't want to be around their own kind as there's no honor amongst thieves.

<comment><USER13> Senators use the DC Metro and Stock Market traders in NYC use their subway.

Big Subway systems in big cities are pretty famous for seeing executives in suits and celebrities sit in the same bus as beggars.

> ill gotten gains

That's... quite an assumption you're making there. Sure, some execs are assholes. But most true wealth is driven through cooperation.

<comment><USER14> I think he's making the morally dubious jump to say that corporate profits are immoral.

<comment><USER12> nothing wrong with corporate profits. the problem lies when a corporation is being used as a money laundering and tax evasion scheme. and a boogie man that wealthy people hide behind.

</comment></comment></comment></comment></comment><comment><USER15> Electric vehicles would make a huge difference to me and many others that suffer from asthma.

Moving the emissions away from the vehicles , away from city centres and roads to the factories and power stations where they can be controlled would save thousands of lives.

Our children will look at us how we look at people during the industrial revolution. And a gradual change is better than no change at all.

<comment><USER16> Exhaust emissions are only part of the air pollution problem - brake discs and tyres contribute around 50%, as I recall.

Depressing! But we need lighter vehicles all round, and less travelling in general.

<comment><USER17> >brake discs

Regenerative braking does not have this problem. Although the tyre problem remain.

<comment><USER18> Tires are a far more significant pollution source than brakes.

<comment><USER19> But still a far less significant pollution source than diesel (especially) and gas exhaust.

</comment></comment></comment></comment></comment><comment><USER20> > To have any chance of slowing down climate breakdown rather than > accelerating it further, we need to change our entire way of life...

I agree with him. And that's why I keep saying that global warming is here to stay. We had better to learn to cope with it rather than hoping it can be reversed!

<comment><USER21> We're going to have to reverse it at some point. If we keep accelerating it there won't be any learning to live with it.

<comment><USER16> It's self limiting, with an attenuation in global population once a threshold is reached. I suspect we'll never reach a point where humanity disappears entirely - they'll just hang out in higher altitudes and latitudes.

</comment></comment></comment><comment><USER22> Honestly, I hope electric cars become commonplace just because of the reduction in noise pollution let alone PM and CO2 emissions.

Furthermore, I'm not really sure what the author thinks we should do? How can we maintain modern civilisation without factories etc.? Reverting to some primitive state seems neither realistic nor desirable.

<comment><USER23> You are in for a cold shower. Above 35 km/h (~22 mph) tire noise becomes the dominant factor. Besides, a large part of a modern vehicle's engine noise is designed. Some cars even go as far as play engine noises through added speakers.

<comment><USER24> Source? Does this hold true for diesel trucks and buses and garbage trucks which are very common in cities?

<comment><USER25> > Does this hold true for diesel trucks and buses and garbage trucks which are > very common in cities?

I know from the hybrid buses in Boston that they are a massive reduction in noise for the passengers. When you're at a stop, it is great to not have that engine idling. Electric will only be better in that regard.

The garbage trucks though seem to make a shit load of brake noise though. And noise from trash dumping on top of trash and being compacted.

<comment> concert-gilled Won't electric trucks use regenerative braking?

</comment></comment></comment></comment></comment><comment><USER26> The author has a point.

Out of all the other industries dominated by massive corporations - and we know how they go about doing business - the first priority to save the planet is for John Doe to buy a new product! Also, let's create a culture where we feel justified to shame people who don't do it.

Of course nothing is black and white. I love electric cars and will probably get one. I think they're really cool and would love to do my bit in keeping things green.

BUT at the same, you got to see a bit of irony in the whole thing don't you?

</comment><comment><USER27> Are there examples of societies radically changing their lifestyles in order to prevent a disaster?

<comment><USER28> We managed to stop using freon, thereby rescuing outselves from ozone depletion.

[https://www.nationalgeographic.com/news/2010/5/100505-scienc...](https://www.nationalgeographic.com/news/2010/5/100505-science- environment-ozone-hole-25-years/)

<comment><USER29> That did not require a change in lifestyle. Substitutes were found for all freon applications.

</comment></comment></comment><comment><USER30> I bought my EV for three reasons:

1\. Traditional car maintenance is expensive and sucks

2\. I'm betting due to natural disasters in the environment and in the Oval Office we will see fuel prices continue to rise

3\. While I don't think it will save the planet by itself, it can certainly save lives. Emissions are dangerous to breathe in and we are willfully ignoring it.

<comment><USER31> And the energy comes without emissions? :)

<comment><USER9> Depends on where you live. In West Virginia? No, it's almost all coal based.

In Vermont? Yes, their grid is 100% renewable.

Source: [https://afdc.energy.gov/vehicles/electric_emissions.html](https://afdc.energy.gov/vehicles/electric_emissions.html)

</comment></comment></comment><comment><USER32> Two me, reading the graph in the article brings up two priorities:

1: transition to renewable energy

2: figure out how to lower the carbon emissions during

1&2 sound a _lot_ easier than completely transitioning off motorized personal transportation.

#2 can be done with appropriate government incentives, like a $100/ton carbon tax + equivalent tariff. Producers will use alternate energy sources and otherwise eliminate carbon wherever it costs them less than $100/ton to do so, and the $100 can pay for sequestration when it costs them more.

Of course #2 will significantly increase the price of a car. This will also help to convince people to use alternatives. But cars will still be significantly cheaper than they are in Denmark or Norway, yet those two countries are still fairly car oriented.

<comment><USER33> Low carbon energy! The article listed pure renewable energy but if it was biofuel, emissions would be high. We must stop talking about renewability and focus on sustainable, low-carbon energy. They are not the same.

Further example: nuclear fusion is low carbon and sustainable but not considered renewable. If we charged EVs with nuclear fusion power stations, we'd all be happy.

</comment></comment><comment><USER34> The charts on the page directly contradict the headline.

In the renewable energy case emissions are miniscule, and in fact only come about because the chart assumes large emissions during manufacture - a lot of the processes involved in producing an EV could be done with renewable energy, and would be if we instituted a carbon tax or otherwise forced the issue.

</comment><comment><USER35> Electric vehicles are ranking number 26 in terms of total cost and total atmospheric reduction of CO2:

[https://www.drawdown.org/solutions-summary-by- rank](https://www.drawdown.org/solutions-summary-by-rank)

So its not a talisman, but it is certainly a real step in the right direction. I don't hear anybody saying that electric cars means we can just forget about the other causes of climate change?

A very contrarian article that just argues against a straw man. I suspect people who write articles like this are usually the ones who revel in being smarter than everybody else.

</comment><comment><USER16> We could for example:

1\. Incentivise retrofitting of electric transmissions to cars with internal combustion engines

2\. Disincentivise the introduction of new models, visual updates etc. to existing cars via taxation

3\. Incentivise durability and repairability - force car makers to produce cars that are modular and easily repaired, enforced limits on pricing of spare parts, force open-sourcing of designs etc.

Of course all of above would likely smash the car makers' current business model to pieces - and when you get down to it this is the real problem with the kind of genuine, general change we need to see in order to save the Earth.

Sustainable approaches simply will not deliver the kind of reduction in consumption required. Everyone is going to have to accept a much poorer lifestyle. The main blocker to me is the rich: how are they going to justify their continued opulence when the companies they own (are forced to) produce so little for the average person?

<comment><USER36> > Incentivise retrofitting of electric transmissions to cars with internal > combustion engines

What would that do to help? Modern transmissions are fairly efficient (basically anything with a lockup torque converter is now very good and any manual or computer controlled manual transmission is excellent in terms of efficiency). I can't see what an electronic transmission on an ICE engine would do that would possibly pay back.

<comment><USER16> Removal of the ICE in favour of electric I meant, in case I wasn't clear. Massive amounts of power etc. are required to produce the chassis, bodywork etc. - it makes sense to get a lifetime's use out of them rather than throw away the whole thing just because the ICE has gone out of fashion.

<comment><USER36> Ok. The transmission is a very specific (and overly specific for your intended meaning) assembly, so it was indeed not clear.

<comment><USER16> I apologise :)

</comment></comment></comment></comment></comment><comment><USER37> Looking at other articles the guy seems to be full in apocalyptic thinking - <USER2> few in he has an article on "Collapse" and lifeboat thinking. Those are words are downright toxic meme symptoms referring to paranoid and evil ideologirs respectively. They are like referring to science based medicine as "alleopathic" is a sure sign that they are off the deep ene in alternative medicine.

To explain "collapse" briefly there is even a /r/Collapse convinced of coming doomsdays from various sources from any fear de jure from ebola, economic meltdowns, or global warming.

"Lifeboat ethics" refers to a rehash of Malthusians and Eugenicists arguing helping people who are worse off is actively immoral and rapidly justifies travesties. There is a reason I skip straight to evil when describing them - when in power their actions can have no other end.

</comment><comment><USER38> One of the things I like to do when half in the bag in a bar and blagging to a new friend is to say,

"Look - pick a direction - any direction - and tell me what you see."

And what they see is plastic and metal and bar bottles with paint on them and more plastic and all the detritus of human society.

And every piece of it, as far as the eye can see!, will be garbage in 6 months to 20 years and sit on the ground and leech poisons into the Earth and nothing will grow from it.

Every.

Single.

Piece.

We, as human beans, have broken the cycle of life and death where something grows, flowers, dies, rots and something else grows and flowers. This idea that we can make a new shiny thing that will become more garbage to fix all our problems so we can keep eating more isn't going to change that.

The solution is that we simply have to do with less. And people will kill each other before they admit that.

It's already starting to happen now.

</comment><comment><USER39> From my European perspective, this reads like a typical leftist pov. First of all, _of course_ everyone has to change their way of living. This has been the corner Stone of left ideology since forever.

And then _of course_ the attack on EV, because it is not about the climate, but about individuality. Individual travel simply does not fit into a world view where everyone has to change their way of living into _the_ rational way. And offering a different solution is heresy.

</comment><comment><USER40> Why is the embodied carbon in the manufacture of the car the same in all the energy mix scenarios? Surely quite a lot of electricity is used in manufacturing electric vehicles.

Also, solutions that rely on substantially reconfiguring living patterns - moving from driving-required suburbs to walkable communities also have large embodied carbon costs. It's all well and good to say that suburbs are energy inefficient but the US has a lot of them already built.

<comment><USER41> > solutions that rely on substantially reconfiguring living patterns

Surely switching to bikes or electric bikes is not that substantial and immediately eliminates a lot of car related problems.

<comment><USER40> Sure but there are many houses that are surrounded by just more houses for many, many kilometres with the nearest concentration of offices and other places of work, stores, and transport hubs (if there even are any) very substantial distances away. It's challenging to increase cycling when that is the case.

</comment></comment></comment><comment><USER42> We can imagine that the energy mix in EU will lean towards more renewable energy, increasing the benefit of electric cars over conventional cars. If indeed not decreasing yet, the number of cars sold seems to flatten and I can see that Europeans cities are transforming to make life more complicated for cars owners (ie LEZ tax in London) and easier for pedestrians and bikes. Several reasons to be optimistic.

</comment><comment><USER43> reminds me of slavoj zizek's point of how corporations use problems caused by consumption and come up with a solution that increases consumption, like the "2% of profits goes towards planting trees" type of scenario

</comment><comment><USER44> The numbers are somewhat contested. See potholer54's well-sourced video: [https://www.youtube.com/watch?v=hwMPFDqyfrA](https://www.youtube.com/watch?v=hwMPFDqyfrA) He cites ghg savings of about 20-30% for a common mix of electricity production sources.

Of course, Jussi Pasanen is still completely right. The only solution is to stop driving cars.

<comment><USER45> Fine. Which rural neighborhood do we nuke first ?

Big cities can definitely phase cars put, and should electrify their public transportations for the people who can't bike.

Some form of "small number of passengers, not short but not long range" trips are going to have to be done ouside of cities, unless you displace people.

If "displacing people to cities" is your advocated policy, or "preventing people from traveling _at all_ ", that's a legitimate point to argue, but be prepared for fierce resistance from well meaning people (who're not going to massively vote for you...)

</comment></comment><comment><USER46> Electric batteries gives the most effect in shared transport such as buses and taxis. If I remember correctly it's 50x more efficient with batteries in such public vehicles. This is due to higher utilization they buses drive all day vs private cars mostly are parked.

This we should electrify public transport first for maximum carbon reduction.

<comment><USER23> Smart Grids touted as 'the future' in the energy distribution sector are counting on all those parked batteries for their network balance.

</comment></comment><comment><USER24> "Still, in most cases an electric car is slightly less bad for the living planet than a comparable car with an internal combustion engine – if you can afford to buy one."

Bad article all around. There is bias in that statement alone referencing the price of EV's after an admission that they are actually better for the environment already. This article also references almost every negative trope about BEV's.

What many of these articles fail to explore is any future advancements in technology that can solve some of the issues listed. Nothing in BEV technology is static, almost everything is improving from motor efficiency all the way to removing things like cobalt from batteries. It's also possible that we will see a lot more localized solar and wind power for charging stations over time.

Lastly, autonomy is coming which will be a game changer when paired with BEV technology.

</comment><comment><USER47> I have an electric car because it lets me get in the carpool lane. I understand that investing the delta between an electric car and an ICE into some sort of carbon capture technology would likely be better for the environment, but then I wouldn't be home for dinner 15min earlier.

</comment><comment><USER48> It's much more impactful for the tech community to push for remote work everywhere except where it's physically necessary than to convince everyone to buy a battery car. Where i live it's impossible to use one anyway due to non- robust electicity network. Despite being an island that is sunny year round, its not possible to incorporate more renewables into the system, so the main source of electricity remains oil. I bet the main buyers of battery cars live in big cities anyway.

[https://image.slidesharecdn.com/emissionsfromdrivingtowork-1...](https://image.slidesharecdn.com/emissionsfromdrivingtowork-1213018860684874-9/95/emissions- from-driving-to-work-4-728.jpg?cb=1212993525)

</comment><comment><USER32> This is an extremely counter-productive line of thinking. Slowing climate change to manageable levels requires massive costs and sacrifice, but not insane levels. In terms of cost, single figure trillions.

IOW, similar to the Apollo project or the Iraq war. A heck of a lot cheaper than WWII.

</comment><comment><USER23> "Electric cars give us a sense that we can have change without having to change at all. They are a talisman of false hope."

On a tangent issue: it going to get even worse. The automotive industry predicts total annual miles driven to go up by 300% when autonomous driving comes through.

<comment><USER21> As an asthmatic I'm looking forward to a drastic reduction in the pollution in our cities.

We still need to move to car free cities at the same time though.

<comment><USER23> I agree with you that the very idea that it is somehow acceptable to have an 'exhaust' on a car that just belches out toxins is just as crazy as dumping your nightpot out the top floor window into the middle of the street. There was also a time in which that was deemed 'normal'.

That said, a very large part of small particle dust produced by cars comes from wear, especially brakes, tires, road surface and crushed stuff by the weight of the car driving over. If there is a significant uptick in traffic, electric will be better than the equivalent traffic if it were all diesel, but the aggregate amount of micro dust might still go up compared to today's volume.

<comment><USER24> Again, technology is not static. There are lots of folks working on the brake dust and tire wear issue. You should be happy to know that regenerative breaking on BEVs results in a lot less brake dust, although currently more tire wear due to more initial torque.

</comment></comment></comment></comment><comment><USER49> Some perspective on EVs: Project Drawdown lists CO2 reduction by adoption of better cars as #49 in it's ranked list of of climate change solutions. #1 and #2 are refrigerant management and onshore wind turbines respectively.

</comment><comment><USER50> You can see this false hope expressed all the time in media articles that assume that we will just electrify all the cars with no other changes to how we do transportation. That hope is why we are told how important it is to get chargers absolutely everywhere, that charging needs to be fast and how important it is that electric cars have the same range as petroleum cars.

The thing is, cities don't want _any_ sort of cars these days. So in most cases the type of energy used to propel a car is beside the point and a lot of this discussion doesn't matter any more.

</comment><comment><USER51> About 300,000 cars cross the San Francisco-Oakland Bay Bridge every day.

I think the author's point is that if they were all electric, there would _still_ be 300,000 cars crossing the bridge each day, and the problems of road maintenance costs, pedestrian safety, and soul-deadening commute times remain. Fewer GHG emissions, to be sure.

A good next step would be to focus on reducing the total energy of the system. Minimizing 1/2 m v^2 is your friend here -- reduce weight and reduce speed.

</comment><comment><USER52> Have anyone seriously studied the impact of switching to all-electric cars on a global scale ?

I read that there are over a billion passenger cars right now, let's say we manage to shift them all to electric by 2050 (not saying this is realistic), sure it'll move the air pollution out of the city, but what about long term pollution, manufacturing, recycling, &c. ? Would it really solve the problem or simply move it out of our sight for a few decades ?

</comment><comment><USER53> More inconvenient truth in TFA. Note that the market price of electricity hit $9.00/kwh in Texas last week. IICC, that would be maybe a couple of Benjamins to charge an electric car, suggesting that there will have to be bigger changes than electric cars if we really want to keep things the way they are.

</comment><comment><USER10> Once we get self driving, there could be far fewer cars per person. If you amortize that part of the bar chart of emissions which comes from producing the vehicle and divide it by, say, 20, and continue to develop new solar and wind farms, the BEV looks really amazing compared to current non-self driving ICE cars.

<comment><USER54> I tell people who are waiting for self-driving cars to take the bus.

</comment></comment><comment><USER55> So we transition to EV's _and_ we change power to non-fossil fuels. It's not hard it just costs money and requires some sacrifice. I'm on 100% renewable now. If I wasn't already, I'd happily pay twice what I pay now to ensure I was at least on non-fossil if not on renewable.

</comment><comment><USER56> I made this same point on an article about "where will apartment dwellers and city dwellers with street parking charge their EVs". [https://news.ycombinator.com/item?id=20678842](https://news.ycombinator.com/item?id=20678842)

It was a question that was completely missing the forest for the trees. Just like this article is claiming all the EV boosterism is doing.

An EV car is still a car. It's still three tons of steel that goes way too fast and gets used in all manner of inappropriate ways. As an EV owner, you are still part of the problem. Not to mention that you just bought a fantastically expensive vehicle to signal how much you "care" about the environment, but not enough to give up any creature comforts. And how many anti-malaria bednets could you have bought instead if you got a used fuel efficient ICE or, gasp, no car at all?

Much higher impact would be accelerating retrofitting our cities and towns for other modes of transportation: bikes and scooters, massively expanded public transit, and walking.

</comment><comment> La-ang Too little too late? That's the best the writer could say? Pessimism is not what we yearn for.

</comment><comment><USER57> What an absolute garbage piece.

Solving environmental impact is extremely political and is fought every step of the way by those with vested interests.

This adds nothing to help improve things, it actually does the opposite.

Yes, we know if we went back to pre-industrial revolution we'd stop impacting the planet. Good luck with that.

</comment><comment><USER58> Everyone can drive an electric car with the Green Nuclear Deal.

</comment><comment><USER59> Ok, so the author suggests nothing.. He fails to describe the solution(if any). May be the solution is population control.

<comment><USER57> Pretty much. He doesn't seem to grasp the reality that solving the problem is political and like gun laws in the US there are those that will oppose every change no matter how small every step of the way for money regardless of the human or planetary cost.

</comment></comment><comment><USER60> "Tesla sales are up seven-fold from Q3 2015 to Q3 2018"

Wow. I consider that a good sign. Electric cars _are_ progress.</comment>


Show HN: 2D Graphics on Modern GPU - <AUTHOR> https://raphlinus.github.io/rust/graphics/gpu/2019/05/08/modern-2d.html <comment><USER2> Impressive work, Raph! As I'm sure everyone knows by now, the PostScript imaging model is _hard_ to make work on the GPU, and its traditional geometry pipeline isn't suited well for curves or analytic coverage-based AA.

Since I come from the games space, a lot of my thoughts have been about baking as much data as possible: if we had infinite build time, or artist tooling akin to Maya, how would that help us develop better UIs? If we leave PostScript behind and think about new graphics models, what can we do? So a lot of my own research has been studying really old graphics history, since there's always fun ways of looking at the problem before we settled on one solution. I'll have to collect some of my research and demos and publish it sometime soon.

Although, one thing I've noticed during my time in games is that frame time is the standard. If we speed up our rasterizer, we'll just add more junk to the scene until it hits our 60fps frame target. More blurs! More effects! :)

<comment><USER3> > its traditional geometry pipeline isn't suited well for curves or analytic > coverage-based AA

I actually don't agree with this: Pathfinder shows that analytic AA works quite well with the GPU rasterizer. You simply use a floating-point render target with additive blending to sum signed areas. In fact, as long as you convert to tiles first, which both piet-metal and Pathfinder do, vector rendering is actually a task very well suited for the GPU.

The hard part is that filling a path is a fundamentally sequential operation, since whether a pixel is on or off depends on every other path that intersects the scanline that pixel is on. This means that you either need an expensive sequential pass somewhere, or you lose work efficiency. Both piet-metal and Pathfinder try to strike a balance by doing some parts sequentially and sacrifice some work efficiency, using tiling to keep the efficiency loss bounded. This approach turns out to work well.

<comment><USER2> > The hard part is that filling a path is a fundamentally sequential > operation, since whether a pixel is on or off depends on every other path > that intersects the scanline that pixel is on.

I'm not quite sure I get this. Are you simply talking about overdraw optimizations and the requirement for in-order blending here, or something else like even-odd fill rules?

Obviously, the hardware itself has a massive serial component in the form of the ROP which will make sure blend draws retire in-order, and pixel-shader interlock gives you a bit more granular control over the scheduling without relying on the fixed-function ROP unit.

<comment><USER3> I'm talking about the fill rule (whether even-odd or winding). Given a path outline made of moveto/lineto/etc. commands, you can't tell just by looking locally at a pixel whether it should be filled or not without looking at every path segment that intersects the scanline it's on.

<comment><USER4> I have no idea what about the topic being discussed here, but this sounds like you basically have to do a:

        for each path outline in all path outlines:
          for each pixel in all pixels:
            check whether pixel is inside/outside the path outline

?

That looks like a massively parallel problem to me: you can parallelize both for loops (all paths in parallel, all pixels in parallel) and then do a reduction for each pixel, which can be a parallel reduction.

Some acceleration data-structures for these kind of problems can also be constructed in parallel and in the GPU (e.g. bounded volume hierarchies), and some methods for inside/outside checking might be more amenable for parallelization than even/odd or winding number (e.g. level-set / signed- distance fields).

<comment><USER3> > That looks like a massively parallel problem to me: you can parallelize both > for loops (all paths in parallel, all pixels in parallel) and then do a > reduction for each pixel, which can be a parallel reduction.

The reduction step is still less work-efficient than the sequential algorithm (O(n log n) work vs. O(n)), even if it can be faster due to the increased parallelism.

But yeah, if you go down this road you will eventually end up with a delta coverage algorithm. You've basically described what I'd like to do in Pathfinder for an optional compute-based tiling mode. (Because I have to work on GL3, though, I can't depend on compute shader, so right now I do this work in parallel on CPU.)

> Some acceleration data-structures for these kind of problems can also be > constructed in parallel and in the GPU (e.g. bounded volume hierarchies)

Yes, that's the tiling step that both piet-metal and Pathfinder do.

<comment><USER4> I think it is quite funny that 2D vector graphics, and 3D e.g. computational fluid dynamic simulations, have to, pretty much, solve the same problem.

We use in 3D STL geometrys, NURBS/T-splines from CAD, and signed-distance fields, often all of them simulatenously in the same simulation, and for a big 3D volume (with 10^9-10^10 "cells"/"3d-pixels") we have to figure out whether these are inside or outside. Our 3D domain is adaptive and dynamic to track the movement of bodies and features of the flow, so we have to update it on every iteration, and all of this has to happen in distributed memory on 100.000-1.000.000 cores, without blocking.

There is a lot of research about, e.g., how to update signed-distance fields quickly, in parallel, and distributed memory, when they slightly move or deform, as well as how to use signed distance fields to represent sharp corners or how to extract the input geometry "as accurately as possible" from a signed distance field, as well as how big the maximum error is, etc. The Journal of Computational Physics, Computational Methods in Applied Mechanics, and SIAM journals, are often full with this type of research.

For computer graphics, errors are typically ok. But for engineering applications, the difference between a "sharp" edge and a smoothed one can be a completely different flow field, which result in completely different physical phenomena (e.g. turbulent vs laminar flow), and completely different loads on a structure.

</comment></comment></comment></comment></comment></comment></comment><comment><USER5> > Well known to game developers, what is efficient on GPU is a structure-of- > arrays approach. In particular, the tiling phase spends a lot of time > looking at bounding boxes, to decide what belongs in each tile. [...] Now we > get to the heart of the algorithm: going through an array of bounding boxes, > looking for those that intersect a subset of tiles.

Raph, you're describing ray tracing! I haven't thought a lot about this, but maybe the ray tracing hardware trend really could very much be utilized for 2D UI. With ray tracing support now announced all over the place, are you already thinking along those lines?

The main difference between rasterizing and ray tracing is at it's most basic SoA vs AoS, i.e., whether the outer loop is over triangles or over pixels. And the pixel operation is going through an array of bounding boxes to see what overlaps.

The somewhat amazing thing about the ray tracing hardware is you get in effect your entire search query through all the bounding boxes in a single "instruction". It's such a departure from all the predictable bite-sized hardware operations we're used to. It reminds me of stories from college of the DEC VAX and it's single instruction memcpy & strcmp.

> While I mostly focused on parallel read access, I'm also intrigued by the > possibility of generating the scene graph in parallel, which obviously means > doing allocations in a multithread-friendly way.

FWIW, this is definitely doable and already happening on the 3d GPU ray tracing side of the world...! Parallel scene graph construction, parallel BVH builds, etc.

</comment><comment><USER6> > and many people believe that damage regions are obsolete

Old-style damage regions are obsolete. But new-style ones leveraging buffer age & swap-with-damage are not.

Vulkan changes this, but these older EGL extensions are good introductions to the concepts: [https://www.khronos.org/registry/EGL/extensions/EXT/EGL_EXT_...](https://www.khronos.org/registry/EGL/extensions/EXT/EGL_EXT_buffer_age.txt) [https://www.khronos.org/registry/EGL/extensions/KHR/EGL_KHR_...](https://www.khronos.org/registry/EGL/extensions/KHR/EGL_KHR_partial_update.txt) and [https://www.khronos.org/registry/EGL/extensions/KHR/EGL_KHR_...](https://www.khronos.org/registry/EGL/extensions/KHR/EGL_KHR_swap_buffers_with_damage.txt)

> Flutter is a good modern approach to this, and its "layers" are one of the > keys to its performance.

Flutter actually does it badly. Layers are terrible for performance because they are a source of jitter (and memory usage), and jitter often results in jank. They are necessary in some cases, like for correct alpha blending, but in general should be _avoided_ if your goal is to be smooth & fast. You want to optimize for your slowest frames, not your fastest ones.

Flutter's excessive layering can also rapidly be a net-loss in performance due to the overhead of render target switching, increase in memory bandwidth required, and fewer opportunities for overdraw avoidance & disabled blending.

<comment><USER2> In Vulkan, buffer age is implicit with the FIFO swap-chain model. Agreed that there's currently no SwapWithDamage equivalent to tell the compositor about the damaged region in Vulkan, but if it's wanted, it shouldn't be too difficult of an extension to draft or support. I'm open to throwing it in the queue if wanted. What swapchain platforms were you thinking of it for?

<comment><AUTHOR> If you're talking about improving support for incremental present in Vulkan implementations, let's definitely connect. Certainly I can see how to do it well on Windows/DirectX, using IDXGISwapChain1::Present1. On macOS I think it's impossible (though Chrome sometimes fakes it by pasting update layers on top of the base window in the compositor).

<comment><USER6> For incremental buffer updates you just know the content of the new VkImage you're going to draw into - it's the same thing it was the last time you present. So you keep a ringbuffer of dirt rects for the last N frames, and then when you acquire the next frame you just intersect the last N frames of dirty and that's the area of the buffer to update.

This is "standard" vulkan, there's no platform aspect to this. It has very widespread support in EGL/GL as well with either egl_ext_buffer_age extension or, more commonly, the EGL_KHR_partial_update extension.

If you then want to limit the area of the screen that's re-composited THAT'S when swapchain extensions or platform support enters the picture. That would be eglSwapBuffersWithDamage or VkPresentRegionKHR. But this optimization has very little performance impact, and typically minimal battery life improvement as well. Worth doing, but the partial re-render of the buffer is far more significant.

> though Chrome sometimes fakes it by pasting update layers on top of the base > window in the compositor

For a long time that was also just how chrome handled display list updates. They just had a stack of them, and re-rendering a part of the screen just created an entirely new displaylist and plopped it on top: [https://www.chromium.org/developers/design-documents/impl- si...](https://www.chromium.org/developers/design-documents/impl-side- painting) (see "PicturePile")

I wouldn't necessarily follow Chrome as an example of what to do - there's a lot of legacy in Chrome's rendering stack. Also web pages are _huge_ , so they do things like put rendering commands in an rtree because quick rejects happen 100x more often than actual draws.

</comment></comment></comment></comment><comment><USER7> Something I've been really surprised and disappointed by is the lack of 2d vector graphics support in modern gaming engines.

I'm an amateur enthusiast but I spent hours and hours unsuccessfully trying to find any decent engine where I could make games using svg or other vector formats.

<comment><USER8> I know what you mean! Unity3D has no way to simply draw a circle or pie chart into a texture.

It would be great to be able to use the canvas api (and any JavaScript library like d3 that uses canvas) to dynamically draw Unity3D textures.

To address that problem (and others), I'm been developing a Unity3D extension called UnityJS, which integrates a web browser and JavaScript with Unity3D, so you can use the canvas api to draw images for use as 2D user interface overlays and 3D mesh textures in Unity. And of course the other (main) point of UnityJS is to use JavaScript for scripting and debugging Unity apps, and integrate Unity apps with off-the-shelf JavaScript web libraries (d3, socket.io, whatever).

[https://github.com/SimHacker/UnityJS/blob/master/doc/Anatomy...](https://github.com/SimHacker/UnityJS/blob/master/doc/Anatomy.txt)

Drawing on canvases actually works pretty well in the WebGL build, because the JavaScript runs in the same browser tab and address space that's running the Unity app, so you can efficiently blit the canvas's pixels right into Unity's texture memory.

(Although I don't believe there's a way to share the canvas texture directly through GPU memory, or even directly share Unity's ArrayBuffer memory, but it's fast enough for interactive user interface stuff, and millions of times better than the "portable" technique of writing out a data uri with a base 64 encoded compressed png file, which is the "standard" way of getting pixels out of the web browser! Web tech sure sucks!)

[https://github.com/SimHacker/UnityJS/blob/master/Libraries/U...](https://github.com/SimHacker/UnityJS/blob/master/Libraries/UnityJS/StreamingAssets/UnityJS/bridge.jss#L640)

<comment><USER9> Actually a circle is very easy to draw using a shader:

(4th answer down) [https://stackoverflow.com/questions/13708395/how-can-i- draw-...](https://stackoverflow.com/questions/13708395/how-can-i-draw-a- circle-in-unity3d)

A pie chart would be harder.

<comment><USER8> But drawing that circle (or a pie chart) into a texture (so you don't have to draw each triangle every frame) is a whole can of worms.

It might be fine in some cases on a big honking workstation, but reducing the number of draws and triangles becomes quite important when you're doing mobile user interfaces or VR.

Also, it would take a hell of a lot of programming to duplicate the canvas api with LineRenderer and dynamic meshes.

And then you've rolled yourself a custom C# drawing API, so there aren't any full featured well supported off-the-shelf libraries like d3 or chartjs to drive it.

One of the nice things about the way UnityJS integrates JavaScript with a standard web browser in Unity apps is that you can use any of the enormous ecosystem of existing off-the-shelf JavaScript libraries without modification (both visual canvas drawing, and JSON based data wrangling libraries and APIs for services).

It's all about leveraging existing JavaScript libraries and web technologies, instead of reinventing half-assed Unity C# versions.

Given any JSON based web service or SDK you might want to talk to (google sheets or slack for example), the chances of finding a working well supported JavaScript library that talks to it are a lot higher than finding an equivalent C# library that runs in Unity. (Socket.io is a good example: there exist some for Unity, but they all have problems and limitations, and none of them compare in quality and support to the standard JavaScript socket.io library.)

<comment><USER3> You've described exactly why I want to integrate Pathfinder into Unity [1]. :) Pathfinder offers a subset of HTML canvas that I would like to expand over the next few weeks and months into the full API. (Ideally it will actually _be_ the HTML canvas implementation for Firefox someday.)

There's also the benefit that Pathfinder can transform the canvas in 3D while keeping the content in vector form (i.e. no quality loss), which is important for VR.

[1]: [https://github.com/pcwalton/pathfinder/issues/147](https://github.com/pcwalton/pathfinder/issues/147)

</comment></comment></comment></comment></comment><comment><USER10> > it seems quite viable to implement 2D rendering directly on GPU, with very > promising quality and performance.

I guess all agree that GPU rendering is the future. Yet, I'm still in favor for libraries that abstracts the actual renderer so it could fallback if needed. Especially when future and past conflicts.

I come from audio development where people use plug-ins (dynamic libs) that loads on a host that provides native OS window you compose. Cross-platform is pretty vital so there are frameworks to target macOS, Windows, iOS (and sometimes Android & Linux).

Here is a real life scenario that many audio developers are currently at:

\- you had a product with UI that needed to show 'real-time' visualization of signal - Analyzer (let's say FFT).

\- eventually you went the OpenGL way (because it was the right way in 2010...) you've written shaders.

\- it worked great on macOS and ok on most Windows machines (some old machines had limited or broken OpenGL within their drivers).

\- Apple deprecates OpenGL in favor of Metal...

So now what was "modern" 9 years ago requires compete re-write. if there was an abstraction layer it might be minor changes and switching to new Metal renderer instead of the OpenGL one.

In comparison, The native/cpu C++ code for the same product proven to be much more future proof and only required simple maintenance.

It is indeed important work. but I guess targeting Vulkan is better especially when there are libs like MoltenVK.

I guess the question is how much portability is important factor vs optimal performance.

<comment><USER11> I've been through the same iterations you talked about, writing game graphics in MacOS Classic QuickDraw, then OS X Cocoa, then OpenGL, then ES2, now Unity...

IMHO this is all going the wrong direction. I'm strongly against SIMD as a pattern because it makes things hard to generalize. The fact that we don't even know the architectures of the video cards we use every day is a huge red flag. I mean, that's the point we're trying to get to with abstractions, but SIMD exacerbated the pain by being so opinionated.

The reason all of this is going in such strange (informal) directions is that video cards are proprietary and the money is in photorealistic rasterization. It's working along one branch of the tree of possible architectures. Then CUDA and TensorFlow etc are attempts to overlay other narrow generalizations over that and IMHO aren't nearly as good of approaches as MATLAB/Octave/Erlang/Go, etc.

I've said this many times, but I'd prefer to have an array of general purpose CPUs, at least 256 and their number should roughly double in a predictable way every year or two. Then we could have abstractions over that that handle data locality or cache coherency (if needed... it most likely isn't). A chip like that would be trivial to use for ray tracing, for example.

We're going to continue seeing this uninspired churn burning out developers until there is a viable high-core CPU to compete with GPUs.

</comment></comment><comment><USER12> What an interesting rabbit hole. Thanks for sharing your notes too!

Re: > _" As a digression, I find it amusing that the word for packing a data structure into a byte buffer is "serialization" even when it's designed to be accessed in parallel. Maybe we should come up with a better term, as "parallel-friendly serialization" is an oxymoron."_

NeXTStep/Cocoa calls this simply "encoding" which always made sense to me.

</comment><comment><USER8> >Other than that, the serialization format is not that exotic, broadly similar to FlatBuffers or Cap'n Proto. As a digression, I find it amusing that the word for packing a data structure into a byte buffer is "serialization" even when it's designed to be accessed in parallel. Maybe we should come up with a better term, as "parallel-friendly serialization" is an oxymoron.

Great observation! I get the feeling there must be a great punny term for the enigmatic oxymoron "parallel-friendly serialization", but I can't quite put my finger on it.

(Reminds me of "de-optimizer" => "pessimizer", or "spectral frequency analysis and filtering" => "cepstral quefrency alanysis and liftering".)

[https://en.wikipedia.org/wiki/Cepstrum](https://en.wikipedia.org/wiki/Cepstrum)

<comment><USER13> Marhsalling has a precedent in some languages. It makes a lot of sense. "serde[s]" always reminds me of sequencing of transmission more than a format concern of what goes where in a buffer.

</comment></comment><comment><USER14> > I'm particularly interested in the rendering quality.

Shouldn't the rendering be done using oversampling? E.g. instead of 100x100, you render on 400x400, then scale back down to 100x100 to get the best result.

One of the problems is that anti-aliasing creates pixels which are half-on, e.g. at the edge of a line or polygon. Now if multiple edges meet near a certain pixel, then rendering the polygon(s) will touch a "half-on" pixel several times, and as a result it may receive the wrong opacity.

<comment><USER3> As far as I know, you basically get to choose two of antialiasing quality, correctness, and performance. The viable antialiasing options for vectors are:

1\. Supersampling/multisampling. This is what you suggested. This provides correctness with coincident edges, but 256xAA (what analytic AA gives you) is far too slow and memory intensive to be practical if you supersample. In general practical implementations of MSAA/SSAA are limited to 16xAA or so, which is a noticeable drop in quality and in fact is still pretty slow relative to a high-quality implementation of analytic AA.

2\. Analytic antialiasing. This has problems with coincident edges, but in most cases the effects are minimal. The performance and quality are excellent if implemented properly.

I generally think that analytic AA is the right tradeoff for most applications. Subtle rendering problems on coincident edges are usually a small price to pay for the excellent results, and designers can work around those issues when they come up. A 100% theoretically correct rasterizer can't exist anyway, because of floating point/fixed point precision issues among other reasons.

<comment><USER14> Interesting, this is new for me. Is it true that for analytic AA you'd have to consider the rendered objects all at once, instead of just rendering one after the other?

<comment><USER3> Usually with analytic AA you just use Porter-Duff blending, because rendering all the objects simultaneously doesn't buy you much except for performance (which is why piet-metal does it that way). For supersampling AA you can render all the objects at once, like Flash did, and this _does_ improve rendering quality around coincident edges.

Oddly (in my opinion), some rasterizers such as Skia's use supersampling for individual paths and Porter-Duff blending when overlaying different paths on top of one another. This means that you don't have seams between subpaths of the _same_ path, but _different_ paths can have seams on coincident edges. I don't like this tradeoff personally, because it has a lot of the downsides of analytic AA without the benefit of antialiasing quality, but for better or worse this approach is widely used.

<comment><USER14> Ok. I personally think a 100% correct rendering would have great benefit. The coincident edge problem happens a lot, especially when the scene is computer- generated. Also when overlaying the same object a number of times exactly, the edges lose their AA property. (E.g. in Inkscape, draw a circle, copy it, then paste it exactly on top using ctrl+shift+V and repeat 20 times, and you see the edges becoming jagged).

</comment></comment></comment></comment></comment><comment><USER15> As someone who knows literally nothing about the GPU, the notion that the GPU might not be good for UI graphics seems...odd? Like, it can handle 3D graphics right? Aren't those waaaay more computationally expensive than 2D graphics?

I know that I'm missing something important, but I don't know what it is.

<comment><AUTHOR> It's complicated. 2D graphics aren't inherently harder or require more computation than 3D, but they require very different optimizations. I think it boils down to the fact that 2D graphics is ultimately data structure heavy, whereas 3D graphics can often be represented as a huge array of triangles. So there's a lot of literature (some of which I linked, then those papers have a deep literature review), but no one obviously best solution. One thing I think I contributed is a relatively simple solution, especially for doing almost all the work on GPU rather than relying on CPU for things.

<comment><USER16> Is there any particular reason why recent / future GPUs would be worse at 2D graphics than older versions? I.e., what needs to change, when current methods for 2D graphics have worked for years?

Also not knowing much about the field, GPUs seem to have a lot of unpleasantness in the form of incompatible and/or proprietary APIs, so implementing anything that's supposed to be cross platform (also to old and new GPUs, and future GPUs as they are released) may be hard work.

<comment><AUTHOR> What makes you say that 2D graphics has worked well? Scrolling often janks, UI designers constantly have to work around limitations in the imaging model and performance quirks (for a long time, clipping to a rounded rect would kill performance), and there were lots of shortcuts with things like gamma for blending. I'm hoping to build something way better, where the UI _always_ updates smoothly, and the UI designer doesn't have to be conscious of the limitations in the renderer.

<comment><USER15> > I'm hoping to build something way better

Are you talking about a specific project you're working on? I'm currently building a UI tool for designers, and I'm extremely interested to hear about any work in that area.

<comment><AUTHOR> Yes. I'll have more to say soon, but I'm basically building what I think is next-gen UI infrastructure in Rust. That's a project with perhaps overly ambitious scope, so I'm _starting_ with one specific app, namely a font editor. That will be a great showcase for beautifully antialiased vector paths and smooth-as-silk scrolling and interaction, I think.

</comment></comment></comment></comment></comment></comment><comment><USER17> I've been also working on a 2D UI on the GPU. It's quite amazing actually, compared with the code running on the CPU, the code is very terse. The setup can be somewhat verbose, but the shaders themselves are short. Like a 20 line shader can do miracles.

<comment><USER18> Any github links that are freely available?

</comment></comment><comment><USER19> > It's often said that GPU is bad at data structures, but I'd turn that > around. Most, but not all, data structures are bad at GPU. An extreme > example is a linked list, which is still considered reasonable on CPU, and > is the backbone of many popular data structures. Not only does it force > sequential access, but it also doesn't hide the latency of global memory > access, which can be as high as 1029 cycles on a modern GPU such as Volta.

You're almost correct here, from my understanding. But... I still feel like its important to note that Pointer-jumping exists, and linked-list like structures (linked lists, trees, and graphs) can be traversed in parallel in many cases.

[https://en.wikipedia.org/wiki/Pointer_jumping](https://en.wikipedia.org/wiki/Pointer_jumping)

For pointer-jumping in GPUs / SIMD systems, I know that "Data Parallel Algorithms" discusses the technique as applied to a "reduce" operation aka a "scan": [https://dl.acm.org/citation.cfm?id=7903](https://dl.acm.org/citation.cfm?id=7903)

The requirement (not fully discussed in the 'Data Parallel Algorithms' article) is that you still need an array of nodes to be listed off by the SIMD system. But this array of nodes does NOT need to be sorted.

As such, you can accomplish a "GPU Reduce" over a linked list in O(lg(n)) steps (assuming an infinite-core machine). This is way slower than the O(lg(n)) array traversal, but you're at least within the same asymptotic class.

</comment><comment><USER20> > _Performant UI must use GPU effectively, and it's increasingly common to > write UI directly in terms of GPU rendering, without a 2D graphics API as in > the intermediate layer._

Y tho? I'm just a passerby in this topic, but I see this sentiment now and again these days, and I don't understand what happened. I don't remember hearing complaints of DirectDraw being too slow, for example.

<comment><USER2> DirectDraw wasn't a 2D graphics package; you probably mean GDI/GDI+. These libraries were used at at much smaller resolutions (1024x768, but fullscreen was pushing it, your window was smaller). GDI could roughly be used at 60Hz but it didn't support antialiasing or transparency, you needed GDI+ for that. And GDI+ was much slower, even at the smaller resolutions, so you tended to draw into a big bitmap ahead of time and scroll that. Animations in GDI+ were unheard of.

<comment><USER21> I'm not sure what you mean by '2D graphics package', so it may be a semantics thing here, but DirectDraw was a 2D graphics API on top of DirectX. I only used it a bit and didn't find that for my uses, the added complexity was worth it over just using GDI, but DirectDraw did do GPU accelerated 2D rendering. How fast it was in light of today's requirements and hardware, I don't know.

<comment><USER2> Are you confusing it with Direct2D? DirectDraw was an old API from the D3D5-ish era and basically allocated a front buffer you could draw to with GDI. It was not GPU accelerated.

<comment><USER21> Well you got me wondering now on what I worked with, but [https://en.wikipedia.org/wiki/DirectDraw](https://en.wikipedia.org/wiki/DirectDraw) seems to say DirectDraw was hardware-accelerated too. I guess the point is that there are and have been for a long time GPU accelerated 2D API's in DirectX land.

</comment></comment></comment></comment></comment><comment><USER22> Very interesting work. I'm wondering if you've ever worked with vector tiles? Mostly it's used for drawing large numbers of vectors on maps, but has a similar architecture and approach for 2D drawing on the GPU via an efficient command-based language based on the extent of the tile.

</comment><comment><USER23> I don't get it. 2D is a subset of 3D which the GPU already does. Why the need for tiles and whatnot why not render 2D text and other bezier curves as 3D curves with a z coordinate of 0 projected in orthographic perspective ?

<comment><USER12> The short answer is that 3D is all about triangles, and that's not a good fit for the PostScript-based 2D rasterization model used by most APIs and tools (SVG, Illustrator, Apple CoreGraphics, Sketch...)

See the answers to this question in the same thread:

[https://news.ycombinator.com/item?id=19864066](https://news.ycombinator.com/item?id=19864066)

</comment></comment><comment><USER24> Is there a demo/source anywhere? I admit I only skimmed the article, for now.

<comment><AUTHOR> Yes, [https://github.com/linebender/piet- metal](https://github.com/linebender/piet-metal) , it's mac-only (for now).

</comment></comment><comment><USER25> "graphics"

and then no video :(

<comment><AUTHOR> I know. I was eager to get this out. I'll be working on more visuals for a Libre Graphics Meeting presentation, where I'll include some of this in the Rust 2D graphics talk.</comment></comment>


Australians stranded overseas as airlines fly with four economy passengers - <AUTHOR> https://www.theguardian.com/australia-news/2020/aug/19/australians-stranded-overseas-as-airlines-fly-with-as-few-as-four-economy-passengers <comment><USER2> I don't feel you can blame the airlines for this though - they can't justify operating a flight if passenger caps mean they'll loose money.

Also, most states are now charging approx A$3000 for mandatory hotel quarantine, so returning to Australia is super expensive atm!

<comment><AUTHOR> I agree, I don't understand the international arrival cap (especially in relation to Australian nationals). I would have expected unlimited right of return for citizens.

This is a direct impact of the Australian governement limiting the number of persons who can enter the country per flight.</comment></comment>