A book interview, stickers, emblems and a cross-post

On Friday I had the great pleasure to be asked back to GamesAtWork.biz to talk about the relevance of writing a sci-fi book and how it fitted with both games and software development processes. In order to get my thoughts in order I decided to write a post on Linkedin’s Pulse blogging platform. I have tended to avoid posting other places as I though a central place, here, made more sense. It would seem that it is worth doing both, all, everything though. The fact it was a different platform made me think in a slightly different way. The full post is below, just in case you don’t get around to reading it on Linkedin.
A few more additions to promotional opportunities have happened since too.
I created a Call Of Duty Black Ops iii emblem (not quite as good as the car decals but the tool set is a little less rich I think)
Reconfigure emblem in #callofdutyblackops3
Also there is now an evolving Icon that you can apply from Zymge.com to your Twitter avatar There are lots of other types of overlay stickers that this service can do for you too. Well worth a look.

Here is the Linkedin Pulse post.
I have not written directly on Linkedin before. However now seems a good time. As a long time blogger and contributor to all sorts of other forms I thought I would share here some of what led to me turning my hand from building virtual worlds and making sense of new technology for people, to creating a science fiction novel, and now working on the sequel. The book is linked from Reconfigurebook.co.uk

As a creator of a single person company in the emerging technology space it is quite tricky to get the right sort of work that both pays, is fulfilling and increases the skill base that I have gained over the past 26 years in the industry.

Creating code and architecting systems allows me to use a full stack of skills. In the world today it is much easier to punch above your weight. I recommend everyone, who is a techie, to just have a go making something end to end. I have done that a number of times, but usually for other people. I have never had a product of my own as such. I have worked with and helped a number of startups, those are long term investments in time and emotional effort. They seldom have yet yielded a product I could point to and say there… that’s what I built.

I had a short TV career, by short I mean 3 years of 39 episodes of weekly TV. That is something I was very proud of but the TV companies do not keep that sort of stuff up on the web. Even though the slots on tech were still relevant today they are really tied up in licensing and not just sitting on Youtube. Again no product.

My 20 years at IBM did see a number of project that were flagship ones in the development of the web, but the end results are now no longer there. The virtual world work, which I still continue today is constantly shifting. The old build in Second Life are now just memories. A few stills and movies remain. There is nothing to share as such. Reputation is fleeting after all.

So I was left thinking I need to build something. I needed to create something end to end as a challenge. I was contemplating various games to make, I started on a few but they did not grab me. I know when I am stoked, and with those I was not.

Sat on Holiday I read the Martian. I loved the scientific depth and a sense of genuine substrate to the emotional layer and adventure on top. A few days later I had an image in my head, related to virtual worlds and gaming. An image of a character being rotated in space. A thing we often have to do in virtual worlds. I imagined what it would be like to do that for real. Again another thing people often talk about when they have used a virtual reality system for a while. If only we could manipulate the real world like this. I then thought of the Internet of Things, and how we instrument the world. I then consider how we could use that to reconfigure the world. Boom I had a title Reconfigure.

As I noodled the idea I realised I wanted to get real tech that I knew into the story. I wanted to go full g33k in the set up. Taking real virtual world tech and code and then extrapolating it. I also wanted my main character to make the same mistakes we all make. That was where the idea of the starting point came. She, (and it just happened She became a She instinctively) makes a misplaced Tweet. Types in the wrong window. It is a thing we have all done. I think that makes a good hook. Instead of just hassle though she makes contact with someone or something.

Having got that basis I came home and sketched a story board. I had key types of things I wanted to happen. I had these initial images in my head but had to find the peril, the adventure. I had to find things that were difficult to solve in clever ways.

This is where is became a lot like coding a system. I had problems and sticking points in the storyboard. I had an architecture. I had to work out the code (in this case, words) to pass the tests that allowed this to work and flow.

It became an obsession for a couple of weeks flat out writing. It felt like binge-watching a boxed set. I did not always know what was going to happen, or if I did I didn’t know the details until I started. It was invention, just like a patent. I felt duty bound to make sure it stood up to some degree of reasoning and logic despite getting into the fictional elements.

That was the really fun part. I was, and I am, really happy with the story. So much so I just started on the sequel. It seems to be flowing in the same way though I have learned from my experience on the first book about hen to stop and check. Just like code, sometimes you find a better algorithm and just have to break the code again to fix it.

Doing this myself I had to learn about the formatting and setting for e-readers and specifically Kindle. I also created a sort of beta reader programme for some friends and family to help iron out the typos and bugs. It is impossible to see it all yourself when you are so close to it. That was a humbling experience in itself.

The vagaries of the US tax system, despite being Uk based and a few other little quirks all took a little time. The cover design and using the right format and size all took a while. I am not a designer, but I wanted to give it a go. I tried a couple of covers and got comments about them before settling on this one.

However a the end of October 2015 I published the e-book.

I was expecting, like most first time authors, a massive blip as friends, family, former colleagues and anyone who pays attention on social media or virtual worlds to say “Hey! epredator had written a book, I will take a look at that!” This is a mother humbling experience. There are some very close friends who have done that for me. However I realised that I needed to go wider. My friends and family blip at launch was not going to be big enough to tip the book into the charts.

I was then faced with the almost full time job of advertising and promoting the book. I am still working out the best routes. Amazon is an obvious place to advertise but I also have Facebook, dabbled with Twitter, and some Google Adwords in place.

The advice always seems to be do lots of other things. One of the first things was to brave CreateSpace and typesetting to create the paperback. A physical product still seems to make people think you have done something real. So I did that, and it went live a few days ago.

I always done lots of twists and turns on ideas so these are some of the things I have done in the past few weeks.

  • Join Author central on amazon.com and .co.uk
  • Create videos – I did a show and tell rather like this post and an advert using my son in a style that fitted with an element of the story (all very meta)
  • Create a Forza6 car design – Yes building a lambo with Reconfigure and the book cover all over it let me drop images all over the place and add another promo video around brands hatch. Quite unusual I think?
  • Tweet.. A lot ( I am still hoping the saturation with prompt a few more friends to help 🙂 )
  • Facebook page – I set up the specific page for Reconfigure before going live and then made that available putting a few extras on there
  • Flickr – lots of images, books arriving, weird images of me holding the book etc
  • Free prize draw on Amazon.com – Offering a copy of the book in a prize draw run by Amazon to get Twitter followers
  • Podcast – Tonight I am talking on Gamesatwork.biz after a kind invitation
  • Pay a twitter promoter – I used Bookbear, but there are loads. I may be cheaper than ad clicks
  • Change my job title here to Sci-Fi Author at Feeding Edge Ltd.
  • Added the logo to my twitter avatar
  • Built a second life box to with a link
  • Pinged my old eightbar group on in Second Life
  • Wrote this post 🙂
  • Update 8th November – I also just did the podcast interview on gamesatwork.biz

There are probably more, and there will be more of course. Now much of the chatter I create relates to things in the new book. It’s called Cont3xt at the moment. It follows on and meshes with the timeline of Reconfigure. It is very exciting again. I am back on binge-watching my own series.

I have realised that the aspirational nature of writing, wanting people to enjoy your work and your product is more humbling and scary than exciting. If people don’t buy the book, it’s not because it is not good. They wouldn’t know. With only a few reviews at the moment and not really enough sample size to judge it by I just have to leave it there to be its own thing now.

If every follower and like that I had bought the £1.99/$2.99 e-book today, right now it would hit the top 100. I can see the variance that even a single sale makes to the rank. I don’t have an agent or publisher pushing it. However, I have created what I set out to do and learned a lot in the process about things I was not expecting to learn. That can only be a good thing.

I care about Roisin Kincade, my lead character. Right at the moment she is in quite a difficult place. So I need to keep writing to rescue her. I have the storyboard/architecture and I have some experience in code/writing and testing/editing plus I know how to publish and try to market it. So I best get on with it.

The book, it’s blurb and links to where to get a copy are all on Reconfigurebook.co.uk

Blended Reality – Hiding under tables.

Having been somewhat preoccupied with, you know what, the past few weeks I had not had a chance to comment and share the current wave of demos relating to Google’s Magic Leap. This video was published, ‘shot through magic leap technology’ a few weeks ago.

It has some interesting features to take note of. The little character is under the table. However he is also behind the leg of the table. The real world object clips him and obscures him as the camera pans across. He is floating around and bobbing a little, but the registration with the physical in a hand held karma shot is very impressive.
Also intersting, and more obvious in the solar system shot, is the use of focus. The objects are not always in focus just as a real camera would need to adjust as it got closer. Many AR experiences and blended reality experiences do not have that. They may have lighting and a presence relative to a physical space but they are like 3d stickers.
It is a lot more convincing and real than the large Whale jumping one that was doing the rounds. That looked like an aspirational PR video of what we could expect one day.
I am really looking forward to the next few months/years as these devices become accessible. It is way more exciting than just pure VR (though I love that too!)
It enables us to start instrumenting the world visually as much as we are under the covers with the Internet of Things.

Virtual becomes physical part ii

Today the paperback version of Reconfigure (my sci-fi novel I may have mentioned a few times!) went live. I was really happy with the proof that came from Createspace.

The amazon.com version is also there
I am setting up matchbook so it should mean that the digital copy is available to anyone who buys the physical copy. I am not sure how that pans out or works out, but it works retrospectively is someone buys the physical book and then would like the digital one once the scheme kicks in.
I got predlet 2.0 to help out with an advert for the book. It is a little easter egg, there are a few of them out there, based on the contents so readers or would be readers get a little in the know payoff.

I have been bouncing around the various advert platforms. I am still not sure which works, but I know which ones cost way too much 🙂
Anyway, this new solid paper version might make a good christmas present for someone ? Plus is is something I can wander around and show people, just in case they don’t believe me.
The plans that tomorrow is day 1 of storyboarding book 2. I have a rough idea what that is, there are plenty of hooks on the first book to work with and mesh into, though I don’t want to make each book mandatory. That may be asking a little too much, but it’s an aim.

Virtual Becomes Physical

Have you bought the ebook yet? If not … cough… why not ? 🙂 Even without a kindle you can read it on any device. Go on you know you want too 🙂
I decided once the ebook was published for Reconfigure it would be interesting to explore the print on demand options from CreateSpace. It was some more formatting work to do and also create more than just a cover page. It needed a back page and the blurb associated with it. It also needed a more physical form of typesetting. ebooks are really HTML and reformat themselves. Physical books have to consider the gutter spacing when the pages are bound so you can read all the words.
The first proof arrived today.
Reconfigure goes from virtual to real http://www.reconfigurebook.co.uk #proofing
It was very exciting to see the thing in actual print. I had selected the 6x9inch format as that was the recommended one. However now I look at it it looks a little large, more like a text book than a novel. So I am just working out how to reformat it down to 5×8 a normal paperback size. I also removed all the page numbers, which was something I thought it asked me to do. I realise it was asking that you remove page numbers on the preamble pages. ebooks don’t have any footers for page numbers as the device generates those based on the users font size choice.
Now I have page numbers, I tightened the spacing from the double spaced to 1.5 and I am now resubmitting it all. It means buying another proof copy, but the other book is handy for promo shots being a little bigger 🙂 It is possible to do an awful lot with the support tools that are provided. Each PDF upload is checked that it fits in the correct area and formats correctly. You still have to visually check each page just in case of course. The physical instantiation being the final decision on what goes live. The cover art needs to be in a suitable high resolution (mine already was). It even shows the mouse pointer arrow that is a tiny detail mid cube that is hard to see on the digital covers as they are at the moment.
So onwards and upwards. Of course the print version will be relatively expensive as it is a print on demand. I do not have the economies of scale to produce cheaper versions (yet). I will probably do the Kindle matchbook scheme where physical get a digital version too. It seems very fair to me. I can’t do that until the book is physically live though.

Every advert counts – Fast cars work too

Whilst waiting for Halo5 to drop last night at midnight I spent a little time on Forza 6 creating another custom paint job. This time for, yes, you guessed it Reconfigure It is part of my immersion in my own product to use it in places that I already have done similar things and provide a little twist on the traditional.
I have done Eightbar (in 2007), Epredator, Feeding Edge, Choi Kwang Do and Cool Stuff Collective decals in the past. It is a complicated process involving layering stickers and resizing them not just paining and uploading. It makes for an interesting challenge to get the spirit of an image if not the exact replica.
Here is a lambo done up with Reconfigure.
Reconfigure book paintwork on a lambo
Reconfigure book paintwork on a lambo
Reconfigure book paintwork on a lambo
Reconfigure book paintwork on a lambo
Reconfigure book paintwork on a lambo
I also recorded a lap of Brands Hatch just for a bit of fun too.

Whilst this car will appear, and show Reconfigure when I race, and also appear on a drivatar racing in someones living room I doubt anyone will buy the book on the basis of this, but it is what I do, so I did 🙂
I was attempting to promote the book and get up the sales rank a little by natural sharing.Many thanks to those people who have supported me with a purchase. It means a great deal.
Having always tried to help and support other people in their projects and sharing all sorts of things that may be interesting to colleagues and followers out there I found I succumbed to having to advertise. The book numbers could reach a tipping point with just the people who I have worked with or shared time with popped £1.99/$2.99 in the help epredatar out project. People don’t just buy books, or ebooks for no reason. They are not impulse buys. You have no idea what is in it, unless there are reviews, or people are saying good things about it. Me just wibbling on and enthusing probably sounds more like a noise of “here he goes again”. However, this is a book based on metaverse concepts, on software and game design as well as adventure. When I help people out I don’t expect anything in return so I feel guilty for even asking. Anyway, Facebook ads have been my first forays into the weird world of online targeted ads.
I created 3 ads each with a very low maximum spend. One is a page like for the Facebook page. The other two are direct links to the Amazon book. One targeted at US and Canada the other to the UK. It will be interesting to see what happens there. My numbers are such, at the moment, I can see a one to one relationship between and add and a potential sale.
I had targeted people into tech, my old company, Unity development and Second Life and virtual worlds. It obviously worked as I got sent the ad myself, as did elemming.
Got advertised at by my own advert. So I meet the demographic
I didn’t click on my own ad as its the click to go to Amazon that calls off against the ad budget. It is a pity it does not relate to the sale of a copy, but Facebook is just pushing a URL and the shop is Amazon.
It’s early days, and I am non established author. I like to think I have a bit of reputation as a forward thinker who might make something interesting. I welcome all feedback, good and bad. I will try some other advertising options as the months go on. This is all an experiment after all 🙂

Promoting a product – Reconfigure

It is only a few days since Reconfigure went live on the Amazon store. I need to apologise for the single minded promoting of this 2 month project. It has been a both nerve wracking and exciting time. I have spent many years promoting other peoples ideas, getting buy in and passionate about what they have produced. Now I have to do that for my own product. From a standing start, not having written like this before it is an intriguing position to be in. I believe I have some social capital across social media and the tech industry, but it will be the sales figures that tell me that or now. The Book is only £1.99 so I hope friends, family and followers just support it with a purchase to help the sales rank. A good ales rank draws other people to the book.

However to promote it properly I have done the following.
1. Share the fact it was happening. This was form the outset, helping me through the writing and editing process with people retweeting or asking me about the book.
2. A URL for Reconfigurebook.co.uk. This links to a page on Feeding Edge but it acts as a central point for sharing the book before it was live on Amazon.
3. A Facebook page for the book too. It is replication but some people share those things and not blog posts or tweets. You have to try and be everywhere.
4. When it went live tweeting the link and pinning that to my profile
5. Instagram post of the front cover and the URL
6. Creating profiles on Author central in the US and the UK I now have amazon.com/author/epredator
7. Author central suggested creating a video. So I did, and also then put that on youtube. A bit of editing and bit more information and background to the whole project is in this mini advert.

8. Linkedin. Sharing there too. Adding it to the publications I have listed
9. Pinging a few people privately. I did not want to spam everyone, but just a few hello’s to some nice people who might like the book, or like the fact I have done the book and share a bit wider.
10. Empire Avenue, I created a little mission for people to click through
11. With the video uploaded to Facebook is can be linked to an action, just as there ar links in the youtube version to the site or to amazon
12. Make a print copy of the book. This is in process at the moment. CreateSpace is part of Amazon and helps you put together the different layout and parts for a print on demand. I will have to see how that goes as it was not in the original plan. It might be nice to have a few copies.
13. What next? Well if the social network and everyone out there helps the sales figures this may not need much more, it may tip. However, next would be the costly options of advertising. Where and how and with which service I have yet to work out. I can see direct sales figures so have a good idea of how many people have been good enough to support this for me, not and hopefully with some more sales over the coming weeks.
14. Write another one. It seems having more than one book or a series can attract more people to what you are doing. As with all these things it can be a case of ‘yeah so what you wrote a book’ 🙂
15. Get positive reviews. These are important. It has already started but more would be lovely.
Update 28/10/2015
16. I realised I had not actually advertised on Amazon. It makes sense to be there after all. So I just did started an ad run there too.

I am going to explore and keep an open mind. The story is out there, it feels like I am at the end of my own box set series and now I am looking for the next thing. I did not go down the agent route as I wanted to see and experience this part. Doing everything form start to finish using the tools available to me. I did some unusual twists in that path. e.g. the swirls on the cover are actually effects in Unity with a planetary plugin. I created the layout and background, removed some parts added others and snapped the 3d view into 2d. It forms a backdrop for the cube, which was also Unity3d. It fits with the story in a nice meta way too.

Reconfigure is available right now!

I just hit publish on the Amazon Kindle site, I was expecting it to take a few days but it seems Reconfigure, my first novel is live and available for purchase right now.

The UK link is here, but it will direct you to the relevant territory as it is available globally.
It feels a somewhat odd experience to have let Roisin Kincade out into the wild along with all the wonderful tech and adventures she has had.
I hope, if you choose to buy the book, that you enjoy it. It has been a wonderful experience to create it.
rccover3small
Reconfigure!

Shady Maths for Shaders

I like a good tech challenge and I decided to look a bit more into the world of shaders. I had not fully appreciated how many competing languages there were for these low level compute systems. I had used shaders in Unity3D and I knew we could do fancy things with them. They are wonderfully complicated and full of maths. As with all code you can go native and just write the code directly. There are also tools to help. Things like shadertoy let you see some of the fun that can be had. It reminds me of hacking with the copper process in the old Amiga days. Low level graphics manipulation, direct to the pipeline.
In Unity3d there is a tool I bought a while back called ShaderForge. It allows for editing of the shaders but in a visual way. Each little node shows the results of the maths that is going on in its own area. It is common to have this sort of material editing in 3D applications. There is a lot of maths available and I am only just skimming the surface of what can be done.
I was trying to create a realistic wood ring shader. I wanted to do something like that demonstrated here in normal code (not any of the shader languages).
I ended up with something that looked like this.
ShaderForge Unity3d
It was nearly the concentric rings, but I can only get it to start from the bottom left corner. I have yet to work out which number I can use for an offset so I can get full circles. I have worked out where to put in variance and noise to make the lines wobble a little. So I am a little stuck if anyone has any suggestions I would be very grateful 🙂 I want a random shader texture, slightly different each time which is why I am not using images as I normally do. I am not worried about the colour at the moment BTW. That is a function of scaling the mapping in the sin sweeping function that creates the ripples. I stuck a few extra value modifiers (some set to 0) to see if I could tweak the shader to do what I wanted, but no luck yet. Shaderforge has its own meta data but the thing can be compiled into a full shader in native code.
Just look at what it generates, its fairly full on code.
So it looks like I have quite a lot of learning to do. With code there is always more, always another language or format for something 🙂

***Update Yay for the internet. Dickie replied to this post very very quickly with an image of a very much simpler way for generate the concentric rings. This has massively added to my understanding of the process and is very much appreciated.


// Compiled shader for Web Player, uncompressed size: 14.0KB

// Skipping shader variants that would not be included into build of current scene.

Shader "Shader Forge/wood3" {
Properties {
_Color ("Color", Color) = (0.727941,0.116656,0.0856401,1)
_node_4617 ("node_4617", Color) = (0.433823,0.121051,0.0287089,1)
_node_1057 ("node_1057", Float) = 0.2
}
SubShader {
Tags { "RenderType"="Opaque" }

// Stats for Vertex shader:
// d3d11 : 4 math
// d3d9 : 5 math
// opengl : 10 math
// Stats for Fragment shader:
// d3d11 : 9 math
// d3d9 : 15 math
Pass {
Name "FORWARD"
Tags { "LIGHTMODE"="ForwardBase" "SHADOWSUPPORT"="true" "RenderType"="Opaque" }
GpuProgramID 47164
Program "vp" {
SubProgram "opengl " {
// Stats: 10 math
Keywords { "DIRECTIONAL" "SHADOWS_OFF" "LIGHTMAP_OFF" "DIRLIGHTMAP_OFF" "DYNAMICLIGHTMAP_OFF" }
"!!GLSL#version 120

#ifdef VERTEX

varying vec2 xlv_TEXCOORD0;
void main ()
{
gl_Position = (gl_ModelViewProjectionMatrix * gl_Vertex);
xlv_TEXCOORD0 = gl_MultiTexCoord0.xy;
}

#endif
#ifdef FRAGMENT
uniform vec4 _Color;
uniform vec4 _node_4617;
uniform float _node_1057;
varying vec2 xlv_TEXCOORD0;
void main ()
{
vec4 tmpvar_1;
tmpvar_1.w = 1.0;
tmpvar_1.xyz = mix (_node_4617.xyz, _Color.xyz, vec3(((
sqrt((pow ((xlv_TEXCOORD0.x + 0.2), _node_1057) + pow ((xlv_TEXCOORD0.y + 10.0), _node_1057)))
* 11.0) + -10.0)));
gl_FragData[0] = tmpvar_1;
}

#endif
"
}
SubProgram "d3d9 " {
// Stats: 5 math
Keywords { "DIRECTIONAL" "SHADOWS_OFF" "LIGHTMAP_OFF" "DIRLIGHTMAP_OFF" "DYNAMICLIGHTMAP_OFF" }
Bind "vertex" Vertex
Bind "texcoord" TexCoord0
Matrix 0 [glstate_matrix_mvp]
"vs_3_0
dcl_position v0
dcl_texcoord v1
dcl_position o0
dcl_texcoord o1.xy
dp4 o0.x, c0, v0
dp4 o0.y, c1, v0
dp4 o0.z, c2, v0
dp4 o0.w, c3, v0
mov o1.xy, v1

"
}
SubProgram "d3d11 " {
// Stats: 4 math
Keywords { "DIRECTIONAL" "SHADOWS_OFF" "LIGHTMAP_OFF" "DIRLIGHTMAP_OFF" "DYNAMICLIGHTMAP_OFF" }
Bind "vertex" Vertex
Bind "texcoord" TexCoord0
ConstBuffer "UnityPerDraw" 336
Matrix 0 [glstate_matrix_mvp]
BindCB "UnityPerDraw" 0
"vs_4_0
root12:aaabaaaa
eefiecedaffpdldohodkdgpagjklpapmmnbhcfmlabaaaaaaoeabaaaaadaaaaaa
cmaaaaaaiaaaaaaaniaaaaaaejfdeheoemaaaaaaacaaaaaaaiaaaaaadiaaaaaa
aaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaapapaaaaebaaaaaaaaaaaaaaaaaaaaaa
adaaaaaaabaaaaaaadadaaaafaepfdejfeejepeoaafeeffiedepepfceeaaklkl
epfdeheofaaaaaaaacaaaaaaaiaaaaaadiaaaaaaaaaaaaaaabaaaaaaadaaaaaa
aaaaaaaaapaaaaaaeeaaaaaaaaaaaaaaaaaaaaaaadaaaaaaabaaaaaaadamaaaa
fdfgfpfaepfdejfeejepeoaafeeffiedepepfceeaaklklklfdeieefcaeabaaaa
eaaaabaaebaaaaaafjaaaaaeegiocaaaaaaaaaaaaeaaaaaafpaaaaadpcbabaaa
aaaaaaaafpaaaaaddcbabaaaabaaaaaaghaaaaaepccabaaaaaaaaaaaabaaaaaa
gfaaaaaddccabaaaabaaaaaagiaaaaacabaaaaaadiaaaaaipcaabaaaaaaaaaaa
fgbfbaaaaaaaaaaaegiocaaaaaaaaaaaabaaaaaadcaaaaakpcaabaaaaaaaaaaa
egiocaaaaaaaaaaaaaaaaaaaagbabaaaaaaaaaaaegaobaaaaaaaaaaadcaaaaak
pcaabaaaaaaaaaaaegiocaaaaaaaaaaaacaaaaaakgbkbaaaaaaaaaaaegaobaaa
aaaaaaaadcaaaaakpccabaaaaaaaaaaaegiocaaaaaaaaaaaadaaaaaapgbpbaaa
aaaaaaaaegaobaaaaaaaaaaadgaaaaafdccabaaaabaaaaaaegbabaaaabaaaaaa
doaaaaab"
}
SubProgram "opengl " {
// Stats: 10 math
Keywords { "DIRECTIONAL" "SHADOWS_SCREEN" "LIGHTMAP_OFF" "DIRLIGHTMAP_OFF" "DYNAMICLIGHTMAP_OFF" }
"!!GLSL#version 120

#ifdef VERTEX

varying vec2 xlv_TEXCOORD0;
void main ()
{
gl_Position = (gl_ModelViewProjectionMatrix * gl_Vertex);
xlv_TEXCOORD0 = gl_MultiTexCoord0.xy;
}

#endif
#ifdef FRAGMENT
uniform vec4 _Color;
uniform vec4 _node_4617;
uniform float _node_1057;
varying vec2 xlv_TEXCOORD0;
void main ()
{
vec4 tmpvar_1;
tmpvar_1.w = 1.0;
tmpvar_1.xyz = mix (_node_4617.xyz, _Color.xyz, vec3(((
sqrt((pow ((xlv_TEXCOORD0.x + 0.2), _node_1057) + pow ((xlv_TEXCOORD0.y + 10.0), _node_1057)))
* 11.0) + -10.0)));
gl_FragData[0] = tmpvar_1;
}

#endif
"
}
SubProgram "d3d9 " {
// Stats: 5 math
Keywords { "DIRECTIONAL" "SHADOWS_SCREEN" "LIGHTMAP_OFF" "DIRLIGHTMAP_OFF" "DYNAMICLIGHTMAP_OFF" }
Bind "vertex" Vertex
Bind "texcoord" TexCoord0
Matrix 0 [glstate_matrix_mvp]
"vs_3_0
dcl_position v0
dcl_texcoord v1
dcl_position o0
dcl_texcoord o1.xy
dp4 o0.x, c0, v0
dp4 o0.y, c1, v0
dp4 o0.z, c2, v0
dp4 o0.w, c3, v0
mov o1.xy, v1

"
}
SubProgram "d3d11 " {
// Stats: 4 math
Keywords { "DIRECTIONAL" "SHADOWS_SCREEN" "LIGHTMAP_OFF" "DIRLIGHTMAP_OFF" "DYNAMICLIGHTMAP_OFF" }
Bind "vertex" Vertex
Bind "texcoord" TexCoord0
ConstBuffer "UnityPerDraw" 336
Matrix 0 [glstate_matrix_mvp]
BindCB "UnityPerDraw" 0
"vs_4_0
root12:aaabaaaa
eefiecedaffpdldohodkdgpagjklpapmmnbhcfmlabaaaaaaoeabaaaaadaaaaaa
cmaaaaaaiaaaaaaaniaaaaaaejfdeheoemaaaaaaacaaaaaaaiaaaaaadiaaaaaa
aaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaapapaaaaebaaaaaaaaaaaaaaaaaaaaaa
adaaaaaaabaaaaaaadadaaaafaepfdejfeejepeoaafeeffiedepepfceeaaklkl
epfdeheofaaaaaaaacaaaaaaaiaaaaaadiaaaaaaaaaaaaaaabaaaaaaadaaaaaa
aaaaaaaaapaaaaaaeeaaaaaaaaaaaaaaaaaaaaaaadaaaaaaabaaaaaaadamaaaa
fdfgfpfaepfdejfeejepeoaafeeffiedepepfceeaaklklklfdeieefcaeabaaaa
eaaaabaaebaaaaaafjaaaaaeegiocaaaaaaaaaaaaeaaaaaafpaaaaadpcbabaaa
aaaaaaaafpaaaaaddcbabaaaabaaaaaaghaaaaaepccabaaaaaaaaaaaabaaaaaa
gfaaaaaddccabaaaabaaaaaagiaaaaacabaaaaaadiaaaaaipcaabaaaaaaaaaaa
fgbfbaaaaaaaaaaaegiocaaaaaaaaaaaabaaaaaadcaaaaakpcaabaaaaaaaaaaa
egiocaaaaaaaaaaaaaaaaaaaagbabaaaaaaaaaaaegaobaaaaaaaaaaadcaaaaak
pcaabaaaaaaaaaaaegiocaaaaaaaaaaaacaaaaaakgbkbaaaaaaaaaaaegaobaaa
aaaaaaaadcaaaaakpccabaaaaaaaaaaaegiocaaaaaaaaaaaadaaaaaapgbpbaaa
aaaaaaaaegaobaaaaaaaaaaadgaaaaafdccabaaaabaaaaaaegbabaaaabaaaaaa
doaaaaab"
}
SubProgram "opengl " {
// Stats: 10 math
Keywords { "DIRECTIONAL" "SHADOWS_OFF" "LIGHTMAP_OFF" "DIRLIGHTMAP_OFF" "DYNAMICLIGHTMAP_OFF" "VERTEXLIGHT_ON" }
"!!GLSL#version 120

#ifdef VERTEX

varying vec2 xlv_TEXCOORD0;
void main ()
{
gl_Position = (gl_ModelViewProjectionMatrix * gl_Vertex);
xlv_TEXCOORD0 = gl_MultiTexCoord0.xy;
}

#endif
#ifdef FRAGMENT
uniform vec4 _Color;
uniform vec4 _node_4617;
uniform float _node_1057;
varying vec2 xlv_TEXCOORD0;
void main ()
{
vec4 tmpvar_1;
tmpvar_1.w = 1.0;
tmpvar_1.xyz = mix (_node_4617.xyz, _Color.xyz, vec3(((
sqrt((pow ((xlv_TEXCOORD0.x + 0.2), _node_1057) + pow ((xlv_TEXCOORD0.y + 10.0), _node_1057)))
* 11.0) + -10.0)));
gl_FragData[0] = tmpvar_1;
}

#endif
"
}
SubProgram "d3d9 " {
// Stats: 5 math
Keywords { "DIRECTIONAL" "SHADOWS_OFF" "LIGHTMAP_OFF" "DIRLIGHTMAP_OFF" "DYNAMICLIGHTMAP_OFF" "VERTEXLIGHT_ON" }
Bind "vertex" Vertex
Bind "texcoord" TexCoord0
Matrix 0 [glstate_matrix_mvp]
"vs_3_0
dcl_position v0
dcl_texcoord v1
dcl_position o0
dcl_texcoord o1.xy
dp4 o0.x, c0, v0
dp4 o0.y, c1, v0
dp4 o0.z, c2, v0
dp4 o0.w, c3, v0
mov o1.xy, v1

"
}
SubProgram "d3d11 " {
// Stats: 4 math
Keywords { "DIRECTIONAL" "SHADOWS_OFF" "LIGHTMAP_OFF" "DIRLIGHTMAP_OFF" "DYNAMICLIGHTMAP_OFF" "VERTEXLIGHT_ON" }
Bind "vertex" Vertex
Bind "texcoord" TexCoord0
ConstBuffer "UnityPerDraw" 336
Matrix 0 [glstate_matrix_mvp]
BindCB "UnityPerDraw" 0
"vs_4_0
root12:aaabaaaa
eefiecedaffpdldohodkdgpagjklpapmmnbhcfmlabaaaaaaoeabaaaaadaaaaaa
cmaaaaaaiaaaaaaaniaaaaaaejfdeheoemaaaaaaacaaaaaaaiaaaaaadiaaaaaa
aaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaapapaaaaebaaaaaaaaaaaaaaaaaaaaaa
adaaaaaaabaaaaaaadadaaaafaepfdejfeejepeoaafeeffiedepepfceeaaklkl
epfdeheofaaaaaaaacaaaaaaaiaaaaaadiaaaaaaaaaaaaaaabaaaaaaadaaaaaa
aaaaaaaaapaaaaaaeeaaaaaaaaaaaaaaaaaaaaaaadaaaaaaabaaaaaaadamaaaa
fdfgfpfaepfdejfeejepeoaafeeffiedepepfceeaaklklklfdeieefcaeabaaaa
eaaaabaaebaaaaaafjaaaaaeegiocaaaaaaaaaaaaeaaaaaafpaaaaadpcbabaaa
aaaaaaaafpaaaaaddcbabaaaabaaaaaaghaaaaaepccabaaaaaaaaaaaabaaaaaa
gfaaaaaddccabaaaabaaaaaagiaaaaacabaaaaaadiaaaaaipcaabaaaaaaaaaaa
fgbfbaaaaaaaaaaaegiocaaaaaaaaaaaabaaaaaadcaaaaakpcaabaaaaaaaaaaa
egiocaaaaaaaaaaaaaaaaaaaagbabaaaaaaaaaaaegaobaaaaaaaaaaadcaaaaak
pcaabaaaaaaaaaaaegiocaaaaaaaaaaaacaaaaaakgbkbaaaaaaaaaaaegaobaaa
aaaaaaaadcaaaaakpccabaaaaaaaaaaaegiocaaaaaaaaaaaadaaaaaapgbpbaaa
aaaaaaaaegaobaaaaaaaaaaadgaaaaafdccabaaaabaaaaaaegbabaaaabaaaaaa
doaaaaab"
}
SubProgram "opengl " {
// Stats: 10 math
Keywords { "DIRECTIONAL" "SHADOWS_SCREEN" "LIGHTMAP_OFF" "DIRLIGHTMAP_OFF" "DYNAMICLIGHTMAP_OFF" "VERTEXLIGHT_ON" }
"!!GLSL#version 120

#ifdef VERTEX

varying vec2 xlv_TEXCOORD0;
void main ()
{
gl_Position = (gl_ModelViewProjectionMatrix * gl_Vertex);
xlv_TEXCOORD0 = gl_MultiTexCoord0.xy;
}

#endif
#ifdef FRAGMENT
uniform vec4 _Color;
uniform vec4 _node_4617;
uniform float _node_1057;
varying vec2 xlv_TEXCOORD0;
void main ()
{
vec4 tmpvar_1;
tmpvar_1.w = 1.0;
tmpvar_1.xyz = mix (_node_4617.xyz, _Color.xyz, vec3(((
sqrt((pow ((xlv_TEXCOORD0.x + 0.2), _node_1057) + pow ((xlv_TEXCOORD0.y + 10.0), _node_1057)))
* 11.0) + -10.0)));
gl_FragData[0] = tmpvar_1;
}

#endif
"
}
SubProgram "d3d9 " {
// Stats: 5 math
Keywords { "DIRECTIONAL" "SHADOWS_SCREEN" "LIGHTMAP_OFF" "DIRLIGHTMAP_OFF" "DYNAMICLIGHTMAP_OFF" "VERTEXLIGHT_ON" }
Bind "vertex" Vertex
Bind "texcoord" TexCoord0
Matrix 0 [glstate_matrix_mvp]
"vs_3_0
dcl_position v0
dcl_texcoord v1
dcl_position o0
dcl_texcoord o1.xy
dp4 o0.x, c0, v0
dp4 o0.y, c1, v0
dp4 o0.z, c2, v0
dp4 o0.w, c3, v0
mov o1.xy, v1

"
}
SubProgram "d3d11 " {
// Stats: 4 math
Keywords { "DIRECTIONAL" "SHADOWS_SCREEN" "LIGHTMAP_OFF" "DIRLIGHTMAP_OFF" "DYNAMICLIGHTMAP_OFF" "VERTEXLIGHT_ON" }
Bind "vertex" Vertex
Bind "texcoord" TexCoord0
ConstBuffer "UnityPerDraw" 336
Matrix 0 [glstate_matrix_mvp]
BindCB "UnityPerDraw" 0
"vs_4_0
root12:aaabaaaa
eefiecedaffpdldohodkdgpagjklpapmmnbhcfmlabaaaaaaoeabaaaaadaaaaaa
cmaaaaaaiaaaaaaaniaaaaaaejfdeheoemaaaaaaacaaaaaaaiaaaaaadiaaaaaa
aaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaapapaaaaebaaaaaaaaaaaaaaaaaaaaaa
adaaaaaaabaaaaaaadadaaaafaepfdejfeejepeoaafeeffiedepepfceeaaklkl
epfdeheofaaaaaaaacaaaaaaaiaaaaaadiaaaaaaaaaaaaaaabaaaaaaadaaaaaa
aaaaaaaaapaaaaaaeeaaaaaaaaaaaaaaaaaaaaaaadaaaaaaabaaaaaaadamaaaa
fdfgfpfaepfdejfeejepeoaafeeffiedepepfceeaaklklklfdeieefcaeabaaaa
eaaaabaaebaaaaaafjaaaaaeegiocaaaaaaaaaaaaeaaaaaafpaaaaadpcbabaaa
aaaaaaaafpaaaaaddcbabaaaabaaaaaaghaaaaaepccabaaaaaaaaaaaabaaaaaa
gfaaaaaddccabaaaabaaaaaagiaaaaacabaaaaaadiaaaaaipcaabaaaaaaaaaaa
fgbfbaaaaaaaaaaaegiocaaaaaaaaaaaabaaaaaadcaaaaakpcaabaaaaaaaaaaa
egiocaaaaaaaaaaaaaaaaaaaagbabaaaaaaaaaaaegaobaaaaaaaaaaadcaaaaak
pcaabaaaaaaaaaaaegiocaaaaaaaaaaaacaaaaaakgbkbaaaaaaaaaaaegaobaaa
aaaaaaaadcaaaaakpccabaaaaaaaaaaaegiocaaaaaaaaaaaadaaaaaapgbpbaaa
aaaaaaaaegaobaaaaaaaaaaadgaaaaafdccabaaaabaaaaaaegbabaaaabaaaaaa
doaaaaab"
}
}
Program "fp" {
SubProgram "opengl " {
Keywords { "DIRECTIONAL" "SHADOWS_OFF" "LIGHTMAP_OFF" "DIRLIGHTMAP_OFF" "DYNAMICLIGHTMAP_OFF" }
"!!GLSL"
}
SubProgram "d3d9 " {
// Stats: 15 math
Keywords { "DIRECTIONAL" "SHADOWS_OFF" "LIGHTMAP_OFF" "DIRLIGHTMAP_OFF" "DYNAMICLIGHTMAP_OFF" }
Vector 0 [_Color]
Float 2 [_node_1057]
Vector 1 [_node_4617]
"ps_3_0
def c3, 0.200000003, 10, 11, -10
def c4, 1, 0, 0, 0
dcl_texcoord v0.xy
add r0.xy, c3, v0
pow r1.x, r0.x, c2.x
pow r1.y, r0.y, c2.x
add r0.x, r1.y, r1.x
rsq r0.x, r0.x
rcp r0.x, r0.x
mad r0.x, r0.x, c3.z, c3.w
mov r1.xyz, c1
add r0.yzw, -r1.xxyz, c0.xxyz
mad oC0.xyz, r0.x, r0.yzww, c1
mov oC0.w, c4.x

"
}
SubProgram "d3d11 " {
// Stats: 9 math
Keywords { "DIRECTIONAL" "SHADOWS_OFF" "LIGHTMAP_OFF" "DIRLIGHTMAP_OFF" "DYNAMICLIGHTMAP_OFF" }
ConstBuffer "$Globals" 144
Vector 96 [_Color]
Vector 112 [_node_4617]
Float 128 [_node_1057]
BindCB "$Globals" 0
"ps_4_0
root12:aaabaaaa
eefiecedbabakleflijnjmcmgkldbcbdippjnhehabaaaaaaceacaaaaadaaaaaa
cmaaaaaaieaaaaaaliaaaaaaejfdeheofaaaaaaaacaaaaaaaiaaaaaadiaaaaaa
aaaaaaaaabaaaaaaadaaaaaaaaaaaaaaapaaaaaaeeaaaaaaaaaaaaaaaaaaaaaa
adaaaaaaabaaaaaaadadaaaafdfgfpfaepfdejfeejepeoaafeeffiedepepfcee
aaklklklepfdeheocmaaaaaaabaaaaaaaiaaaaaacaaaaaaaaaaaaaaaaaaaaaaa
adaaaaaaaaaaaaaaapaaaaaafdfgfpfegbhcghgfheaaklklfdeieefcgeabaaaa
eaaaaaaafjaaaaaafjaaaaaeegiocaaaaaaaaaaaajaaaaaagcbaaaaddcbabaaa
abaaaaaagfaaaaadpccabaaaaaaaaaaagiaaaaacabaaaaaaaaaaaaakdcaabaaa
aaaaaaaaegbabaaaabaaaaaaaceaaaaamnmmemdoaaaacaebaaaaaaaaaaaaaaaa
cpaaaaafdcaabaaaaaaaaaaaegaabaaaaaaaaaaadiaaaaaidcaabaaaaaaaaaaa
egaabaaaaaaaaaaaagiacaaaaaaaaaaaaiaaaaaabjaaaaafdcaabaaaaaaaaaaa
egaabaaaaaaaaaaaaaaaaaahbcaabaaaaaaaaaaabkaabaaaaaaaaaaaakaabaaa
aaaaaaaaelaaaaafbcaabaaaaaaaaaaaakaabaaaaaaaaaaadcaaaaajbcaabaaa
aaaaaaaaakaabaaaaaaaaaaaabeaaaaaaaaadaebabeaaaaaaaaacambaaaaaaak
ocaabaaaaaaaaaaaagijcaaaaaaaaaaaagaaaaaaagijcaiaebaaaaaaaaaaaaaa
ahaaaaaadcaaaaakhccabaaaaaaaaaaaagaabaaaaaaaaaaajgahbaaaaaaaaaaa
egiccaaaaaaaaaaaahaaaaaadgaaaaaficcabaaaaaaaaaaaabeaaaaaaaaaiadp
doaaaaab"
}
SubProgram "opengl " {
Keywords { "DIRECTIONAL" "SHADOWS_SCREEN" "LIGHTMAP_OFF" "DIRLIGHTMAP_OFF" "DYNAMICLIGHTMAP_OFF" }
"!!GLSL"
}
SubProgram "d3d9 " {
// Stats: 15 math
Keywords { "DIRECTIONAL" "SHADOWS_SCREEN" "LIGHTMAP_OFF" "DIRLIGHTMAP_OFF" "DYNAMICLIGHTMAP_OFF" }
Vector 0 [_Color]
Float 2 [_node_1057]
Vector 1 [_node_4617]
"ps_3_0
def c3, 0.200000003, 10, 11, -10
def c4, 1, 0, 0, 0
dcl_texcoord v0.xy
add r0.xy, c3, v0
pow r1.x, r0.x, c2.x
pow r1.y, r0.y, c2.x
add r0.x, r1.y, r1.x
rsq r0.x, r0.x
rcp r0.x, r0.x
mad r0.x, r0.x, c3.z, c3.w
mov r1.xyz, c1
add r0.yzw, -r1.xxyz, c0.xxyz
mad oC0.xyz, r0.x, r0.yzww, c1
mov oC0.w, c4.x

"
}
SubProgram "d3d11 " {
// Stats: 9 math
Keywords { "DIRECTIONAL" "SHADOWS_SCREEN" "LIGHTMAP_OFF" "DIRLIGHTMAP_OFF" "DYNAMICLIGHTMAP_OFF" }
ConstBuffer "$Globals" 144
Vector 96 [_Color]
Vector 112 [_node_4617]
Float 128 [_node_1057]
BindCB "$Globals" 0
"ps_4_0
root12:aaabaaaa
eefiecedbabakleflijnjmcmgkldbcbdippjnhehabaaaaaaceacaaaaadaaaaaa
cmaaaaaaieaaaaaaliaaaaaaejfdeheofaaaaaaaacaaaaaaaiaaaaaadiaaaaaa
aaaaaaaaabaaaaaaadaaaaaaaaaaaaaaapaaaaaaeeaaaaaaaaaaaaaaaaaaaaaa
adaaaaaaabaaaaaaadadaaaafdfgfpfaepfdejfeejepeoaafeeffiedepepfcee
aaklklklepfdeheocmaaaaaaabaaaaaaaiaaaaaacaaaaaaaaaaaaaaaaaaaaaaa
adaaaaaaaaaaaaaaapaaaaaafdfgfpfegbhcghgfheaaklklfdeieefcgeabaaaa
eaaaaaaafjaaaaaafjaaaaaeegiocaaaaaaaaaaaajaaaaaagcbaaaaddcbabaaa
abaaaaaagfaaaaadpccabaaaaaaaaaaagiaaaaacabaaaaaaaaaaaaakdcaabaaa
aaaaaaaaegbabaaaabaaaaaaaceaaaaamnmmemdoaaaacaebaaaaaaaaaaaaaaaa
cpaaaaafdcaabaaaaaaaaaaaegaabaaaaaaaaaaadiaaaaaidcaabaaaaaaaaaaa
egaabaaaaaaaaaaaagiacaaaaaaaaaaaaiaaaaaabjaaaaafdcaabaaaaaaaaaaa
egaabaaaaaaaaaaaaaaaaaahbcaabaaaaaaaaaaabkaabaaaaaaaaaaaakaabaaa
aaaaaaaaelaaaaafbcaabaaaaaaaaaaaakaabaaaaaaaaaaadcaaaaajbcaabaaa
aaaaaaaaakaabaaaaaaaaaaaabeaaaaaaaaadaebabeaaaaaaaaacambaaaaaaak
ocaabaaaaaaaaaaaagijcaaaaaaaaaaaagaaaaaaagijcaiaebaaaaaaaaaaaaaa
ahaaaaaadcaaaaakhccabaaaaaaaaaaaagaabaaaaaaaaaaajgahbaaaaaaaaaaa
egiccaaaaaaaaaaaahaaaaaadgaaaaaficcabaaaaaaaaaaaabeaaaaaaaaaiadp
doaaaaab"
}
}
}
}
Fallback "Diffuse"
}

Star Wars Battlefront Beta

Last night I took a few hours off re-reading and tweaking my Reconfigure Book reminding myself that there is still world out here. I downloaded the public beta of Star Wars battlefront.
It is very impressive! All the Battlefront games have been good, the mix of mass open warfare, vehicles and a sense of scale all work really well with the iconic Star Wars settings. There is a lot of dying and a lot of respawning, but that is how it works. It is an infantry battle and you can treat yourself as expendable.
The beta has two planet surfaces, the second bing the ice planet Hoth. Imperial AT-AT stomp towards the base. Sentry guns and tunnels, trenches and rock faces make up the scene. Tie fighters and A-wings battle overhead. I didn’t get to fly anything, which is my preference, but that will come in time.
As a rebel fighter in the first game, seeing the imposing AT-AT slowly stomping forwards and blasters just bouncing off, backed up by stormtroopers was impressive, but suddenly Darth Vader turned up, light sabre deflecting shots as he carved through us. It was incredibly exciting. This is not my video but it does show the scene very well and an amusing moment with another hero.

The single player survival game has waves of Stormtroopers coming at you in close and personal on a very rocky and brilliantly lit Tattoine. I seemed to see the troopers up a lot closer and saw the impressive animation system at work on the NPC characters in this mode.
The game will of course be huge, but it is good to see it is as good as this already. I don’t think any of us who grew up with Star Wars in the late 70’s will ever get tired of the buzz of being in these environments. With this and Elite Dangerous on the Xbox One we have some tween memories to relive and now colour in.

AR glasses – Ray-ban

I just visited Ray-Ban’s virtual glasses modelling site. There have been a lot of ‘stick things on your face on a webcam’ applications but I was impressed with how quick, simple and accurate this one was. My regular glasses are Ray-Bans so I found the model number and tried my actual pair on virtually to see the difference.
The registration of my face even in bad lighting was incredibly quick, and yes I need a haircut!
Ar glasses
What was impressive is that the glasses appear to have lighting and a reflection in the lens, The still does not do that justice, but it really adds something over the the cartoon stickers of other AR web cam applications. The arms of the glasses also go around the side of your head.
Here is the ‘real’ pair for comparison.
glasses (non ar)
This is just a webcam on a webpage. Imagine the degree of world changing views we can create on portable holo style headsets.