top of page

/learn

User Guide

1. Introduction

Thank you for considering Pico Lux Kit for your next project. 

This document will guide you through the steps needed to get you going and well on your way to developing an app with the enhanced graphics and audio functionality provided by the Kit.

3D, 2D and audio development can get very complicated, and Pico/X is here to ease with this development.

 

To live on the promise of ease of use, this guide is really going to be kept very short with the goal of getting you going fast so you can focus on your project. The learning curve should be really low. 

 

If you are a more experienced developer with graphics and already have some graphics knowledge such as texturing, shadow mapping, matrices, etc., or you are in a hurry, the basic necessary points will be emphasized. These points should be enough to be able to use the Kit, should you prefer to skim through the document to get started even faster. If you are not so experienced, it is highly encouraged to read this guide in full.

 

All that you need to use Pico/X is familiarity with development in general, development with the platform that you are targeting, which includes familiarity with the language that is used for the system, and some of its basic APIs. Typically this means you need to know some iOS development, some Android development, and one of Swift, Kotlin, Objective-C, Java, and/or C++. These topics are out of the scope of this document, which relates to using Pico/X only.

 

Pico/X is designed with several goals in mind: 

- Ease of use.

- Small in size. 

- Expandable, adaptable and versatile.

- Portability.

 

This translates into simplified interfaces crafted to achieve these goals. The API is intentionally kept simple so that it is both easier to use, and accessible to programmers of all levels. For instance, you can create very complicated development constructs in C++, but many of those features, such as template or parallel programming are kept out of the Kit intentionally.

 

Performance is obviously an important factor when dealing with this type of compute intensive development, so the APIs are also crafted in many ways to help with this, sometimes enforcing performance aware development. While doing all of this, the API is also kept consistent among all the platforms and languages so that the mechanisms and the components are familiar when you move from one platform to another, or one language to another. Also, there is nothing that would prohibit you from making an app that uses several languages at the same time for different purposes.

To put this into perspective with an example: the kit has an object class named 'Texture', which implicitly already defines what it is by its name. The interface to manage a texture is extremely simple, but this same class is used for many somewhat complicated artifacts in real-time rendering, like depth buffering for shadow mapping or ambient occlusion, alpha for blending, 128 bit textures for HDR, intensity for light mapping, or rendering into a texture for later use. While the rendering concepts can be complicated, the usage of the Texture is not. The class 'Texture' is also named the same and has the same functions in all platforms and languages creating a consistent API among languages. The entire Kit is designed in this way: to do complicated tasks easily.

 

The services provided by Pico/X are very low level while providing ease of use. It is basically a graphics and audio rendering toolkit layer just above the device's graphics/audio system. It gives you functions to draw a triangle mesh, use lights with or without shadows, apply diverse post processing effects, and integrate this with your current app, if needed. The scope of the Kit is not to provide higher level utilities, such as defining a gaming architecture of entities, or any specific character animation mechanics. Instead, it does provide some of what is needed for this, but it is expected that you augment and complete higher level utilities according to the more specific needs for your project; different projects can vary significantly from one another.  

version: e11bebe4

pico_5x.png
bottom of page