Subsurface scattering for mobile applications

By introducing a subsurface scattering module into the graphics rendering system of mobile devices, using NdotL and thickness maps, the subsurface scattering effect of transparent objects is achieved efficiently, and the problems of rendering quality and calculation complexity in the prior art are solved.

CN120051806APending Publication Date: 2025-05-27创峰科技
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202280100735.4
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2022-11-03
Filing Date
2022-12-31
Publication Date
2025-05-27

AI Technical Summary

Technical Problem

When rendering transparent objects and shadow effects on mobile devices, it is difficult to achieve high-quality subsurface scattering effects, and the calculation complexity is high, making it difficult to implement on mobile devices with limited processing capabilities.

Method used

By introducing a subsurface scattering module into the graphics rendering system, the dot product (NdotL) of the object normal and the light source direction is used to approximate the subsurface scattering effect, and combined with the thickness map and the offset NdotL value, inexpensive and efficient rendering is achieved.

Benefits of technology

It realizes the subsurface scattering effect of efficiently rendering transparent objects on mobile devices, improves the quality and processing efficiency of graphics rendering, and avoids the problem of excessive computational complexity.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120051806A_ABST
    Figure CN120051806A_ABST
Patent Text Reader

Abstract

Systems and methods for rendering subsurface scattering are provided. The system may receive a thickness map of the object. A dot product may be calculated based on a normal to the surface of the object and a vector directed to the light source. An offset may be applied to the dot product. The system may determine a subsurface illumination of a face of the object opposite a shadow point of the object based on the thickness map, the dot product, and the offset. Subsurface illumination of a face of the object adjacent the shadow point may be based on a direct illumination characteristic of the object and the dot product. The object may be rendered in a graphical interface by additionally applying all subsurface illumination to the object.
Need to check novelty before this filing date? Find Prior Art

Description

Cross - Reference to Related Applications

[0001] This application claims the benefit of U.S. Provisional Application No. 63 / 422,246, entitled "REAL - TIME RAY TRACED TRANSLUCENCY AND TRANSPARENT SHADOWS FOR MOBILE", filed on November 3, 2022, which is incorporated herein by reference in its entirety. This application is also related to the co - pending PCT application with attorney docket number 75EP - 364822 - WO, entitled "VOLUMETRIC TRANSPARENCY AND SHADOWS FOR MOBILE GRAPHICS", which is incorporated herein by reference in its entirety. Technical Field

[0002] The disclosed technology generally relates to methods for rendering digital images on a user device. In particular, the disclosed technology includes methods and systems for rendering lighting and shadow effects on objects with different levels of translucency. Background Art

[0003] Image rendering quality, including more realistic simulations of real - world objects, higher resolutions, or smoother frame rates, is an ongoing goal for a variety of technologies and applications. The trend of adopting processor - intensive graphics operation techniques (such as path tracing) in real - time game applications has pressured innovators in this field to propose new digital image rendering methods. These new digital image rendering methods attempt to provide the same or similar visual effects (as those provided by past methods) with fewer hardware component requirements, while enabling users of real - time game applications to experience greater flexibility in customizing the user experience according to their personal preferences. Brief Description of the Drawings

[0004] In accordance with one or more different embodiments, the present disclosure is described in detail with reference to the following drawings. The drawings are provided for illustrative purposes only and depict typical or exemplary embodiments.

[0005] Figure 1 An embodiment of a user experience rendering system according to some examples of the present disclosure is shown.

[0006] Figure 2 An example process for subsurface scattering for thick and thin objects is shown.

[0007] Figure 3 Aspects of subsurface scattering for thick objects are shown.

[0008] Figure 4 Aspects of subsurface scattering for thin objects are shown.

[0009] Figure 5 A block diagram of an example computer system is depicted in which various embodiments described herein may be implemented.

[0010] The figures are not exhaustive and do not limit the disclosure to the precise forms disclosed. Detailed Description

[0011] The graphics rendering technology for video games has been continuously advancing, especially in the fields of mobile devices and gaming. Since the processing power of mobile devices is not as powerful as that of desktop personal computers or game consoles, it is crucial to balance the graphics quality and processing requirements for mobile applications. Real-time application rendering is typically achieved through the rasterization of triangle geometry. Triangle geometry refers to a list of positions defined for each vertex of each triangle within a given object. Each copy of each object has an independent matrix that is used to place and orient that particular copy in a common coordinate space called world space. An additional matrix associated with the camera is used to transform the world space coordinates into view space coordinates, and finally, a projection matrix is used to project those 3D positions onto a 2D screen plane. The transformation and projection steps are typically performed in a stage called the "vertex shader", in which a shader program is run for each vertex being processed. The rasterization pipeline (also known as the rasterization pipeline or pipeline) is named after the hardware-accelerated rasterization step that occurs after the vertex shader, which interpolates all the per-vertex-defined data onto all the pixels within the triangle being rendered, thus converting the per-vertex data into per-pixel data. Next, a "pixel shader" is executed on all the pixels thus interpolated. Although many rasterization pipelines have additional stages, the vertex-raster-pixel pipeline is the core of all rasterization pipelines. Volume transparency and shadows are advanced graphics effects that are not common even in desktop and console applications. Real-time transparency in the rasterization pipeline is typically achieved through a method called alpha blending: that is, an object has a fixed or texture-mapped alpha value that is used to attenuate the output of the fragment shader to simply blend with the background color. This method achieves a flat and less realistic appearance effect for transparent objects and requires separate sorting and rendering of transparent objects in order to correctly render the overlapping parts of transparent objects with other objects. Ray tracing is an alternative rendering method that calculates the intersections of rays with objects, does not require separate rendering of transparent objects, and contributes to an improved transparent rendering method. Since ray tracing is much more expensive than rasterization, it is desirable to apply ray tracing only to problems that are difficult to solve with rasterization, such as rendering transparent objects.

[0012] Examples of the disclosed technology facilitate rendering subsurface scattering of objects rendered in mobile applications. Specifically, embodiments may provide a process for determining subsurface scattering for thick and thin objects. Subsurface scattering refers to radiation emitted from a point on a given surface that is transmitted to that point from beneath the surface rather than from light directly incident on the point. Subsurface scattering creates the effect of light passing through partially translucent materials. For example, if a person's hand is placed in front of a flashlight, the flashlight light will partially pass through the skin due to the partial translucency of the skin. Rendering this effect for objects provides a more realistic and three-dimensional appearance for more opaque translucent materials such as skin, wax, and marble.

[0013] Embodiments described herein relate to three-dimensional models of objects generated in a graphical environment. The generated three-dimensional model may involve the appearance of light and shadow interacting with the model based on a theoretical light source. Subsurface scattering may be a rendering effect on the three-dimensional model. In addition to material parameters, a representation of the phenomenon may also be generated based on the geometric properties of the object. The end result is a three-dimensional model that appears to interact with light in a three-dimensional manner.

[0014] In particular, the subsurface scattering at a particular point can be approximated using the dot product of the object normal and the direction towards the light source, which is referred to herein as NdotL. The object normal represents the normal vector at the shadow point to the surface of the object. The direction towards the light source represents the vector pointing from the point on the surface to the location of the light source or the location of the sample on the light source. NdotL can be mapped to the thickness of the object. Figure 1 The NdotL values ​​are applied together to approximate the contribution of the light source to all surfaces within a small radius around the shadow point. The embodiments described herein apply NdotL to introduce dependence on the light source direction into the thickness map values ​​that are originally agnostic to the lighting. Additionally, the NdotL values ​​are offset by a fixed amount to cheaply simulate subsurface scattering from points on adjacent surfaces. On the other hand, the thickness map is necessary to approximate the subsurface scattering from nearby faces oriented in the relative direction of the shadow point, because these contributions will not be taken into account when simply offsetting NdotL. Due to the simplicity of calculation, using these approximations does not require much processing power. In contrast, applying ray tracing will involve multiple casting sampling rays to dynamically calculate the distance to the neighboring point (which can be considered as a sample of the local thickness) and the incident radiance at the neighboring point (the embodiments herein are estimated based on the incident radiance at the original point). Applying the full solution of subsurface scattering to each point on the surface of the object will increase the amount of calculation exponentially. Therefore, the embodiments described herein are more suitable for mobile devices and applications to help achieve realistic graphics functions while retaining processing power.

[0015] Figure 1An embodiment of a user rendering system 100 according to some examples of the present disclosure is shown. The user rendering system 100 includes at least a machine-readable medium 102, a processor 104, an input interface 106, a display interface 108, and a communication interface 110. The machine-readable medium 102 may include any form of information storage (e.g., random-access memory (RAM), read only memory (ROM), flash drive, processor cache), and encompasses both static and dynamic storage as well as long-term and short-term storage. Some of the information stored on the machine-readable medium 102 may be classified as a rendering module 112 and / or program data 114. The rendering module may include operating system components 116, application components 118, and graphics application components 120 (described further below). The program data 114 may refer to any collection of data that is input to and / or output by the processor 104 when the rendering module 112 is executed. The program data 114 may include operating system data 122, application data 124, and graphics application data 126.

[0016] The processor 104 may refer to one or more general-purpose processors (e.g., microprocessors), and / or one or more dedicated processors (e.g., GPU, network processor, or ASIC). Additionally, in embodiments where multiple processors are represented by the processor 103, the multiple processors may operate in parallel such that multiple instruction sets may be executed simultaneously by the processor 104. The input device 106 may refer to any device with which a user may interact (e.g., a smart phone or other touch screen device), and the input device converts such interactions into signals that may be interpreted by the processor 104. The display device 108 may refer to any device that can output a visual experience to the user (e.g., a smart phone screen, a liquid crystal display (LCD), a light emitting diode (LED)). Figure 1The display device 108 is depicted as a mobile touch screen. However, other embodiments of the user experience rendering system 100 can be implemented on different platforms suitable for other types of display devices. Additionally, the display device 108 is depicted herein as only referring to one display device. However, the display device 108 can also refer to one or more additional display devices (e.g., LEDs, attached LCD screens) that can operate concurrently with the screen of the mobile device. The communication interface 110 can be one or more devices that enable the processor 104 to communicate with components not located locally with the processor 104, and / or one or more devices that allow instructions and / or data to be sent from the machine-readable medium 102 via a network. The communication interface 110 can include a modem or soft modem, a network interface (e.g., Ethernet, network interface card, WiMedia, IEEE 502.XX or other interface), a communication port (e.g., USB port, IR port, RS232 port interface or other port), or other communication interfaces.

[0017] Now referring to the executable rendering module 112 and the program data 114 present on the machine-readable medium 102, the operating system 116 manages the various hardware and software components of the system and provides common interface services. The operating system 116 can include any known available operating system or can be custom-written for the system. The application 118 can include one or more software programs intended to perform functions other than rendering the user experience (e.g., email, phone, Internet browser). The application data 124 can refer to data related to the functions performed by the application 118 (e.g., email address book, phone number contact list, bookmarked web page list).

[0018] The graphics application 120 can include any software program intended to output one or more rendered images. When executing instructions related to the graphics application 120, the processor 104 can read input from and / or output to the graphics application data 126. The graphics application data 126 can refer to data related to the content visually displayed to the user (e.g., simulated character settings, logged-in account profiles, simulated environmental objects).

[0019] The graphics application 120 can include a thick object subsurface scattering module 132 and a thin object subsurface scattering module 134. The thick object subsurface scattering module 132 can apply the following described in Figure 2Render sub-surface scattering by the process described in Figure 2 below. Examples of thin objects with sub-surface scattering can include leaves or paper. Depending on the desired appearance of the object, the process can be applied accordingly to render sub-surface scattering. The sub-surface parameters, index of refraction, and opacity of the material applied to a given object determine whether sub-surface scattering is rendered for the object, and if so, which version of sub-surface scattering is applied. Opacity can be applied through an albedo map texture or configured as a constant value for a given material. For a given material, the sub-surface parameter is always a constant value, but when this constant value is greater than 0, the emission texture is interpreted as the sub-surface color rather than emission. For a given material, the index of refraction parameter is configured as a constant value. Modules 128 and 130 are further described in PCT application 75EP-364822, the content of which is incorporated herein by reference in its entirety.

[0020] Figure 2Shows example processes 200 and 220 of subsurface scattering applied to thick and thin objects respectively. For thick objects, process 200 may include applying a thickness map. The thickness map may include a texture attachment attached to the object model, the texture attachment including a UV-mapped texture that contains the internal ambient occlusion of the mesh. The thickness map is calculated offline using the UV mapping from the albedo texture to generate ambient occlusion values at all pixels on the UV map. The ambient occlusion values are generated by casting a configurable number of rays with a configurable maximum length in a direction randomly selected to deviate from the reverse geometric normal of the mesh. The reverse normal is used to orient the ray direction to project inside the mesh. Then, the reverse normal is perturbed in a random direction using cosine-weighted hemisphere sampling. Finally, the distance to the nearest hit point is used to calculate the average occlusion value, where occlusion is proportional to the hit distance and a miss is assigned the maximum occlusion value of 1. Since occlusion takes smaller values in more sheltered areas, occlusion can be directly used as a parameterization of local thickness. Then, when rendering subsurface scattering, the value of 1 minus the local thickness can be multiplied by the negated offset NdotL value to obtain an approximation of the intensity of the subsurface scattering effect. Example code for implementing the thickness map is as follows: float nDotL = dot(N, L); vec3 shadowedIllumination = directIllumination * shadow; float subsurfaceAmount = 1.0 - localThickness; vec3 surfaceLighting = shadowedIllumination * max(nDotL, 0.0); surfaceLighting += shadowedIllumination * subsurfaceColor * clamp(abs(nDotL) + NDOTL_OFFSET), 0.0, 1.0); / / Region 2 surfaceLighting += directIllumination * subsurfaceColor * subsurfaceAmount * min(nDotL, 0.0); / / Region 1

[0021] As shown in the example code above, the thickness map is applied to the subsurface property representing intensity. This subsurface property can be multiplied by the negated offset NDotL to determine the surface lighting at a specific point.

[0022] At block 204, the system can determine shadow illumination. Shadow illumination is the contribution of a given light source's direct illumination to a shadow point, which is attenuated due to occlusion by an object between the shadow point and the light source. This contribution has been calculated at each hit point during the normal course of ray tracing, so the system simply reuses this value. To calculate shadow direct illumination, first calculate the direct illumination by multiplying the BSDF (which typically includes the NdotL term) by the radiance of the light and dividing by the sampling probability distribution function used to select the light source. Next, cast a shadow ray in the direction of the light source, and if the ray hits any object, the direct illumination is attenuated based on the global shadow mode and the material properties of the occluding object.

[0023] At block 206, the system can apply a fixed offset to the NdotL value used to calculate the direct illumination. This reduces the attenuation due to surface curvature by a fixed amount, which effectively simulates subsurface scattering due to direct illumination from points on adjacent surfaces facing the same direction as the shadow point. A fully ray-traced implementation of subsurface scattering achieves this by randomizing the starting points of ray casts in the region around the shadow point; casting rays to find the points on the corresponding surfaces; and evaluating the direct illumination at each intersection. This method saves subsurface ray casts, additional direct illumination evaluations, and shadow ray casts for determining the shadows of adjacent points.

[0024] At block 208, the system uses a thickness map to approximate the subsurface contribution from nearby faces oriented in the direction opposite to the shadow point. Since the normal directions of these faces are opposite to the shadow normal, the offset NdotL value will still fully attenuate to 0. Simply negating the offset NdotL value will produce unwanted subsurface scattering on the back side of thick regions of the object (e.g., the back side of a sphere). However, multiplying the negated NdotL value by 1 minus the thickness map will limit the contribution of the subsurface to regions of the object where the local thickness is small enough for subsurface scattering to actually affect the appearance. This method differs from full-feature subsurface scattering in two ways. By loading the local thickness from a texture, this method avoids casting randomly selected rays to estimate the local thickness. By reusing the offset NdotL value and the radiance at the shadow point, this method skips the individual evaluation of direct illumination for adjacent points. Finally, this method supplements the subsurface scattering from adjacent faces due to the original NdotL offset with opposite-face subsurface scattering, approximating the appearance of subsurface scattering over the entire surface of a thick object at a lower cost.

[0025] Process 220 can be applied to thin objects as defined above. Process 220 applies steps similar to those in Process 200, but with some differences. At block 204, as described above, the system can determine shadow illumination. At block 206, the system can determine an offset to replace the offset used for attenuation. However, unlike thick objects, Process 220 does not calculate surface lighting, but instead applies block 210 to determine the "translucent color". The implementation can reuse the emissive material properties as the subsurface color for materials with a subsurface intensity greater than 0. In addition to the albedo map, vegetation resources typically also provide a subsurface map, and these maps can be applied through the existing self-illumination map properties. To properly transfer lighting from front to back, the subsurface color is attenuated using the absolute value of NdotL instead of the existing NdotL value, which clamps negative values to 0. Example code is shown below. The shadow term is the same shadow term calculated via shadow rays during normal direct lighting calculation. float nDotL = dot(N, L); vec3 shadowedIllumination = directIllumination * shadow; vec3 color = shadowedIllumination * max(nDotL, 0); color += subsurfaceEmission * subsurfaceIntensity * shadowedIllumination * clamp(abs(nDotL) + NDOTL_OFFSET, 0, 1)

[0026] As shown above, the translucent color code contains terms similar to those determined in Process 200, but with a different application of the NdotL property to better reflect the translucency of thinner objects. At block 212, thin or thick object subsurface scattering is added to the shadow color to complete the rendering of the object.

[0027] Figure 3 A and Figure 3 B show the application of the subsurface scattering effect to a thick object according to Process 200. In Figure 3 A, the thickness map 302 is overlaid on the object to show the relative thickness at a specific point 300. Originating from point 300 are the vectors N and L. As described above, N represents the vector perpendicular to the surface at point 300. L represents the vector pointing to the light source 304. Figure 3Figure B shows the resulting appearance effect. Subsurface scattering from adjacent points contributes to faces 306 and 308 because the object will receive NdotL attenuated illumination from the light source 304 at points on adjacent surfaces. When face 310 faces away from the light source 304, subsurface scattering from points on the opposite face can be applied to face 310, and thus NdotL is negative across the face. Figure 3 A and Figure 3 B are illustrated using a three-dimensional ellipsoidal cylinder. However, which of the subsurface scattering from adjacent faces and the subsurface scattering from opposite faces dominates depends on the overall shape of the object and the orientation / direction of the object relative to the light source.

[0028] Figure 4 Illustrates the case of applying the subsurface scattering effect to a thin object according to process 220. Here, the relative points on the object surface are points 400, which are related to similar N vectors and L vectors pointing to the light source 402. Point 400 receives direct illumination and a subsurface contribution approximated by the product of the direct illumination and the subsurface color. The face 404 of the object cannot receive direct illumination because it is on the back of the object. However, the subsurface contribution is still applied by calculating the direct illumination as if face 404 were on the face of the object pointing to the light source, and then multiplying that value by the subsurface color. The shading of face 404 can be determined based on the calculations described in process 220.

[0029] Figure 5 Depicts a block diagram of an example computer system 500 in which various embodiments described herein can be implemented. The computer system 500 includes a bus 502 or other communication mechanism for conveying information, and one or more hardware processors 504 coupled to the bus 502 for processing information. The (multiple) hardware processors 504 can be, for example, one or more general-purpose microprocessors.

[0030] The computer system 500 also includes a main memory 506, such as random access memory (RAM), a cache, and / or other dynamic storage devices, coupled to the bus 502 for storing information and instructions to be executed by the processor 504. The main memory 506 can also be used to store temporary variables or other intermediate information during the execution of instructions to be executed by the processor 504. When such instructions are stored in a storage medium accessible to the processor 504, the computer system 500 is rendered as a special-purpose machine customized to perform the operations specified in the instructions.

[0031] The computer system 500 also includes a read only memory (ROM) 508 or other static storage devices, which are coupled to the bus 502 for storing static information and instructions for the processor 504. A storage device 510, such as a magnetic disk, an optical disk, or a USB thumb drive (flash drive), etc., is provided and coupled to the bus 502 for storing information and instructions.

[0032] The computer system 500 may be coupled to a display 512, such as a liquid crystal display (LCD) (or a touch screen), via the bus 502 for displaying information to a computer user. An input device 514 including alphanumeric keys and other keys is coupled to the bus 502 for transmitting information and command selections to the processor 504. Another type of user input device is a cursor control 516, such as a mouse, a trackball, or cursor direction keys, for transmitting direction information and command selections to the processor 504 and for controlling the movement of a cursor on the display 512. In some embodiments, the same direction information and command selections as those of the cursor control may be implemented by receiving a touch on the touch screen without using a cursor.

[0033] The computing system 500 may include a user interface module to implement the GUI, which may be stored as executable software code executed by the (one or more) computing devices in a mass storage device. As an example, the module and other modules may include various components, such as software components, object-oriented software components, class components, and task components, processes, functions, attributes, programs, subroutines, program code segments, drivers, firmware, microcode, circuits, data, databases, data structures, tables, arrays, and variables.

[0034] In general, terms such as "component", "engine", "system", "database", "data store", etc. as used herein can refer to logic embodied in hardware or firmware, or can refer to a set of software instructions written in a programming language (such as Java, C, or C++), which may have entry and exit points. Software components can be compiled and linked into an executable program, installed in a dynamic link library, or can be written in an interpreted programming language (such as BASIC, Perl, or Python). It will be understood that software components can be called from other components or from themselves, and / or can be called in response to detected events or interrupts. Software components configured to execute on a computing device can be provided on a computer-readable medium, such as a compact disc, digital video disc, flash drive, disk, or any other tangible medium, or can be provided as a digital download (and may initially be stored in a compressed or installable format and require installation, decompression, or decryption before execution). Such software code can be stored, in part or in whole, on the memory device of the executing computing device for execution by the computing device. Software instructions can be embedded in firmware (such as EPROM). It will further be understood that hardware components can include connected logic units, such as gates and flip-flops, and / or can include programmable units, such as programmable gate arrays or processors.

[0035] Computer system 500 can implement the techniques described herein using custom hardwired logic, one or more ASICs or FPGAs, firmware, and / or program logic, which in combination with the computer system cause the computer system 500 to be a special-purpose machine or be programmed as a special-purpose machine. According to one embodiment, computer system 500 executes the techniques herein in response to one or more sequences of one or more instructions contained in main memory 506 being executed by (a) processor(s) 504. Such instructions can be read from another storage medium, such as storage device 510, into main memory 506. Execution of the instruction sequence contained in main memory 506 causes (a) processor(s) 504 to perform the processing steps described herein. In alternative embodiments, hardwired circuitry can be used in place of or in combination with software instructions.

[0036] As used herein, the term "non-transitory medium" and like terms refer to any medium that stores data and / or instructions that enable a machine to operate in a particular manner. Such non-transitory media can include non-volatile media and / or volatile media. Non-volatile media includes, for example, optical discs or magnetic disks, such as storage device 510. Volatile media includes dynamic memory, such as main memory 506. Common forms of non-transitory media include, for example, floppy disks, flexible disks, hard disks, solid state drives, magnetic tape, or any other magnetic data storage media, CD-ROMs, any other optical data storage media, any physical medium with a perforated pattern, RAM, PROM, and EPROM, flash-EPROM, NVRAM, any other memory chip or cartridge, and networked versions thereof.

[0037] A non-transitory medium is different from a transmission medium, but can be used in combination with a transmission medium. The transmission medium participates in the transfer of information between non-transitory media. For example, the transmission medium includes coaxial cables, copper wires, and optical fibers, including the wires that make up bus 502. The transmission medium can also take the form of acoustic waves or light waves, such as acoustic waves or light waves generated during radio wave and infrared data communications.

[0038] Computer system 500 also includes a communication interface 518 coupled to bus 502. The communication interface 518 provides two-way data communication coupled to one or more network links that connect to one or more local networks. For example, the communication interface 518 can be an integrated services digital network (ISDN) card, cable modem, satellite modem, or a modem that provides a data communication connection to a corresponding type of telephone line. As another example, the communication interface 518 can be a LAN card that provides a data communication connection to a compatible local area network (LAN) (or a WAN component that communicates with a WAN). A wireless link can also be implemented. In any such implementation, the communication interface 518 transmits and receives electrical, electromagnetic, or optical signals carrying a digital data stream that represents various types of information.

[0039] A network link typically provides data communication to other data devices via one or more networks. For example, a network link can provide a connection to a host computer or to a data device operated by an Internet Service Provider (ISP) via a local area network. The ISP in turn provides data communication services via the global packet data communication network now commonly referred to as the "Internet". Both the local area network and the Internet use electrical, electromagnetic, or optical signals that carry digital data streams. Signals passing through various networks and signals on the network link and through the communication interface 518 are example forms of transmission media that carry digital data being transmitted to and from the computer system 500.

[0040] The computer system 500 can send messages and receive data, including program code, via the (multiple) networks, network link, and communication interface 518. In the Internet example, a server can transmit the requested application code via the Internet, ISP, local area network, and communication interface 518.

[0041] The received code can be executed by the processor 504 when it is received and / or stored in the storage device 510 or other non-volatile storage device for later execution.

[0042] Each of the processes, methods, and algorithms described in the foregoing sections can be implemented by code components executed by one or more computer systems or computer processors including computer hardware, and can be fully or partially automated by the code components. One or more computer systems or computer processors can also operate in a "cloud computing" environment or as "software as a service" (SaaS) to support the execution of related operations. The processes and algorithms can be implemented partially or fully in a dedicated circuit. The various features and processes described above can be used independently of each other or can be combined in various ways. Different combinations and sub-combinations are intended to fall within the scope of the present disclosure, and in some implementations, certain method or process blocks can be omitted. The methods and processes described herein are also not limited to any particular order, and the blocks or states associated with the methods and processes can be executed in a suitable other order, or can be executed in parallel, or in some other way. Blocks or states can be added to or removed from the disclosed exemplary embodiments. The performance of certain operations or processes can be distributed among multiple computer systems or computer processors, which can be located not only within a single machine but also deployed on multiple machines.

[0043] As used herein, circuitry can be implemented using any form of hardware, software, or a combination thereof. For example, one or more processors, controllers, ASICs, PLAs, PALs, CPLDs, FPGAs, logic components, software routines, or other mechanisms can be implemented to constitute the circuitry. In an implementation, the various circuitries described herein can be implemented as discrete circuits, or the described functions and features can be partially or fully shared among one or more circuits. Even though various features or functional elements may be described or claimed separately as independent circuits, these features and functions can be shared among one or more common circuits, and such description should not be required or imply that separate circuits must be used to implement such features or functions. In cases where the circuitry is implemented in whole or in part using software, such software can be implemented to run with a computing or processing system (such as computer system 500) that is capable of performing the functions described in relation to the circuitry.

[0044] As used herein, the term "or" can be interpreted in an inclusive or exclusive sense. Additionally, resources, operations, or structures described in the singular should not be construed to exclude the plural. Unless specifically stated otherwise or otherwise understood in the context in which it is used, conditional language (such as among other things, "can," "could," "might," or "may") generally is intended to convey that certain embodiments include while other embodiments do not include certain features, elements, and / or steps.

[0045] Unless otherwise expressly stated, the terms and phrases used in this document and their variants should be construed as open-ended rather than limiting. Adjectives (such as "conventional," "traditional," "normal," "standard," "known," and terms with similar meanings) should not be construed to limit the item described to a given time period or to items available at a given time, but rather should be understood to encompass conventional, traditional, normal, or standard techniques available or known at any time, present or future. In some cases, the presence of expansive vocabulary and phrases (such as "one or more," "at least," "but not limited to," or other similar phrases) should not be understood to imply that a narrower case is intended or required in instances where such expansive phrases may be absent.

Claims

1. A method for determining subsurface scattering, characterized in that, the method comprises: receiving a thickness map of an object; determining a dot product of a normal vector of the surface of the object and a vector pointing to a light source, and applying an offset to the dot product; determining subsurface illumination of a face of the object opposite to a shadow point of the object based on the thickness map, the dot product, and the offset; determining subsurface illumination of a face of the object adjacent to the shadow point based on a direct illumination characteristic of the object and the dot product; and rendering the object in a graphical interface by additionally applying all subsurface illumination to the object.

2. The method according to claim 1, wherein, opacity of the object is defined as a scalar of intensity of subsurface illumination, and a subsurface object is distinguished from a transmissive object by an opacity threshold.

3. The method according to claim 1, wherein, if the dot product is less than or equal to zero, the subsurface illumination of the face adjacent to the shadow point is set to zero.

4. The method according to claim 1, wherein, the subsurface illumination of the face opposite to the shadow point is attenuated based on the opposite number of the dot product.

5. The method according to claim 1, wherein, the thickness map is colored or grayscale.

6. The method according to claim 1, wherein, the thickness map is calculated as a UV-mapped ambient occlusion map.

7. The method according to claim 1, wherein, the graphical interface includes an application of a mobile device.

8. A mobile device, characterized in that, the mobile device comprises: a processor; and a memory encoded with instructions that, when executed, cause the processor to perform the following operations: determining a dot product of a normal vector of the surface of an object and a vector pointing to a light source, and applying an offset to the dot product; determining subsurface illumination of a first face adjacent to a shadow point of the object and subsurface illumination of a second face opposite to the shadow point based on the dot product, the offset, a subsurface intensity of the object, and a thickness map of the object; and rendering the object in a graphical interface by additionally applying all subsurface illumination to the object.

9. The mobile device according to claim 8, wherein, opacity of the object is defined as a scalar of intensity of subsurface illumination, and a subsurface object is distinguished from a transmissive object by an opacity threshold.

10. The mobile device according to claim 8, wherein, if the dot product is less than or equal to zero, the subsurface illumination of the face adjacent to the shadow point is set to zero.

11. The mobile device according to claim 8, wherein, the graphical interface includes an application of a mobile device.

12. The mobile device according to claim 8, wherein, the offset is applied to approximate light scattering of an unilluminated surface of the object.

13. The mobile device according to claim 8, wherein, the subsurface illumination of the second face is based on the opposite number of the dot product.

14. The mobile device according to claim 8, wherein, the object includes a thickness map.

15. A non-transitory machine-readable medium encoded with instructions that, when executed by a processor, cause the processor to perform the following operations: Receive a thickness map of an object; Determine that the object reaches or exceeds an opacity threshold based on the alpha channel of the albedo map of the object; Determine the dot product of the normal of the surface of the object and a vector pointing to a light source, and apply an offset to the dot product; Determine the subsurface illumination of the face opposite the shadow point of the object based on the direct illumination at the shadow point, the thickness map, the dot product, the offset, and the subsurface color of the object; Determine the subsurface illumination of the face adjacent to the shadow point based on the direct illumination at the shadow point, the dot product, and the offset; And Render the object in a graphical interface by applying all the subsurface illumination to the object.

16. The non-transitory machine-readable medium according to claim 15, Wherein, If the dot product is less than or equal to zero, zero out the subsurface illumination of the face adjacent to the shadow point.

17. The non-transitory machine-readable medium according to claim 15, Wherein, The subsurface illumination of the face opposite the shadow point is based on the absolute value of the dot product.

18. The non-transitory machine-readable medium according to claim 15, Wherein, The thickness map is colored or grayscale.

19. The non-transitory machine-readable medium according to claim 15, Wherein, The thickness map includes a UV-mapped ambient occlusion map.

20. The non-transitory machine-readable medium according to claim 15, Wherein, The graphical interface includes an application for a mobile device.