Personal Profile


Python Primer for the Impatient

Python programming language logo

Python is one of the scripting languages supported by GLSL Hacker. Here is a quick introduction to the essential notions and syntax of Python programming language. All following notions are general and are not specific to GLSL Hacker. Thanks to this primer, you will be able to quickly tweak and hack GLSL Hacker demos. GLSL Hacker 0.5.0 is available with a Python 2.7 plugin.

The reference manual of Python 2 can be found HERE.

This primer does not cover advanced topics like object oriented programming. It follows the same line than Lua Primer fro the Impatient: providing a quick way to read and write basic Python programs or scripts.

1 – Comments

Python supports two kinds of comments: single line comments and multi-line comments.

Single line comment: #

# this is a single line comment in Python

Multi-line comment with triple quotes: “””

this is a 
comment in Python

2 – Variables

Variables in Python have a type but there is no type declaration. Common types are numbers (float, integer), strings, lists, tuples and dictionnaries. Variables defined in a function have local scope while Variables defined outside functions have global scope.

num_vertices = 0 # integer variable
width = 10.25 # float variable
mesh_name = "my_kool_mesh" # string variable

Tuples use parentheses while lists use brackets. Tuples can’t be updated, their size can’t be changed while lists can be updated, elements can be added or removed.

shader_tuple = ('Vertex', 'Fragment', 'Geometry') # tuple

program_list = ['prog01', 'prog02', 'prog03'] # list

Dictionnaries is a kind of hash table and are made up of pairs of key:value. The key is usually a number or a string.

node_dict = {} # dictionnary
node_dict['node01'] = 100
node_dict['node02'] = 101
node_dict['node03'] = 102

To sum up:

my_tuple = ()
my_list = []
my_dict = {}

You can convert a type to another type with float(), int(), str(), tuple() or dict():

x = 10
x_str = str(x)

To concatenate strings, just use the + operator:

space = " "
app_name = "GLSL" + space + "Hacker" 

3 – Indentation

Unlike C, PHP or Lua, Python does not have braces to delimit blocks of code like functions or tests. To delimit blocks of code, Python uses indentation and indentation is severely inspected by Python, The smallest difference in indentation leads to fatal compilation error! So be careful with indentation and use a correct text editor to handle indentation properly.

4 – Functions

Functions in Python can take multiple arguments and can return multiple results.

def myKoolFunc(a, b, c):
  # indentation!!!
  # Do something useful with a, b and c:
  sum = a+b+c
  avg = sum/3
  return sum, avg

x, y = myKoolFunc(1, 2, 3)

5 – Operators

Comparison: The comparison operators are the same than in C language:

  • equal: (a == b)
  • not equal: (a != b)
  • greater than: (a > b)
  • greater than or equal: (a >= b)
  • lesser than: (a < b)
  • lesser than or equal: (a <= b)


  • and: (a and b)
  • or: (a or b)


  • binary AND: (a & b)
  • binary OR: (a | b)
  • binary left shift: a << b
  • binary right shift: a >> b
  • binary XOR: (a ^ b)
  • binary complement: ~a

6 – Control Structures

Conditional tests:

if (a == x):
  # do something
elif (a == y):
  # do something
  # do something



for i in range(0, 10):
  # do something

for i in "GLSL Hacker":
  print(i) # print current letter

for v in range(len(vertices_list)):


while (i < 10):
  # do something
  i += 1 

7 – Built-in functions

Python comes with a ton of modules and that’s one of the strength of Python:

Fans of Python use the phrase batteries included to describe the standard library, which covers everything from asynchronous processing to zip files. The language itself is a flexible powerhouse that can handle practically any problem domain. Build your own web server in three lines of code. Build flexible data-driven code using Python’s powerful and dynamic introspection capabilities and advanced language features such as meta-classes, duck typing and decorators.

There are so many modules and functions in Python standard library and I’m not going to list them here. Nonetheless, I can give you an example of the use of platform module to get the version of Python. To use a module, use the import keyword:

import platform
py_version = str(platform.python_version())

There is a demo in GLSL Hacker Code Sample Pack that shows the use of the platform module:

GLSL Hacker - Python platform module test

GLSL Hacker – Python platform module test

Like in Lua, Python has a math library:

import math
s = math.sin(radians)
c = math.cos(radians)
p = math.pow(x, y)

There’s also a random module:

import random
# possible values for y: 2, 3, 4 and 5.
y = math.randint(2, 5) 

The string module is also very useful…

An Introduction to Virtual Reality

What is Virtual Reality? Virtual Reality is a set of computer technologies which, when combined, provide an interface to a computer-generated world, and in particular, provide such a convincing interface that the user believes he is actually in a three dimensional computer-generated world. This computer generated world may be a model of a real-world object, such as a house; it might be an abstract world that does not exist in a real sense but is understood by humans, such as a chemical molecule or a representation of a set of data; or it might be in a completely imaginary science fiction world.

A key feature is that the user believes that he is actually in this different world. A second key feature of Virtual Reality is that if the human moves his head, arms or legs, the shift of visual cues must be those he would expect in a real world. In other words, besides immersion, there must be navigation and interaction.

1. Computer mediated sensing

Different kinds of VE technology support different modes of interaction.

  • One kind of VE technology employs subjective immersion, in which the user interacts as if using an ordinary desktop computer system. The user views the system from the usual close but remote position and interacts through standard or special-purpose input or control devices such as keyboards, mouse controls, trackballs, joysticks, or force balls. Three dimensions are represented on 3D displays through the use of simulation software employing perspective, object rotation, object interposition, relative size, shading, etc.
  • The other kind of VE technology uses spatial immersion. The user is required to get inside the virtual space by wearing special equipment, typically at least a helmet mounted display that bears sensors to determine precise helmet position within the VE system’s range, in order to interact with the simulated environment. The user is thus immersed in a quasi-3D virtual space in which objects of interest appear to exist and events occur above, below, and around in all directions toward which the user turns his or her head.

Here follows a description of the typical hardware needed to run a virtual reality system. It will later be discussed whether it’s advisable to maintain all of these components when trying to implement a VE on a PC. What is important here is to focus on a standard architecture, as it is usually described in literature.

Virtual Reality is often used as comprehensive term to describe the use of 3-D graphics displays to explore a computer generated world. This interaction between man and machine can happen according to different styles that are representing the actual possibility and potential of the technology. The different styles of interaction depend upon the way the virtual environment is represented. We can identify at least six interaction styles that refer to the way the simulated/virtual environment is represented: desktop, projected, immersive, Cave, telepresence, augmented.

1) Desktop VR

The most popular type and is based upon the concept that the potential user interacts with the computer screen without being fully immersed and surrounded by the computer-generated environment. The feeling of subjective immersion can be improved through stereoscopic vision (i.e., CrystalEyes) and operative action with interface can be guaranteed via pointing devices (mouse, joystick) or typical VR peripherals such as Dataglove. Desktop VR is used mainly in games but professional application are currently widely diffused. Example of professional application domains come from general industrial design, engineering, architecture and the visualisation of data streams. The main benefit of desktop VR is its limited cost and less involving use of interacting technology, as a matter of fact according to different scenarios of use it might be more appropriate a less “invasive” device such as a CRT monitor than a wired HMD. It seems that desktop VR is particularly successful with the inspection of sample objects as opposed to immersed VR where the best exploitation is with the exploration of spaces. Up to date CAD/CAM systems slowly shifted in their performance towards the quality of VR interaction when they allowed the user to manipulate 3-d objects as if they were real.

2) Projected VR

This is technological solution often seen in VR-Art shows and in VR leisure applications. It is based upon the overlapping of the image of the real user on the computer generated world. That is to say that the user can see his image overlaid the simulated environment. A special movement tracking device can capture the movements of the user and insert them so that they can cause actions and re-actions in the virtual world.

3) Immersive VR

With this type of solution the user appears to be fully inserted in the computer generated environment. This illusion is rendered by providing HMD, with 3-D viewing and a system of head tracking to guarantee the exact correspondence and co-ordination of user’s movements with the fee-back of the environment.


Cave is a small room where a computer generated world is projected on the walls. The projection is made on both front and side walls. This solution is particularly suitable for collective VR experience because it allows different people to share the same experience at the same time. It seems that this technological solution is particularly appropriate for cockpit simulations as it allows the views from different sides of a imaginary vehicle.

5) Telepresence

Users can influence and operate in a world that is real but in a different location. The users can observe the current situation with remote cameras and achieve actions via robotic and electronic arms. Telepresence is used for remote surgical operations and for the exploration/manipulation of hazardous environments (i.e., space, underwater, radioactive.

Virtual Reality is the product of a trick. The VR system tricks the user into believing that the Virtual Environment by which he feels himself surrounded is the actual, real environment. This is made possible by several different devices, each with its own technology, which produce each a specific aspect of the VE, relevant for a specific sense. We will discuss hardware relevant for the three senses which are to be immersed in the VE: sight, touch and hearing.

6) Augmented

This VR solution is an invasive strategy towards reality. As a matter of fact user’s view of the world is supplemented with virtual objects and items whose meaning is aimed at enriching the information content of the real environment. In military applications for instance vision performance is enhanced by providing the pictograms that anticipate the presence of other entities out of sight.

2. VR market analysis

In the Information Technology trend, Virtual Reality has been identified as one of the most promising development areas. As it happens with all the innovative applications this new technology is not excluded from the generation of problems and concerns regarding its implementation in operative working domains. Yet we are witnessing a constant improvement in marketing perspective of both quality of applicative VR systems and receptiveness of potential customers. This is due to mainly three reasons: (1) the decrease of the cost of VR systems and devices (2) the constant improvement of performance reliability of the technology, (3) the extremely valuable economic benefits derived from VR use in its various forms and purposes (training, simulation, design). So we can affirm the consolidation of a class of technology that can positively be stated as “virtual reality” and appraised like any other novel high tech industry. This technology has been confidently adopted in a number of markets, and has the potential to penetrate in many more.

The VR market is at present immature, without any clear market leaders or clear segmentation of activities. In a recent paper prepared for the European Commission’s IT Policy Analysis Unit (DG III/A.5) on VR, PVN (Belgium) estimates a market of $570 million (MECU 483) by 1998. This figure includes both hardware and software. The bad news for Europe is that it is forecast to have only $115 million (MECU 97) of that market, a poor third behind the USA and Japan.
A study into telematics applications of virtual environments, carried out by Sema Group (F), Fraunhofer IAO (D) and MIT’s Research Laboratory for Electronics (USA) for the Commission’s DG XIII/C in 1994, predicted a market evaluation of “roughly MECU 400 – MECU 500 by 1998” with a growth rate “very high, approaching 70-80% per year”. What is perhaps less disputed is that the major market activity is in entertainment equipment.

Frost & Sullivan’s 1994 VR market report stated that about 250 companies existed in the USA and only 25 in other countries which claim to make even part of their revenue from VR. Of these, no one firm earned more than $10 million (MECU 8.4) from VR alone. A recent Financial Times Report listed four types of commercial VR company – software companies, component manufacturers, system companies and ‘other industry participants’. As might be expected, the vast majority of such companies are US-based. Only two European company, Superscape and Division of the UK, is listed under software companies and only one European Company, Virtuality, is listed under component manufacturers.

Although this listing was not ranked and was definitely not exhaustive, most activity does seem to be taking place in the USA. The wider availability of venture capital and the tendency of small firms to ‘spin off’ from others may account in part for this.

According to the recent (Jan. 96) Business Communications Company, Inc. report “RGB-175/The Virtual Reality Business”, by 1996, more than 300 companies will settle sales for about $255 million worth of VR products and services and behind this figures lay as VR customers many multinational brands of military and medical products. By 2000, the VR industry will be posting annual sales of over $1 billion and reaching an annual average growth rate (MGR) of 33%.

In July of 1996 Ovum, the UK market research company published another survey on Virtual Reality (VR) markets: ‘Virtual Reality: Business Applications, Markets and Opportunities. Ovum expects the ‘killer application’ of VR to be in 3D interfaces to the Internet, used for promoting products and services on the World Wide Web (WWW). It predicts that in the next five years, VR will be widely used as a GUI (graphical user interface) for standard business software, thus replacing icon-based GUIs for such applications as database, business systems and networked management software. According to the survey, a large proportion of companies polled indicated that they would use PC based VR training applications for their employees.

Regarding the present uptake of VR in business, the report concludes that ?companies are finding virtual reality an important source of competitive advantage? and that ?although some companies are taking their time to evaluate VR, which is slowing down the speed of market lift-off, many are reporting significant benefits and are increasing their use of VR technology.? It explains this expected increase in uptake by saying that ?In many cases, companies have made cost savings of over US$1 million. They have experienced faster time to market, fewer mistakes than when using CAD technologies, greater efficiency in working methods and improved quality in final products.?

The report predicts that the VR market will grow from US$134.9 million in 1995 to just over US$1 billion by the year 2001 and that the largest growth sector will be in the software sector with a 58 per cent annual growth in this period.

Another significant finding of the report is that the business market for VR in 1995 represented 65 per cent of the total, with entertainment applications accounting for only 35 per cent. VR is normally seen to be of major significance to the games market?. it is not known whether, and how, the authors distinguish between entertainment and ?the entertainment business?.

The Ovum survey foresees a radical shift in how companies will be using VR between now and the year 2001. Today the majority of VR applications are in design automation: virtual prototyping, interior design and ergonomics, and architectural and engineering design. Expensive, workstation-based systems currently dominate, accounting for 43 per cent of the market. By 2001, however, PC-based VR technology will account for 46 per cent of the business market, where most of the applications will be non-immersive, using computer screens instead of headsets.

Virtual Reality Market Forecasts by Application ($ millions, constant 1995 )

1994 1995 2000 AAGR% 1995-2000
Instructional & Developmental 70 95 355 31
Design & Development VR 25 30 150 40
Entertainment VR 60 110 500 35
Medical Treatment VR 10 20 50 20
Total 165 255 1055 33
Source: Business Communications Company, Inc., GB-175, The Virtual Reality Business, 1996

Applicative domains and major marketing areas

At the current state of the situation all marketing experts converge on the fact that the major market activity is entertainment equipment: leisure technology uses account for the largest VR market value, and are foreseen to continue growing at a 35% AAGR to the year 2000 (see table). The critical mass in marketing terms will be reached with high-scale produced single-user entertainment VR system, this will be the propelling force pushing the market growth from a current 1995 value of $110 million to $500 million by year 2000.

Home and entertainment

The great market expansion is expect for site- based entertainment. This expectation is based upon the evaluation two factors: the low saturation, and dramatic decrease of prices. This phenomena will allow VR technology to be used by all facets of society, including commercial/industrial, the government, military, and university and secondary schools at a stage not comparable with any previous existing situation. A great role will also be covered with in the support to education in general, for instance the instructional and developmental market is expected to widen its share from a $95 million 1995 market figure to $355 million by 2000, resulting in an AAGR of 31%. The dimension of this increase will affect technical/engineering colleges and universities, and the “developmental” VR includes spending on advanced, but as yet non-commercial applications, along with pure science and research systems not included in the other categories.

Industrial and Scientific Design

Applications of design and development VR market are in engineering, architecture and chemical design and development a constant shift will bring performance of CAD/ CAMM application to the standards of Virtual Reality applications . This market will grow from a 1995 market value of $30 million, to $150 million by 2000, reaching an AAGR of 40%. Medical treatment VR market will also sustain growth. The 1995 market value of $20 million is projected to reach $50 million by 2000, reaching a 20% AAGR.

The searching for common standards

Current VR products employ proprietary hardware and software. There is little doubt that incompatibility between different systems is restricting market growth at present. It is probable that as the market matures, certain de facto standards will emerge, perhaps when major players become involved. It is probable that the VR market will follow the route of the real-time financial information markets which found that adopting an open systems approach did not damage sales, as had been feared, but helped encourage the growth of the marketplace. According to the IMO – Information Group at Policy Studies Institute, London (August 95 – VIRTUAL REALITY: THE TECHNOLOGY AND ITS APPLICATIONS), “in the future an open systems approach will emerge for VR as well”. At that point, the market is likely to expand considerably.

However, the cost of VR equipment is falling rapidly. For example, headgear prices have already fallen from hundreds of thousands of dollars to $200 (ECU 169), and basic VR software packages are available commercially for $100 (ECU 85), or can be downloaded from the Internet. Simple VR games software is available in the USA for $70 (ECU 59).

3. VR in Europe

The seminal efforts that gave rise to VR took place in the US. Funding from EC organisations has been slower in coming than in the US, where the Office of Naval Research, National Science Foundation, and Advanced Research Projects Agency now fund VR research and the National Aeronautics and Space Administration has been a long-time developer. This situation is perhaps attributable to the large cost associated with VR until quite recently. However the importance of VR is clearly understood in Europe and progress is now going forward across the entire spectrum of virtual reality, with special emphasis on industrial and commercial applications.

Europe encompasses various countries and cultures, and acceptance of the importance of VR has not been uniform. Interest by British Aerospace, the presence of the parallel processing company Inmos (makers of the Transputer), and early funding by the Department for Trade and Industry are cited by UK researchers as factors that drove research in the UK in the mid-to-late 1980s. This resulted in technology transfer that has produced several successful commercial efforts. More recently, German laboratories and institutions have become active in applying immersion technology to a broad range of applications. France has several of Europe’s leading research institutions for machine vision, robotics, and related technologies that affect VR, but has been less active in developing systems that provide interactive immersion. Most other West European countries have some VR R&D.

In the last two years, the EC organised several events to evaluate VR as a topic for the next research initiative. Recently EC presented one study titled: “Telematics applications of VE – The use of Virtual Environment Techniques in the Application of Telematics to Health Care, Transport, Training and the Disabled and Elderly”. This study was the third activity in a row starting with a workshop in March 1993 in Brussels in which was tried to make some kind of a status report and start the process of gathering recommendations on how to incorporate VR in future EC programmes. The second activity was a small report creating the basis for a larger study, which finally was carried out by a team from Fraunhofer Institute, SEMA Group and MIT.

The “Telematics Application” shows a small section on VE technologies, VE applications (generic use of VE technological capabilities, evaluation of the market) and treats then each of the mentioned fields (Education/Training, Transport, Health Care, and Elderly and Handicapped) and finishes of with potential actions for the TAP programme. In the health area the reports states: “In effect, the objective is to validate the 3-D approaches of VE, and evaluate their benefits for future health care systems. In parallel, other projects aimed at providing basic building blocks for future uses in VE- based medical applications are also of interest. They concern digital and computational models of the human body or critical organs”. The report stresses the use of VE in minimally invasive surgery, surgical decision support and training of surgeons, doctors and students. It also finds a use in evaluation of human interfaces and other factors in the design of critical components of new health care facilities.

EC funded projects/working groups relevant to VREPAR

The European Strategic Program for Research and Development (Esprit II) funded a handful of ongoing VR projects. Glad-in-Art is developing a glove-exoskeleton interface system to manipulate virtual objects, while SCATIS intends to integrate room acoustics into virtual worlds, and Humanoid concentrates on the development and simulation of virtual humans.

The call for proposals for Esprit III did not include a specific VR component. However, VR was explicitly mentioned within the basic research and multimedia components (two of the seven program areas). Between the funded studies we remember FIVE (Framework for Immersive Virtual Environments).

Other VR projects deal with Virtual Environment on Multi-Modal Interfaces (MIAMI and VETIR). VETIR deals with the use of virtual environment technologies in motor disabilities’ rehabilitation technology Initiative for Disabled and Elderly People.

4. Medical Applications of VR

Three important aspects of virtual reality systems offer new possibilities to medical treatment:

  • How They Are Controlled
    Present alternate computer access systems accept only one or at most two modes of input at a time. The computer can be controlled by single modes such as pressing keys on a keyboard, pointing to an on-screen keyboard with a head pointer, or hitting a switch when the computer presents the desired choice, but present computers do not recognize facial expressions, idiosyncratic gestures, or monitor actions from several body parts at a time. Most computer interfaces accept only precise, discrete input. Thus many communicative acts are ignored and the subtleness and richness of the human communicative gesture are lost. This results in slow, energy-intensive computer interfaces. Virtual reality systems open the input channel: the potential is there to monitor movements or actions from any body part or many body parts at the same time. All properties of the movement can be captured, not just contact of a body part with an effector.
    Given that these actions are monitored, why can the user control more in the virtual world than in the real world? In the virtual environment these actions or signals can be processed in a number of ways. They can be translated into other actions that have more effect on the world being controlled, for example, virtual objects could be pushed by blowing, pulled by sipping, and grasped by jaw closure. Proportional properties such as force, direction, and speed could become interchangeable allowing the person with arthritic joints to push something harder, without the associated pain, by simply moving faster. They could be filtered to achieve a cleaner signal. Actions can be amplified thus movement of the index finger could guide a tennis racket. Alternately movements could be attenuated giving the individual with large, poorly controlled movement more precise control of finer actions.
  • Feedback
    Because VR systems display feedback in multiple modes, feedback and prompts can be translated into alternate senses for users with sensory impairments. The environment could be reduced in size to get the larger or overall perspective (without the “looking through a straw effect” usually experienced when using screen readers or tactile displays). Objects and people could show speech bubbles for the person who is deaf. Sounds could be translated into vibrations or into a register that is easier to pick up. Environmental noises can be selectively filtered out. The user with a spinal cord injury with no sensation in her hands could receive force and density feedback at the shoulder, neck, or head.
    For the individual multimodal feedback ensures that the visual channel is not overloaded. Vision is the primary feedback channel of present-day computers; frequently the message is further distorted and alienated by representation through text. It is very difficult to represent force, resistance, density, temperature, pitch, etc., through vision alone. Virtual reality presents information in alternate ways and in more than one way. Sensory redundancy promotes learning and integration of concepts.
  • What Is Controlled
    The final advantage is what is controlled. Until the last decade computers were used to control numbers and text by entering numbers and text using a keyboard. Recent direct manipulation interfaces have allowed the manipulation of iconic representations of text files or two dimensional graphic representations of objects through pointing devices such as mice (Brownlow, 1989). The objective of direct manipulation environments was to provide an interface that more directly mimics the manipulation of objects in the real world. The latest step in that trend, virtual reality systems, allows the manipulation of multisensory representations of entire environments by natural actions and gestures. This last step may make accessible valuable experiences missed due to physical or sensory impairments. These experiences may include early object-centered play, and early independent mobility.
    In virtual environments we can simulate inaccessible or risky experiences, allowing the user to extract the lessons to be learned without the inherent risk. Virtual reality systems can allow users to extend their world knowledge.

According to an assessment on current diffusion of VR in the medical sector, gathered by the Gartner Group, forecast of VR future in this area are quite promising. Within the medical application its strategic relevance will increase and gain importance. It is envisaged that by year 2000 despite possible technological barriers, virtual reality techniques will be integrated in endoscopic surgical procedures. VR will affect also the medical educational strategy for students as well as experienced practitioners, who will increasingly be involved in immersive simulated techniques. It is expected that these educational routines can become of routine by year 2005.

VR has been until now widely underused, probably because of prohibitive hardware costs, nevertheless this technology is pushing forward new challenges and advances that will materialise by year 2000. The medical use of VR will take place mainly in four domains:

  • teaching: VR will reproduce environments or special conditions that will enable to educate medical personnel.
  • simulation: VR will mix video and scanner images to represent and plan surgical intervention, effects of therapy.
  • diagnostics: it will be possible to forecast the effects of complex combinations of healing treatments.
  • therapy: A valuable exploitation of VR in the medical sector is seen with interest in the therapy of psychiatric/psychological disorders such as acrophobia, claustrophobia, nyctophobia, agoraphobia, eating disorders, etc. Therapeutic techniques will include practices that will allow the patients to reproduce and master problem environments.

For a more detailed description of the use of VR in health care you can read the paper: VR in Health Care: A Survey

5. Issues to be solved

Although the technology is mature enough to have different applications, there are key issues to be resolved for its use for practical applications.

  • costs: The product seem to be “a solution in search of a problem”. As with early computer graphics products, the entry-level costs are relatively prohibitive. A complete VR environment, including workstations, goggles, body suits, and software, is in the range of KEcu 70.000 to KEcu 1.000.000.
  • lack of standard and reference parameters: The hyperbole and sensational press coverage associated with some of these technologies have led many potential users to overestimate the actual capabilities of existing systems. Many of them must actually develop the technology significantly for their specific tasks. Unless their expertise includes knowledge of the human-machine interface requirements for their application, their resulting product will rarely get beyond a “conceptual demo” that lacks practical utility.
  • human factors: The premise of VE seems to be to enhance the interaction between people and their systems. It thus becomes very important to understand how people perceive and interpret events in their environments, both in and out of virtual representation of reality. We must address issues of human performance to understand how to develop and implement VE technology that people can use comfortably and effectively. Fundamental questions remain about how people interact with the systems, how they may be used to enhance and augment cognitive performance in such environments, and how they can best be employed for instruction, training, and other people oriented applications.

6. Conclusion

The marketing situation of VR is very fluid, this means that the technology while being ready for professional applications is not at the stage of settling definite standards and definite reference points in all perspectives, including possible leading manufacturers, compatibility specifications, performance levels, economical costs and human expertise. So standing the situation it is heavily characterised by uncertainty.

This uncertainty should not be confused with lack of confidence on the promising outcomes of the technology, but instead with the rapid mutation and evolution that characterises all information technology markets. For what concerns the project these reflections sound as warning in the adoption of solutions that need to be considered as a short term answer to a contingent problem. A special concern must be raised to a continuos chase of the last up to date technological product release.

In the general aim of the project we take advantage of the capillary diffusion of the PC based technology and to the best associated hardware and software devices available that can ensure both reliability and availability in different domains independently of the different constraints posed by geographical location.

Unity – What’s new in Unity 5.3.4

Unity - What's new in Unity 5.3.4-Logo

Unity – What’s new in Unity 5.3.4-Logo

The Unity 5.3.4 public release brings you a few improvements and a large number of fixes. Read the release notes below for details.

For more information about the previous main release, see the Unity 5.3 Release Notes.


  • Android: Audio; don’t select OpenSL output if the native device params are too bad for fast path (fixes audio issues on some buggy devices).
  • Android: Buildpipe; updated SDK tools requirements for the Editor.
  • Android: Editor; added Marshmallow to the list of APIs.
  • Android: IL2CPP; use Android NDK x64 on x64 Windows Editor.
  • Android: Soft Input; get rid of hardcoded text color, switch to Light theme.
  • Editor: Added warning dialog if there is any version difference between editor and last project save.
  • Metal: Add -force-metal switch to force Metal rendering on OSX/iOS.
  • OpenGL Core: A whole bunch of fixes, particularly on Macs. See Fixes list below.
  • Scripting: introduced global define UNITY_5_3_OR_NEWER, which can be used for conditionally compile code that is compatible only with Unity 5.3 or newer.
  • Win / OSX Standalone: Add -hideWindow command line option to launch standalone applications with the window hidden.
  • Windows: Added a new command line argument for standalone builds: -window-mode. Options: borderless, exclusive. It lets users override the default fullscreen window behavior.


Unity - What's new in Unity 5.3.4

Unity – What’s new in Unity 5.3.4


  • 2D: Changing Rigidbody2D.gravityScale while a Rigidbody2D.MovePosition is in progress now works. (762771)
  • 2D: Ensure Joint2D auto-configuration still works if joint is added from script (765870)
  • 2D: Ensure that a TargetJoint2D added via script allows collisions with static colliders. (763922)
  • 2D: Stop Rigidbody2D with Interpolation being placed at world origin for a single update upon start. (764769)
  • Analytics: Fixed unreliable event sending (especially AppStart) on WebGL. (770316)
  • Android: Added support for Vivante OpenGL ES 3 driver. (738821, 758155)
  • Android: Fixed alignment crash on some Android ARM devices. (768974)
  • Android: Fixed an issue where Ping wouldn’t work in release mode. (734124)
  • Android: Fixed black screen or crash during startup on old PVR devices (Samsung Galaxy S I9000). (762875)
  • Android: Fixed bug in Texture.GetPixels for ETC compressed textures. (759195)
  • Android: Fixed rendering artifacts when using native plugins and multithreaded renderer. (772171)
  • Android: Fixed rendering on Vivante GPUs on Android 4.3 and older. (712890, 771890)
  • Android: IL2CPP; fixed build errors on NDK paths with whitespaces. (763447)
  • Android: IL2CPP; fixed crash on second startup after installation. (766698)
  • Android/IL2CPP; prevent a crash in the garbage collector when it attempts to scan a section of memory used for the code that may have been unmapped by the OS. (755201)
  • Animation: Fixed a crash when animating lights using the legacy Animation component. (772260)
  • Animation: Prevent crashes when clips are null for animations extracted from asset bundles whose dependencies have not loaded. (756463)
  • API Updater: Fixed “Sequence contains more than one matching element” crash. (760684)
  • API Updater: Fixed crash upon assembly resolution failures. (743463)
  • Asset Bundles: Only reimport when setting asset bundle name if cache server is connected. (714661)
  • AssetBundles: BuildAssetBundles will switch back to the original active build target when finished. (759142)
  • Audio: Disabled sound manager watch dog. (774356)
  • Core: Fixed an issue asynchronously loading a prefab with a large amount of assets. (771882)
  • Core: Fixed some errors with recently deleted objects (in WWWDelayCall; ClearPersistentDirty call; editor CEF integration).
  • Editor: Don’t call OnLevelWasLoaded on the first scene when entering play mode. (759231)
  • Editor: Fix for clustering allocation while navigating. (747856)
  • Editor: Fixed a crash when selecting some prefabs. (766469)
  • Editor: Fixed an issue that made GameObjects disappear from the Editor if they have an associated editor script that made use of DontDestroyOnLoad. (754127)
  • Editor: Fixed an issue when opening a scene from the Project Browser while in playmode it resulted in that scene being loaded even after going out of playmode. (767728)
  • Editor: Fixed misleading texture decompression warning in graphics emulation. (760112)
  • Editor: Fixed startup when Unity is in a path with non-ASCII characters. (765159)
  • Editor: Fixed the issue of GUI.Windows background not being tinted by GUI.colors anymore. (756004)
  • Editor: Fixed the issue of marking scene dirty when creating prefab by dragging from Hierarchy window to Project. (758409)
  • Editor: Fixed the issue of marking the scene dirty when pressing the apply button on a prefab instance. (757027)
  • Global Illumination: Fixed crash in some scene loading scenarios. (768849)
  • Global Illumination: Fixed crash when building lighting with a specific scene setup. (767222)
  • Global Illumination: Fixed light probes not being used anymore in Standalone when a scene without light probes was loaded with Additive mode. (767161)
  • Global Illumination: Fixed multi-scene baking. (751599)
  • Global Illumination: Fully repaint inspectors after baking reflection probes; some previews were not updating before. (663992)
  • Global Illumination: When compositing the directional lightmap removed the clamping on the w-component of the generated pixels.
  • Graphics: Added profiler markers on async texture loading waits.
  • Graphics: Fixed .ogv movie files with stream markers beyond 16kb not imported correctly. (772013)
  • Graphics: Fixed “Trying to reload asset from disk that is not stored on disk” error when non-persistent objects are attempted to be reloaded from disk. (752613)
  • Graphics: Fixed a synchronization problem that was causing texture data not to be properly updated when changing quality settings at runtime. (752613)
  • Graphics: Fixed an issue where GrabPass could get source texture wrongly offset in some cases. (75508, 726067)
  • Graphics: Fixed an issue where setting a material’s shader to null would crash the editor. (771292)
  • Graphics: Fixed an issue where TrailRenderer would randomly vanish/flicker. (740580)
  • Graphics: Fixed crash in SetGpuProgramName which could happen when the program isn’t supported by the target graphics hardware (found on Android) . (772958)
  • Graphics: Fixed GenerateSecondaryUVs crashes on some meshes.
  • Graphics: Fixed MovieTextures sometimes being black in Mac Standalone (64 or Universal builds). (765928)
  • Graphics: Prevent Projectors from accepting invalid clip planes from a script. (506089, 535548)
  • Graphics/DX11: Fixed compute shader resource hazards found in certain cases when binding the same resource SRV and UAV on pixel and compute shader stages. (542251)
  • IL2CPP: Avoid crash when constructing error message. (770081)
  • IL2CPP: Correctly sort unsigned integers via the Array.Sort method. (774085)
  • IL2CPP: Prevent generated C++ code from failing to compile with errors like “error: use of undeclared identifier ‘L_5′” in some cases. (773713, 768010)
  • IL2CPP: Properly marshal formatted classes (762883, 746313)
  • IL2CPP: Properly parse binary text assets. (771835)
  • iOS Metal: Fixed performance regression when doing in-frame clear (GL.Clear or command buffer Clear). (775362)
  • iOS: Fixed redirect for WWW. (723960)
  • Linux: Fixed MSAA in non-upscaled windows, force window recreation when requirements change for player window attributes.
  • Linux/GLCore: Fixed one more instance of render. (775575)
  • Mecanim: Fixed an issue with Animation clip length for bundled clip. (753888)
  • Mecanim: Fixed AnimationClip.SampleAnimation memory leak. (760612)
  • Mecanim: Fixed Animator with statemachine behaviour runtime compile error not firing callback on the right SMB. (756129)
  • Mecanim: Fixed assert when using Animator.MatchTarget.
  • Mecanim: Fixed long start play mode for scene with lots of controller. (769964)
  • Mecanim: Fixed StateMachineBehaviours on layer not being called properly. (765141)
  • Mono: Added IPv6 support on Windows. (767741)
  • Networking: Fixed a crash due to wrong initialization of connection.
  • Networking: Fixed an issue where ack didn’t reset with connection resetting which lead to reliable traffic stale. (775226)
  • Networking: Removed annoying “Attempt to send to not connected connection” message. (775222)
  • Networking: Removing “no free events for message” as annoying. (775225)
  • Networking: Send Error: val > 0 on user disconnect, results in memory write violation and editor crash. (754510)
  • OpenGL Core: Fixed twitching and incorrect rendering with skinning and UI components on GLCore + Mac + NVIDIA. (773476, 775275, 767857, 766778)
  • OpenGL Core: Fixed fullscreen mode when not using native resolution and using MSAA on Mac AMD GPUs. (775428, 776470)
  • OpenGL Core: Fixed fullscreen MSAA support with linear color space rendering. (774558, 774216)
  • OpenGL Core: Fixed Graphics API switching to OpenGL. (762687)
  • OpenGL Core: Fixed occasional game view flipping with image effects in the editor. (760196)
  • OpenGL Core: Fixed dynamic geometry performance issues on Mac + NVIDIA.
  • OpenGL Core: Fixed stretched game view with some image effects in Mac editor. (757536, 757866)
  • OpenGL Core: Workaround for Nvidia shader compiler bug on OS X, affecting SSAO shader. (756028)
  • OpenGL Core/ES: Fixed scalar uniform handling in the shader translator. (772167)
  • OpenGL Core/ES: Fixed wrong shader code generation when redirecting variables, was affecting FastBloom shader. (772434)
  • OpenGL Core/ES: Shader compiler, fixed invalid uniform access in certain corner cases. (767343)
  • OpenGL ES: Fixed non-shadowmap depth textures on some devices. (768916)
  • OpenGL: Fixed point size support using GLSL PROGRAM snippets. (763875)
  • Particles: Fixed a culling regression, when particle systems leave the screen and come back. (773673)
  • Particles: Fixed error message due to default bounding box. (767419)
  • Physics: Fixed a PhysX crash issue in PxsCCDContext::updateCCD experienced by some VR applications. (776187)
  • Profiler: Fixed crash when adding data from thread which was started during a frame. (758264)
  • Profiler: Fixed hang when EndSample did not have a matching BeginSample. (770225)
  • Shaders: Added support to the compute shader compiler to handle bools inside structures.
  • Shaders: Fixed Standard shader in some rare cases outputing NaN as pixel shader result. (766806)
  • Shadows: Fixed shadows disappearing for some off-screen shadows casters. (761152)
  • Substance: All inputs are now applied to a ProceduralMaterial on the first RebuildTextures() call after the material’s textures have been read from cache. Previously, only the modified inputs were applied.
  • Substance: Fixed Editor freeze upon instantiation of resource. (771650)
  • Substance: Fixed broken detection and assignment of shader keywords resulting in wrong appearance of ProceduralMaterials in scenes when the ProceduralMaterial was not opened in the Inspector (some shader keywords were enabled when they should not).
  • Substance: Fixed cache hashing and management issue which could cause the cache to be considered valid again after having been invalidated (often seen after calling Resources.UnloadUnusedAssets()).
  • Substance: Fixed loading of files with special characters in their paths or names.
  • Substance: Fixed rare crash caused by using the wrong size when uploading ProceduralTextures.
  • Substance: Fixed upgrading UNITY 4.x project data, legacy shaders should now be used for these old projects instead of being incorrectly replaced by the Standard shader. (765510)
  • Tizen: Fixed error about copying whitelists while building on Windows. (773614)
  • UI: Fixed exceptions upon assembly/type resolution failures. (770048)
  • UI: Fixed memory leak where dirty renderers on a disabled canvas would still get added to the dirty list causing crashes on clear. (773533)
  • UI: Fixed sorting issue where gird based depth sorting would fail to recognize overlapping unbatchable items. (770804)
  • UI: Stopped raycast from traversing up the hierarchy when a canvas with override sorting is encountered.
  • UI: Vertical alignment of text sometimes appearing higher than expected. (760753)
  • Unity Ads: Updated to 1.5.6 version (fixes crash on Android 4.1 and earlier).
  • VR: Restart the VR Device if the Oculus Service fails.
  • Wii U: Fixed a crash on secondary error confirmation. (767206)
  • Windows Store: Fixed exported VS project failing to build for non-x86 CPU when there is a managed assembly in the project that’s been compiled for x86. (770931)
  • Windows Store/IL2CPP: Fixed game crashing when its name is exactly 20 characters long. (769835)
  • Windows Store/IL2CPP: Fixed intellisense in generated Il2CppOutputProject to be able to correctly resolve Windows 10 headers. (771765)
  • Windows Store/IL2CPP: Fixed failing to build on top of a previous build when target directory is read-only. (766764)
  • Windows Store/IL2CPP: Graphics plugins now work. (770941)
  • Windows Store/IL2CPP: Reduced the amount of linker warnings when building.
  • Windows: Fixed Application.persistentDataPath when Product Name contains invalid path character. (756152)
  • Windows: Fixed unnecessary symbols exported for Windows Standalone Player executable. This was making some Nvidia drivers wrongly pick up integrated GPU instead of discrete one on some systems.
  • XBoxOne/IL2CPP: Allow a call to Guid.NewGuid to work correctly. (769711)


کودا – CUDA

کودا به انگلیسی (CUDA) که مخفف عبارت انگلیسی Compute Unified Device Architecture است یک سکوی پردازش موازی و مدل برنامه‌نویسی است که توسط شرکت انویدیا به‌وجود آمده است و در واحدهای پردازش گرافیکی این شرکت پشتیبانی می‌شود.کودا به توسعه دهنده گان نرم‎افزار اجازه می‎دهد تا از یک GPU که ویژگی CUDA-enabled دارد برای هدف پردازش استفاده کنند، رویکردی که GPGUG شناخته می‎شود. کودا به توسعه‌دهنده گان امکان دسترسی مستقیم به حافظه و مجموعه دستورالعمل در واحد پردازش گرافیکی را می‌دهد.

سکوی کودا برای کار با زبان‎های برنامه‎نویسی مانند C و ++C و فرترن طراحی شده‎است.این دسترسی باعث می‎شود تا برای متخصصان استفاده از منابع GPU آسان‎تر شود برخلاف راه کار های API دیگر چون DIRECT3D و OpenGL که نیاز به توانایی حرفه ای در برنامه نویسی گرافیک داشتند.همچین کودا از چارچوب‎هایی چون OpenACC و OpenCL پشتیبانی می کند.

پیش زمینه

GPU به عنوان یک پردازنده خاص ،درخواست‎های های بلادرنگ با کیفیت بالا گرافیک سه بعدی که از نظر وظایف محاسباتی فشرده هستند را مختصات‎دهی می‎کند.از سال 2012 میلادی GPU ها به سیستم‎های چند هسته ای قدرتمندی ارتقا یافتند که قادر به دستکاری بلوک‎های بزرگی از داده ها هستند.این طراحی بسیار از هدف عامه CPU ها برای الگوریتم‎ها در مواقعی که پردازش موازی روی بلوک های داده انجام می‎شود موثرتر است.به عنوان مثال:

  • الگوریتم ارسال برچسب
  • الگوریتم مرتب سازی سریع روی لیست‎های ‎بزرگ
  • تبدیل موجک سریع دوبعدی
  • شبیه‎سازی دینامیک مولکولی

قابلیت‎های برنامه‌نویسی

کودا توسط کتابخانه‎های مجهز شده کودا ،دستوردهنده کامپایلر مانند OpenACC و همین طور توسعه‎هایی استاندارد صنعتی از زبان‎هایی شامل C، ++C و فرترن برای توسعه‎دهندگان قابل دسترسی است.برنامه‎نویسان C++/C از ‘++CUDA C/C’ استفاده می کنند که کامپایل شده با “nvcc” است.nvcc یک کامپایلر C++/C بر پایه LLVM شرکت انویدیا است.برنامه نویسان فرترن نیز می توانند از ‘CUDA Fortran’ استفاده کنند که کامپایل شده با PGI CUDA Fortran Complier شرکت The Portland Group است. علاوه بر کتابخانه‎ها ،دستوردهنده‎های کامپایلر و ++CUDA C/C و CUDA Fortran ،سکو کودا از سایر رابط‎های محاسباتی شامل موارد زیر پشتیبانی می کند.

  • OpenCL گروه Khronos
  • DirectCompute مایکروسافت
  • محاسبات سایه زنی OpenGL
  • C++ AMP

همچنین لفافه سوم شخص (Third party wrappers) برای زبان هایی مانند پرل (Perl)،پایتون (Python)،آر (R) ،فرترن (FORTRAN)،جاوا (Java)،روبی (Ruby)،هسکل (Haskell)،متلب (Haskell) ،آی دی ال (IDL)،لوآ (Lua) و نیز به طور پیشفرض متمتیکا (Mathematica) در دسترس هستند.

در صنعت بازی‎های کامپیوتری ،GPUها تنها برای رندر کردن گرافیک نیست بلکه در محاسبات فیزیکی بازی (اثرات فیزیکی شبیه دود ،آتش ،ترشحات و آوار) نیز هستند.مثال‎هایی نظیر فیز-اکس و گلوله شامل این مورد هستند.کودا همچنین برای کاربردهای شتاب‎دهی غیرگرافیکی در زیست‎شناسی محاسباتی ،رمزنگاری و حوزه های دیگر نیز استفاده می‎شود.

کودا هم یک API سطح پایین و هم یک API سطح بالا فراهم می کند.SDK اولیه کودا در 15 فوریه 2007 برای ویندوز مایکرو‎سافت و لینوکس انتشار عمومی شد.پشتیبانی در سیستم‎عامل مک در نسخه دوم اضافه شد که جای نسخه تست 14 فوریه 2008 را می‎گیرد.کودا با تمامی ‎GPUهای از سری G8x به بعد شامل جی‎فورس ،کوادرو و تسلا(گرافیک) کار می‎کند.کودا با بیشتر سیستم‎عامل‎‎های استاندارد کار می‎کند.انویدیا می‎گوید برنامه‎هایی که برای سری G8x توسعه‎یافته‎اند همچنین بدون تغییر روی نسل‎های آینده کارت‎های گرافیک بسته به سازگاری دودویی کارخواهند کرد.


کودا چندین برتری در برابر محاسبات عمومی سنتی روی GPU ها(در کل منظورGPGPU) دارد که از واسط‎های گرافیکی استفاده می‎کنند.

  • خواندن پراکنده یعنی کد می‎تواند از آدرس‎های دلخواه در حافظه بخواند.
  • حافظه مجازی یکپارچه (کودا نسخه 4.0 به بعد)
  • حافظه یکپارچه(کودا نسخه 6.0 به بعد)
  • حافظه مشترک کودا ناحیه ای که یک حافظه سریع مشترک است ،نشان می‎دهد که می‎تواند میان نخ‎ها به اشتراک گذاشته‎شود.این حافظه می‎تواند به عنوان یک حافظه نهان مدیریت شده تحت دسترسی کاربر استفاده شود و پهنای باند بیشتری داریم یعنی امکان استفاده را از جستجو بافتی.
  • دانلود‎های سریع تر و مجدد خوانی
  • پشتیبانی کامل برای اعداد صحیح و عملیات بیتی شامل جستجوی بافتی صحیح

How to Enable GodMode in Windows 10

How to Enable GodMode in Windows 10

How to Enable GodMode in Windows 10

The GodMode of Windows 10 is nothing else than a special folder with a stack of shortcuts (around 260) to tools and utilities. Many of these functions are already known and are available in regular control panel. The GodMode is a hidden feature of Windows 10.

The real name of the GodMode folder is Windows Master Control Panel shortcut

To create the GodMode special folder, just create a new folder where you want and rename it in:


Actually the GodMode prefix is not mandatory, you can also rename it in:


Windows 10 GodMode folder on desktop

Here a preview of the GodMode folder:

Windows 10 GodMode folder tools

With Classic Shell, I already have a quick access to many shortcuts:

Classic Shell for Windows 10 - Control panel

Unity – What’s new in Unity 5.3.3

Unity - What's new in Unity 5.3.3-Logo

Unity – What’s new in Unity 5.3.3-Logo

The Unity 5.3.3 public release brings you a few improvements and a large number of fixes. Read the release notes below for details.

For more information about the previous main release, see the Unity 5.3 Release Notes.


  • GI: Optimized GISceneManager.Update in order to take less processor time on scene start (769044).
  • Graphics: D3D11 native plugin API now supports obtaining native texture type underpinning a RenderBuffer. (752855)
  • IL2CPP: Removed warnings from generated C++ code when compiling with clang.
  • Smart TV: Correspond 2016 TV’s fonts and remote controller.
  • Substance: A FreezeAndReleaseSourceData() method was added to the ProceduralMaterial class. This renders the ProceduralMaterial immutable and releases some of the underlying data to decrease the memory footprint. To release even more of the underlying data, it is necessary to call Resources.UnloadUnusedAssets() afterwards. Once frozen, the ProceduralMaterial cannot be cloned, its ProceduralTextures cannot be rebuilt, nor its inputs be set.
  • VR: Mask invisible pixels so GPU time is not wasted near screen edges (Oculus SDK 1.0+).
Unity - What's new in Unity 5.3.3

Unity – What’s new in Unity 5.3.3


  • Audio/Scripting: An optimization was reverted while fixing (739224) and (761360) which would cause memory to once again be allocated during audio callbacks.
  • BlackBerry: Removed BlackBerry option from build player settings window.


  • 2D: Fixed memory leak when applying changes to sprite. (754282)
  • 2D: Occlusion Culling works correctly with X/Y flipped SpriteRenderers. (760062)
  • Android: Fixed internal profiler on Gear VR. (741003)
  • Android: Fixed missing styles.xml files. (768027)
  • Android: Fixed remote frame debugger. (742199)
  • Android: Marshmallow – Added the possibility to disable the permission dialog by adding metadata to the activity.
  • Android: Mono – Fixed crash on startup with Unity Ads when stripping is enabled. (755510)
  • Android: Timeout no longer happens when an application is sent to the background. (738843)
  • Animation: Fixed a crash when changing OverrideController on Animator with no Avatar. (741043)
  • Animation: Fixed a crash where assigning an override controller with no controller to override. (764778)
  • Animation: Fixed changing Animator.runtimeAnimatorController while in play mode crashing the editor. (731237)
  • Animation: Fixed Euler angles on rotation causing Transform to be set to NaN in some cases. (759408, 760759)
  • AssetBundle: Change to use natural sorting when listing the AssetBundle names. (736556)
  • AssetBundle: Fixed loading error for asset bundles built with DisableWriteTypeTree flag. (756567)
  • AssetBundle: Fixed the hash collision when building AssetBundles. (716166)
  • AssetBundle: Fixed the issue that LoadAsset(name) returns null if a bundle contains a prefab and another asset with the same name. (743704)
  • AssetBundle: Loading multiple invalid asset bundles fails correctly now. (756198)
  • AssetBundles: Fixed AssetBundle.CreateFromFile retaining file descriptor. – The previous fix was incomplete. (715753)
  • Audio: Fixed mixer reverb effects getting cut off early in standalone builds. (760985)
  • Audio: Avoid random crashes when using audio callbacks in scripts. (739224, 761360)
  • Core: Fixed crash when game object that is a child of a missing prefab is deleted. (757799)
  • Core: Improved the error message when build data files are corrupted or from a mismatched version.
  • Core: Make sure persistent transforms are not added to the active scene when running in a player. (758058)
  • Editor: Fixed issue of a new scripts created in Editor folder if Unity installation path contains “test” word. (761664)
  • Editor: Fixed a bug where Undo recording would insert property modification on the prefab asset if it was being edited in the inspector. (711720)
  • Editor: Fixed crash when entering playmode if LoadScene was called during Awake or Start. (756409, 760459)
  • Editor: Fixed crash when replacing prefabs with Alt button pressed. (753176)
  • Editor: Fixed editor freeze when picking in scene with many overlapping game objects. (730441)
  • Editor: Fixed freeze/crash on project startup when async upload buffer is set too small. (754704)
  • Editor: Fixed game object duplicates on play when reference to that game object is set in another scene. (750117)
  • Editor: It is now possible to replace a prefab asset with a different prefab asset. (761995)
  • Frame Debugger: Even when it was not used, it was creating some overhead in development standalone builds. Reduced that.
  • GI: Fix for lightmaps in linear lighting mode looking different between the player and editor. (724426)
  • GI: Fix for LoadLevel in the player causing lightmaps to become brighter when in Linear mode. (728595, 738173)
  • GI: Fixed brightly coloured (green/red/white/blue) pixels appearing in the directional lightmap caused by interpolation from invalid indirect lightmap data. Note: Need to clear the GI cache and rebake to get the fixed lightmaps. (765205, 734187)
  • GI: Fixed missing Ambient when “Baked GI” is disabled and “Ambient GI” is set to Baked. (756506)
  • Graphics: Fixed a crash in the editor when switching graphics API from a non-DX9 API e.g. DX11. (740782)
  • Graphics: Fixed an issue where Standard shader using directional lightmaps could output NaN to the framebuffer. This would usually blow up when using HDR rendering with Bloom.
  • Graphics: Fixed building shaders correctly for WebGL in AssetBundles. (746302)
  • Graphics: Fixed crash when calling Graphics.DrawMesh with null material. (756849)
  • Graphics: Fixed crash when using GL.Begin quad rendering with non-multiple-of-4 vertex count. (761584)
  • Graphics: Fixed video memory leak in the splash screen animation.
  • Graphics: Fixed occasional Movie Texture crash with multiple movies present. (753593, 764084)
  • Graphics: Fixed profiling related information (SetGpuProgramName) performance issue in development player builds.
  • Graphics: Fixed rendering of deferred reflections when last object rendered before them had negative scale. (757330)
  • Graphics: Fixed skinned mesh memory leak. (760665)
  • Graphics: In Editor OpenGL ES 2.0 emulation increase max cubemap size to 1024 (from 512). (650870)
  • Graphics: Reduced framerate spikes where culling system could sometimes stall for several ms while waiting for jobs.
  • Graphics: Textures imported as cubemaps now are properly marked as non-readable if import option says so. Saves memory! (724664)
  • IL2CPP: Avoid crash on IL2CPP when searching for attributes. (766208)
  • IL2CPP: Avoid double allocation of memory for multi-dimensional arrays. (766168)
  • IL2CPP: Fixed performance regression in LivenessState calculation. The performance is back to where it was prior to 5.3.2p2.
  • IL2CPP: Fixed an occasional crash when capturing managed heap when parts of it are not committed.
  • IL2CPP: Fixed Array.Copy when destination array type is wider than source array type (e.g. int[] -> long[]). (741166)
  • IL2CPP: Fixed Stfld/Ldfld opcode usage generated by MS C# compiler. (761530)
  • IL2CPP: Fixed Unity IAP on Android with IL2CPP. (761763)
  • IL2CPP: Generate proper C++ code for marshaling wrappers of methods that have System.Guid as a parameter type. (766642)
  • IL2CPP: Implemented support for Assembly.GetReferencedAssemblies and Module.GetTypes() (724547)
  • IL2CPP: Properly marshal arrays of four-byte bool values. (767334)
  • IL2CPP: Raised NullReferenceException when Ldvirtftn instruction had a null target. (766208)
  • iOS: Added missing icon for iPad Pro. (755415)
  • iOS: Fix for WWW deadlock. (759480)
  • iOS: Fixed a crash triggered by deactivating an input while app is going into background. (760747)
  • iOS: Fixed an issue where attached controllers were not found. (761326)
  • iOS: Fixed application freeze on iphone4 when rotating device. (761684)
  • iOS: Fixed code completion for iOS Editor Extensions. (759212)
  • iOS: Handheld.PlayFullScreenMovie only allows playing one movie at a time.
  • iOS: Notify Transport that we finished receiving data so we can mark the buffer as complete when we get an error. (761361)
  • iOS: While entering background/foreground, improve player pause/resume handling to check if external parties (like video player) currently manage the paused state. (534752)
  • iOS/IL2CPP: Prevent a managed exception on 64-bit builds during some array creation operations which has the message “ArgumentException: Destination array was not long enough. Check destIndex and length, and the array’s lower bounds”. (765910)
  • iOS/OSX: Fixed SIMD math, which fixes skinning on iOS and source code compilation on OSX. (754816)
  • iOS/Video: AVKit based player didn’t show “done” button on iOS 8+. (736756)
  • iOS/Video: Fixed MPMoviePlayer error handling for invalid files.
  • iOS/Video: Improved MPMoviePlayer/AVKit orientation and view controller handling. (746018, 729470)
  • iOS/Video: Scaling mode behaviour fixes for iPad Pro. (745346)
  • iOS/Xcode: Added .tbd extension support.
  • Linux: Fixed flickering/corrupted rendering with OpenGL Core. (770160)
  • Linux: Fixed non-native-resolution fullscreen rendering with OpenGL Core. (763944)
  • Mono: Corrected a crash in mono_string_to_utf8_checked when Marshal.StructureToPtr is called from managed code. (759459)
  • Mono: Resolved intermittent crash caused by a race condition that occurs when using managed threads.
  • MSE: Fixed the issue that calling SceneManager.LoadScene** while exiting playmode causes scene unremovable from the hierarchy. (756218)
  • MSE: Fixed the issue that SceneManager.sceneCountInBuildSettings gives 0 until entering play mode. (754925)
  • Networking: Fixed issue where NetworkManager doesn’t become “ready” if online scene is set and offline scene is not. (734218)
  • Networking: Fixed issue where OnStartAuthority is called twice on hosts. (748967)
  • Networking: SyncLists now only send updates when values change. (738047)
  • OpenGL Core: Various bug fixes to the shader compiler; often resulting in better performance for complex image effect shaders.
  • OpenGL Core: Fixed random crashes on compute shader dispatch. (761412)
  • Particles: Ensure consistent direction between 3D and 1D rotation. (760830)
  • Particles: Fix for terrains ignoring collision layers. (763041)
  • Particles: Fixed a collision crash. (757969)
  • Particles: Fixed IsFinite error spam with particles and second camera. (756786)
  • Particles: Fixed issue where particle system doesn’t play if method is called via Invoke. (757461)
  • Particles: Fixed issue where particle system is stopped and cleared and after that it won’t play when simulation space is set to local. (756971)
  • Particles: Fixed issue where particles are not drawn in the correct order on rotated particle systems. (696610)
  • Particles: Fixed issue where ParticleSystem.IsAlive() always returns True for particle systems with longer duration. (755677)
  • Particles: Fixed issue whereby particles systems are not looping correctly. (756742)
  • Particles: Fixed particle culling issues. (764701)
  • Particles: Fixed support for negative inherit velocity values. (758197)
  • Particles: Fixed the issue of particles disappearing after going offscreen and returning. (759502)
  • Particles: Fixed wrong culling of some particle objects caused by incorrect bounds calculation due to parent scaling. (723993)
  • Particles: Fixed: particle system not playing when triggered via Event Trigger. (756725)
  • Particles: Fixed: particle system only playing once. (756194)
  • Particles: Particles are now emitted with the correct position//rotation when using a Skinned Mesh Renderer or Mesh Renderer as shape. (745121)
  • Physics: Fixed center of mass and inertia tensor being reset after game object was reactivated. (765300)
  • Physics: Rigidbodies without non-trigger colliders can. have custom center of mass and inertia tensor again (763806)
  • Renderdoc: When making a RenderDoc capture from editor UI, make sure to include the whole frame including user script updates.
  • Scripting: Fixed issue that causes UnityScript to incorrectly detect some methods return type. (754405)
  • Scripting: Prevent the Particle System from being stripped if the Particle System Renderer is used and engine code stripping is enabled. (761784)
  • Shaders: Fixed a shader compiler crash if a compute shader declares a samplerstate that didn’t match the naming scheme.
  • Shadows: Changed light shadows near plane minimum bound to either 1% of range or 0.1, whichever is lower.
  • Shadows: Fixed “half of scene all in shadows” artifacts in some scene/camera setups. (743239)
  • Smart TV: Fixed a problem to show custom splash screen.
  • Sprites: Occlusion Culling works correctly with X/Y flipped SpriteRenderers. (760062)
  • Substance: Fixed corner cases of outputs not being impacted by any input not being generated. (754556, 534658, 762897)
  • Tizen: Fixed cursor initially starting in the wrong position on screen. (740180)
  • Tizen: Fixed OpenGL crashing issues on the Z300F.
  • Tizen: Input field will no longer show  when return is pressed on an empty entry. (740172)
  • Tizen: System permissions that are not required are no longer requested.
  • tvOS: Fixed build error with Xcode trampoline. (767645)
  • tvOS: Fixed Game Center score reporting due to incorrect API check. (755395)
  • UI: Fixed “Trying to add (Layout Rebuilder for) Content (UnityEngine.RectTransform) for layout rebuild while we are already inside a layout rebuild loop.” error. (739376, 740617)
  • UI: Fixed flickering/texture swapping issues. (753423, 758106)
  • UI: Fixed issue with incorrect accent calculation for non-dynamic fonts. (747512)
  • Upgrades: Delete the installed Playback Engines and Documentation before upgrading Unity. (756818)
  • VR: Dynamically switch to headset’s audio output / input driver (Oculus SDK 1.0+).
  • VR: Fixed audio redirection in standalone builds (Oculus SDK 1.0+).
  • VR: Fixed crash when trying to enter play mode when the Plugin was not loaded or the Oculus runtime was not installed. (759841)
  • VR: Fixed Skybox clipping issues. (755122, 717989, 734122)
  • VR: Fixed VR Focus and VR ShouldQuit not respecting notifications when the Device was disconnected.
  • VR: Fixed VR Splash screen color precision.
  • WebGL: Corrected the following compiler error which might occur in generated C++ code: “error: non-constant-expression cannot be narrowed from type ‘uintptr_t’ (aka ‘unsigned int’) to ‘il2cpp_array_size_t’ (aka ‘int’) in initializer list [-Wc++11-narrowing]”. (767744)
  • Windows Store : Building from Unity will no longer overwrite project.json file if it was modified in solution. (765876)
  • Windows Store : When building from Unity files in Visual Studio solution will not be overwritten if identical. (759735)
  • Windows Store: Fixed a “MdilXapCompile failed” error when trying to build Visual Studio project for Windows Phone 8.1. This used to happen when the Unity game had over 8000 classes across all assemblies. (762582)
  • Windows Store: Fixed a crash when loading C# type from plugin which was not included in the final build. (765893)
  • Windows Store: Fixed a crash which happened on “Windows N” versions when using IL2CPP scripting backend. (760989)
  • Windows Store: Fixed a rare crash in ARM linker (fatal error LNK1322: cannot avoid potential ARM hazard (QSD8960 P1 processor bug) in section #) when using IL2CPP scripting backend. (766755)
  • Windows Store: Fixed an issue which caused small tiles get copied to Visual Studio solution incorrectly for Windows Phone 8.1 SDK. (762926)
  • Windows Store: Fixed anti-alising when calling Screen.SetResolution on Universal Windows 10 Apps/.
  • Windows Store: Fixed Application.Quit() when using D3D project type or IL2CPP scripting backend. (764378)
  • Windows Store: Fixed error “Task ‘ExpandPriContent’ failed.” which occurred when trying to build an application package with IL2CPP scripting backend when using default Unity icons. (764632)
  • Windows Store: Fixed Visual studio graphics debugger crashing when trying to debug Windows Phone 8.1 projects.
  • Windows Store: Mouses and touches will work correctly after locking/unlocking the screen. (768929)
  • Windows Store: Screen.Resolution(x, y, true) will no longer ignore width and height, so you can set your desired resolution on Universal Windows 10 Apps.
  • Windows Store: Screen.resolutions will return a valid value. (748845)
  • WinRT/IL2CPP: Allow native DLLs to be loaded both with and without the .dll extension. (760041)
  • XboxOne: Fixed a bug with YUY2 processing on the XboxOne.
  • XboxOne/IL2CPP: Fixed a problem compiling generated C++ files when there is a space in the path to the project directory. (768193)

What is Direct3D 12?

DirectX 12 introduces the next version of Direct3D, the 3D graphics API at the heart of DirectX. This version of Direct3D is faster and more efficient than any previous version. Direct3D 12 enables richer scenes, more objects, more complex effects, and full utilization of modern GPU hardware.

What makes Direct3D 12 better?

Direct3D 12 provides a lower level of hardware abstraction than ever before, which allows developers to significantly improve the multi-thread scaling and CPU utilization of their titles. With Direct3D 12, titles are responsible for their memory management. In addition, by using Direct3D 12, games and titles benefit from reduced GPU overhead via features such as command queues and lists, descriptor tables, and concise pipeline state objects.

Direct3D 12, and Direct3D 11.3, introduce a set of new features for the rendering pipeline: conservative rasterization to enable reliable hit detection, volume-tiled resources to enable streamed three dimension resources to be treated as if they were all in video memory, rasterizer ordered views to enable reliable transparency rendering, setting the stencil reference within a shader to enable special shadowing and other effects, and also improved texture mapping and typed Unordered Access View (UAV) loads.

Who is Direct3D 12 for?

Direct3D 12 provides four main benefits to graphics developers (compared with Direct3D 11): vastly reduced CPU overhead, significantly improved power consumption, up to around twenty percent improvement in GPU efficiency, and cross-platform development for a Windows 10 device (PC, tablet, console or phone).

Direct3D 12 is certainly for advanced graphics programmers, it requires a fine level of tuning and significant graphics expertise. Direct3D 12 is designed to make full use of multi-threading, careful CPU/GPU synchronization, and the transition and re-use of resources from one purpose to another. All techniques that require a considerable amount of memory level programming skill.

Another advantage that Direct3D 12 has is its small API footprint. There are around 200 methods, and about one third of these do all the heavy lifting. This means that a graphics developer should be able to educate themselves on – and master – the full API set without the weight of having to memorize a great volume of API calls.

Direct3D 12 does not replace Direct3D 11. The new rendering features of Direct3D 12 are available in Direct3D 11.3. Direct3D 11.3 is a low level graphics engine API, and Direct3D 12 goes even deeper.

There are at least two ways a development team can approach a Direct3D 12 title.

For a project that takes full advantage of the benefits of Direct3D 12, a highly customized Direct3D 12 game engine should be developed from the ground up.

One approach is that if graphics developers understand the use and re-use of resources within their titles, and can take advantage of this by minimizing uploading and copying, then a highly efficient engine can be developed and customized for these titles. The performance improvements could be very considerable, freeing up CPU time to increase the number of draw calls, and so adding more luster to graphics rendering.

The programming investment is significant, and debugging and instrumentation of the project should be considered from the very start: threading, synchronization and other timing bugs can be challenging.

A shorter term approach would be to address known bottlenecks in a Direct3D 11 title; these can be addressed by using the 11on12 or interop techniques enabling the two APIs to work together. This approach minimizes the changes necessary to an existing Direct3D 11 graphics engine, however the performance gains will be limited to the relief of the bottleneck that the Direct3D 12 code addresses.

Direct3D 12 is all about dramatic graphics engine performance: ease of development, high level constructs, and compiler support have been scaled back to enable this. Driver support and ease of debugging remain on a par with Direct3D 11.

Direct3D 12 is new territory, for the inquisitive expert to explore.

What’s new in the .NET Framework 4.5.2

5 tricks for working faster in Google Drive

Send files directly to Drive, create new documents with one click, and more.

5 tricks for working faster in Google Drive

5 tricks for working faster in Google Drive

Create a Drive bookmark

Google Chrome was designed to give you easy access to Drive. But if Firefox is your preferred browser, you can create your own shortcut to Drive and its contents.

With Drive open in your browser, create a bookmark. Then right-click on that bookmark and select Properties. Enter Drive in the keyword field. Now when you want to access Drive, just type Drive in Firefox’s address bar, and it will open.

Follow the same steps to create shortcuts to any files in your Drive account.

Find shared documents by collaborator

Google Drive makes collaboration nearly effortless. So, it’s likely you’ve accumulated a healthy collection of shared documents. That can make it difficult to find the one you need even when using the Shared with Me link in Drive’s left sidebar.

You can search for collaborators by name in Drive.

You can search for collaborators by name in Drive.


To narrow the list of shared documents to a particular collaborator, type their name in the search bar at the top. This will thin the choices just to docs you worked on together.

Add Drive to Windows’ “Send to” menu

If you’ve already installed Google Drive on Windows, you can enable this useful shortcut. Navigate to Users > [yourusername] > AppData > Roaming > Microsoft > Windows > SendTo. Find Google Drive on the Favorites bar and drag it to the SendTo folder. This will let you right-click on any file in Windows and express it directly to Drive.

Preview multiple documents

There’s nothing efficient about opening a bunch of individual documents to find the one you want. Fortunately, in Drive you don’t have to.

Use Drive’s preview feature to toggle through a range of files without opening them all.

Use Drive’s preview feature to toggle through a range of files without opening them all.


Start by either Shift-clicking (for a continuous range of files) or Control-clicking (for a non-continuous range) the documents you want to preview. Next, click the eye icon in the top right of the browser window. Thumbnails of each file will appear in a preview bar across the bottom of the browser window. Toggle through them to sneak a full-size peek at each one.

Use quick creation links

Rather than opening a new browser tab and logging in to Drive each time you want to create a new document or spreadsheet, shave off some time by using quick creation links. These links are written as “” but you replace “document” with “presentation,” “spreadsheet,” and “drawing” for each link. Then drag all of them to your bookmark toolbar. Next time you need to create one of these documents, you can do it with one click.

GPU Accelerated Computing with C and C++

With the CUDA Toolkit from NVIDIA, you can accelerate your C or C++ code by moving the computationally intensive portions of your code to an NVIDIA GPU.  In addition to providing drop-in library acceleration, you are able to efficiently access the massive parallel power of a GPU with a few new syntactic elements and calling functions from the CUDA Runtime API.

The CUDA Toolkit from NVIDIA is free and includes:

  • Visual and command-line debugger
  • Visual and command-line GPU profiler
  • Many GPU optimized libraries
  • The CUDA C/C++ compiler
  • GPU management tools
  • Lots of other features

Getting Started:

  1. Make sure you have an understanding of what CUDA is.
    • Read through the Introduction to CUDA C/C++ series on Mark Harris’ Parallel Forall blog.
  2. Try CUDA by taking a self-paced lab on These labs only require a supported web browser and a network that allows Web Sockets. Click here to verify that your network & system support Web Sockets in section “Web Sockets (Port 80)”, all check marks should be green.
  3. Download and install the CUDA Toolkit.
    • You can watch a quick how-to video for Windows showing this process:

    • Also see Getting Started Guides for Windows, Mac, and Linux.
  4. See how to quickly write your first CUDA C program by watching the following video:

Learning CUDA:

  1. Take the easily digestible, high-quality, and free Udacity Intro to Parallel Programming course which uses CUDA as the parallel programming platform of choice.
  2. Visit for CUDA C/C++ documentation.
  3. Work through hands-on examples:
  4. Look through the code samples that come installed with the CUDA Toolkit.
  5. If you are working in C++, you should definitely check out the Thrust parallel template library.
  6. Browse and ask questions on or NVIDIA’s DevTalk forum.
  7. Learn more by:
  8. Look at the following for more advanced hands-on examples:

So, now you’re ready to deploy your application?
You can register today to have FREE access to NVIDIA TESLA K40 GPUs.
Develop your codes on the fastest accelerator in the world. Try a Tesla K40 GPU and accelerate your development.


The CUDA Toolkit is a free download from NVIDIA and is supported on Windows, Mac, and most standard Linux distributions.

  • Starting with CUDA 5.5, CUDA also supports the ARM architecture
  • For the host-side code in your application, the nvcc compiler will use your default host compiler.

Popular Pages
Popular posts
About me

My name is Sayed Ahmadreza Razian and I am a graduate of the master degree in Artificial intelligence .
Click here to CV Resume page

Related topics such as image processing, machine vision, virtual reality, machine learning, data mining, and monitoring systems are my research interests, and I intend to pursue a PhD in one of these fields.

جهت نمایش صفحه معرفی و رزومه کلیک کنید

My Scientific expertise
  • Image processing
  • Machine vision
  • Machine learning
  • Pattern recognition
  • Data mining - Big Data
  • CUDA Programming
  • Game and Virtual reality

Download Nokte as Free

Coming Soon....

Greatest hits

The fear of death is the most unjustified of all fears, for there’s no risk of accident for someone who’s dead.

Albert Einstein

You are what you believe yourself to be.

Paulo Coelho

It’s the possibility of having a dream come true that makes life interesting.

Paulo Coelho

Gravitation is not responsible for people falling in love.

Albert Einstein

One day you will wake up and there won’t be any more time to do the things you’ve always wanted. Do it now.

Paulo Coelho

Anyone who has never made a mistake has never tried anything new.

Albert Einstein

Waiting hurts. Forgetting hurts. But not knowing which decision to take can sometimes be the most painful.

Paulo Coelho

Imagination is more important than knowledge.

Albert Einstein

Site by images
  • 6,279
  • 19,112
  • 62,644
  • 18,332
Recent News Posts