2020 is going to be a memorable year for most of us, albeit in different ways. For me, the key words of the year were “visualization” and “home.” A month ago, I had to find an adjective. It would have been chaos, swept forward by unplanned changes. But confusion, anxiety and exhaustion were finally released at the end of the year, and now I can only look back on this time with peace and calm.

visualization

This year’s work and study focuses on the topic of visualization, specifically geographic visualization.

It can be summed up in three words:

  1. Continuous learning: I continue to keep learning in the field of 3D graphics rendering. Last year, I realized the introduction of WebGL as a junior student. This year, I not only have in-depth theoretical learning and practice, but more importantly, I have broadened my horizon to understand the industry’s cutting-edge technology solutions and future development direction.
  2. Open sharing: the business of dormant period for a period of rapid development, application scenarios and requirements cannot get fast universal coverage, then turn to attempt to build research and development mode, in addition to the internal implementation team cooperation, I also put forward the proposals and external partners to build capacity, but also involved in internal open source project. Explore boundaries and approaches in various modes of collaboration.
  3. Introspection: I have been engaged in the development of visualization API work, compared with application development has actually been in the rear, to the complex requirements abstraction and generalization, and twice this year to participate in the application of actual combat experience, in the front line more real understanding of the complex product landing pain difficulties, transform ways of thinking, the optimization improvement push products.

Continuous learning

As a technical engineer, especially a front-end engineer, in the environment of rapid development and continuous iteration, to keep up with the team, the enthusiasm and habit of continuous learning is essential. The learning content mainly comes from three aspects: first, work accumulation, which is the most practical; second, laying a solid foundation; third, frontier observation. For me, 70% of this year’s study will be based on work, mainly on WebGL for further study and practice. Solid foundation accounted for 20%. I began systematic study and consolidation of basic knowledge of graphics and OpenGL. Frontier observation accounts for 10%, mainly focusing on public accounts and blogs to understand the development direction of frontier.

Accumulation of work

JSAPI and Seiya released their official versions in the first half of this year, which means that the basic functions have been basically completed. The goal of the second half of this year is to improve the visual effects, which requires a deeper understanding of rendering, and a lot of research and attempts have been made to this end.

  • Light and shadow effects: A multi-source system was implemented based on blinn-Phong lighting model, and Gamma correction, HDR, shadow casting and other techniques were applied to optimize the lighting effect. In this process, some empirical models in the local lighting model were mastered

  • Floodlight: Achieve floodlight effect based on WebGL2 multi-target rendering, switch WebGL1 to WebGL2, and master the realization method of multi-target rendering and gaussian blur

  • Stereoscopic area highlighting: based on template testing to achieve the area highlighting effect, master the use of template testing

These parts are the combined application of the basic knowledge of WebGL, consolidating the understanding and use of basic concepts such as frame buffering, depth testing, template testing and face culling. However, many technical solutions are still at the stage of easy to use and need to be further optimized.

Foundation compaction

The deeper you delve into a field, the more you discover the importance of fundamentals, and the deeper you take root, the higher you grow. The deeper feeling is that although I have some basic knowledge of geometry and algebra, I can easily learn Blinn-Phong local illumination model, but when I further understand PBR, contact microplane model, bidirectional reflection distribution function is quite difficult. In addition, whereas previously it was mostly vector graphics rendering, where you only need to master basic triangulation and coordinate transformation, now to further achieve realistic rendering and cool visual effects, you need a deeper understanding of graphics and image processing technology.

In my spare time, I have systematically studied the advanced concepts and technical solutions of OpenGL based on LearnOpenGL CN. This site is very friendly for those who want to get started with OpenGL, whether you are web development or client development. In addition, with the recommendation of my husband, I came into contact with the GAMES series of courses. We studied the GAMES101 course together. Teacher Yan’s introductory graphics course was easy to understand and detailed, and it was also easy for those who have basic knowledge.

To set a flag for the next 2021 and complete the study of GAMES102, which is the geometric modeling course of Liu Ligang, is my weak link. My other goal was to learn and understand PBR and global Lighting models in depth. If you have a book or course that you would like to read, please feel free to share it in the comments below. I found an online book called Physically Based Rendering, which is only in English.

Frontier observation

This year, I implemented a morning reading plan for a period of time. I spent 30 minutes in the morning reading tweets on official accounts, focusing on the development direction and practical experience of frontier fields. The main topics are WebAssembly, TypeScript, and WebGPU has touched on a little bit. However, first, the morning reading habit has not been maintained for a long time, and second, it has not been put into practice, so it is not very in-depth, which needs to be improved and optimized next year.

I feel that WebAssembly has great value in 3D graphics rendering, and if you can maintain a C++ rendering engine, or data loading parsing engine, then the efficiency and performance optimization effects should be expected. As the next generation of Web graphics engine, WebGPU is also the development trend in the future. However, the specific differences and optimization points between WebGL and WebGPU need to be investigated in practice.

By the way, a lot of public accounts are always focused on training and promotion, interview problem solving and other money attracting fans on the theme, really do original high-quality articles too few.

Open to build

Sources are being pushed internally, and our projects are increasingly focused on code specifications in preparation for open source. I have not been involved in open source projects, so I have little experience in project construction, and THIS year I am slowly exploring. At the beginning, there were only two r&d projects for our main products. After more than a year of polishing, they were officially launched. After the release of the official version, various demands came one after another.

One is the tradeoff between its own business planning and user needs. Both sides need to guarantee manpower and relatively independent development pace, so the “separation” comes into being. After r & D manpower is divided into two teams, how to carry out project construction in an orderly and effective way becomes an important proposition. There were many problems in the early stage, such as unclear demand division, uneven distribution of manpower, unclear working boundaries, etc. On the one hand, there was little communication between the two sides, on the other hand, both sides were inexperienced and groping. After several discussions, both sides reached a preliminary consensus and entered the trial period. There are several core points:

  • Establishing consistent development specifications, including interface design specifications, Git submission specifications, code specifications, and testing specifications, is not only a cornerstone of collaborative construction, but also essential in a multi-developer project
  • Code step by step decoupling: To minimize both sides rely on research and development work, reduce the risk of code changes, and control the size of package files, you need to project code decoupled step by step, on the one hand, the new function as far as possible from the basic library, independent development and packaging in the form of additional library, on the other hand base libraries need to split out a few core module functionally, weak coupling between modules, module function independently and single as far as possible.
  • Strengthen Code Review: Code Review is mainly carried out for core modules to ensure that both parties can evaluate the impact and risks brought by the other party’s changes. CR efficiency can be improved by combining online and offline methods

Second, made the problem of the wheel, base map for a particular data engine and data organization mode has a lot of customized parts, we are using the research methods based on native WebGL, but a lot of work in the face of the industry standard data format becomes the wheels, and the cost is very high, such as 3 dtiles models such as the loading of data. Therefore, under the double pressure of self-research cost and project delivery, open integration has become the only way.

From the beginning of research engine in the design of our reserve the external plug-in interface, can be used to insert custom rendering process in forward rendering process, and based on this we implemented based on the luma. Gl Seiya, now want to do such a “vision” is really thank you for the API in the process of training to the attention of the extensibility and design capabilities. But only for native luma WebGL encapsulation, did not own rendering pipeline, this time we expanded into a complete rendering pipeline rendering engine, need to understand the principle of another set of engine, guarantee the contextual state independence and integration, increased many, although difficult but also let us the ability to swallow the more vertical direction quickly, At the same time, it also allows partners with graphic rendering development capabilities to build capabilities and ecology with us.

introspection

This year, I participated in the development and delivery of two application projects. For an API developer, it is to replace the identity of the user to use the product developed by myself. These two development experiences let me remember deeply, deeply oneself for my factory “all take the user value as the basis” understanding is how shallow, only constantly to the user perspective to self-examination, in order to avoid drift, in order to do better products.

  1. Demand scenarios to understand: if you don’t understand the application scenario behind the user requirements, it is difficult to understand the real intention of the user, or the user of the API is not professional, demand is not necessarily in place, and we also self-righteous, according to own understanding to open interface, it is easy to appear after delivery can’t satisfy the user scenario building problem. Therefore, it is necessary to stand in the perspective of users, combined with their application scenarios to understand the requirements, and give appropriate guidance, in order to get the appropriate solution.

  2. Rich component ability: developers in the face of all walks of life, we often open interface is atomic, like building blocks, more flexibility to allow the user to set up their own customized applications, but developers level is uneven, such way of open set high threshold, some developers will not use, or in the way is very complex, poor application experience. In fact, we can summarize a lot of common scenario components, such as InfoWindow, which we have opened up before. The components are not very customized, but can be used by many junior developers. In addition, components can be encapsulated with mainstream frameworks to provide more diversified access methods and simplify access costs.

  3. Performance optimization is slow and long: the page functions are relatively simple in our research and development and testing, while the application scenarios of users are often very complex. Especially in THE ToG project, a large number of and diversified data loading and switching, as well as complex interactions, will bring great challenges to performance. In this case, we can accumulate performance optimization experience for one or two large projects, transfer the experience to the direction of internal optimization, and use the official website, official account and other channels to release general performance optimization solutions.

home

I made a lot of big decisions this year, most of them related to my family.

  • Moving, from a shared house to a whole house, really established my husband and I of the small home. With more space, we played sports, played video games, watched TV shows, cooked, partied, and brought sugar from the countryside. The quality of life was greatly improved.

  • For me to buy a house, are all of a sudden, in the circle of friends to see a race of limited information, go to sales offices with Mr Understanding once, the day I’ll catch the 11 PM to pay the deposit, because is really good, very close from the company, also close to the subway station, the house price is lower than that of the surrounding 2-4 w, XiaoSanJu with warehouse and parking, were indeed the rule. Thank you very much for the support of my parents. It is impossible for us to get out of the car so early in the morning. After paying the down payment, we have to pay the loan and the rent, which urges us to pay more attention to financial management and the accumulation of assets.

  • The process of marriage preparation is very complicated and the battle line is very long. This year, we have experienced marriage proposal, engagement, marriage preparation and license application. However, it is not like others said that we have never quarreled because of various trifles in the preparation of marriage. For this once-in-a-lifetime ceremony, we wanted to create a unique and perfect memory for each part, striking a balance between tradition and modernity, and completing many of the designs ourselves.

This year, we have two more homes. This is the year when WE go home the most and communicate with our families the most. The common goal and communication narrowed the distance between me and my family and friends. I felt my heart become softer and felt more love flowing. As my husband said, we are very lucky. We have never suffered any setbacks since childhood. We have the care and support of elders and the understanding and companionship of friends.

This year’s nagging so far, next year’s flag has been raised high, go ~

Denver annual essay | 2020 technical way with me The campaign is under way…