port from perforce

This commit is contained in:
2026-04-18 22:31:51 +02:00
commit 8d0ab5b7cc
8409 changed files with 3972376 additions and 0 deletions

View File

@@ -0,0 +1,133 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Aiwaz.Contracts;
using SlimDX;
using Aiwaz.Resources.Attributes;
using System.Collections.ObjectModel;
namespace Aiwaz.Resources.Prefab
{
[CreationParameters("Standard unity-sized non-inverted cube")]
public class CubeParams : ICreationParams
{
public float Width;
public float Height;
public float Depth;
public bool IsInverted;
public CubeParams()
{
Width = 1.0f;
Height = 1.0f;
Depth = 1.0f;
IsInverted = false;
}
}
[AiwazResource("Cube", "A simple non-uniform cube")]
public class Cube : Resource
{
public struct CommonCubeVertex
{
public CommonCubeVertex(SlimDX.Vector3 pos,
SlimDX.Vector3 normal,
SlimDX.Vector3 tangent,
SlimDX.Vector2 tex)
{
this.Pos = pos;
this.Normal = normal;
this.Tangent = tangent;
this.Tex = tex;
}
public SlimDX.Vector3 Pos;
public SlimDX.Vector3 Normal;
public SlimDX.Vector3 Tangent;
public SlimDX.Vector2 Tex;
};
public GeometryBuffer GeometryBuffer { get; protected set; }
public Cube(CubeParams parameters)
{
creationParams = parameters;
float width = parameters.Width * 0.5f;
float height = parameters.Height * 0.5f;
float depth = parameters.Depth * 0.5f;
float normal = parameters.IsInverted ? -1.0f : 1.0f;
float tangent = 1.0f;//isInverted ? -1.0f : 1.0f;
CommonCubeVertex[] vertices = new CommonCubeVertex[]
{
new CommonCubeVertex ( new SlimDX.Vector3( -width, height, -depth ), new SlimDX.Vector3(0.0f, normal, 0.0f), new SlimDX.Vector3(-tangent, 0.0f, 0.0f), new SlimDX.Vector2( 0.0f, 0.0f ) ),
new CommonCubeVertex ( new SlimDX.Vector3( width, height, -depth ), new SlimDX.Vector3(0.0f, normal, 0.0f), new SlimDX.Vector3(-tangent, 0.0f, 0.0f), new SlimDX.Vector2( 1.0f, 0.0f ) ),
new CommonCubeVertex ( new SlimDX.Vector3( width, height, depth ), new SlimDX.Vector3(0.0f, normal, 0.0f), new SlimDX.Vector3(-tangent, 0.0f, 0.0f), new SlimDX.Vector2( 1.0f, 1.0f ) ),
new CommonCubeVertex ( new SlimDX.Vector3( -width, height, depth ), new SlimDX.Vector3(0.0f, normal, 0.0f), new SlimDX.Vector3(-tangent, 0.0f, 0.0f), new SlimDX.Vector2( 0.0f, 1.0f ) ),
new CommonCubeVertex ( new SlimDX.Vector3( -width, -height, -depth ), new SlimDX.Vector3(0.0f, -normal, 0.0f), new SlimDX.Vector3(-tangent, 0.0f, 0.0f), new SlimDX.Vector2( 0.0f, 0.0f ) ),
new CommonCubeVertex ( new SlimDX.Vector3( width, -height, -depth ), new SlimDX.Vector3(0.0f, -normal, 0.0f), new SlimDX.Vector3(-tangent, 0.0f, 0.0f), new SlimDX.Vector2( 1.0f, 0.0f ) ),
new CommonCubeVertex ( new SlimDX.Vector3( width, -height, depth ), new SlimDX.Vector3(0.0f, -normal, 0.0f), new SlimDX.Vector3(-tangent, 0.0f, 0.0f), new SlimDX.Vector2( 1.0f, 1.0f ) ),
new CommonCubeVertex ( new SlimDX.Vector3( -width, -height, depth ), new SlimDX.Vector3(0.0f, -normal, 0.0f), new SlimDX.Vector3(-tangent, 0.0f, 0.0f), new SlimDX.Vector2( 0.0f, 1.0f ) ),
new CommonCubeVertex ( new SlimDX.Vector3( -width, -height, depth ), new SlimDX.Vector3(-normal, 0.0f, 0.0f), new SlimDX.Vector3(0.0f, tangent, 0.0f), new SlimDX.Vector2( 0.0f, 1.0f ) ),
new CommonCubeVertex ( new SlimDX.Vector3( -width, -height, -depth ), new SlimDX.Vector3(-normal, 0.0f, 0.0f), new SlimDX.Vector3(0.0f, tangent, 0.0f), new SlimDX.Vector2( 1.0f, 1.0f ) ),
new CommonCubeVertex ( new SlimDX.Vector3( -width, height, -depth ), new SlimDX.Vector3(-normal, 0.0f, 0.0f), new SlimDX.Vector3(0.0f, tangent, 0.0f), new SlimDX.Vector2( 1.0f, 0.0f ) ),
new CommonCubeVertex ( new SlimDX.Vector3( -width, height, depth ), new SlimDX.Vector3(-normal, 0.0f, 0.0f), new SlimDX.Vector3(0.0f, tangent, 0.0f), new SlimDX.Vector2( 0.0f, 0.0f ) ),
new CommonCubeVertex ( new SlimDX.Vector3( width, -height, depth ), new SlimDX.Vector3(normal, 0.0f, 0.0f), new SlimDX.Vector3(0.0f, -tangent, 0.0f), new SlimDX.Vector2( 1.0f, 1.0f ) ),
new CommonCubeVertex ( new SlimDX.Vector3( width, -height, -depth ), new SlimDX.Vector3(normal, 0.0f, 0.0f), new SlimDX.Vector3(0.0f, -tangent, 0.0f), new SlimDX.Vector2( 0.0f, 1.0f ) ),
new CommonCubeVertex ( new SlimDX.Vector3( width, height, -depth ), new SlimDX.Vector3(normal, 0.0f, 0.0f), new SlimDX.Vector3(0.0f, -tangent, 0.0f), new SlimDX.Vector2( 0.0f, 0.0f ) ),
new CommonCubeVertex ( new SlimDX.Vector3( width, height, depth ), new SlimDX.Vector3(normal, 0.0f, 0.0f), new SlimDX.Vector3(0.0f, -tangent, 0.0f), new SlimDX.Vector2( 1.0f, 0.0f ) ),
new CommonCubeVertex ( new SlimDX.Vector3( -width, -height, -depth ), new SlimDX.Vector3(0.0f, 0.0f, -normal), new SlimDX.Vector3(-tangent, 0.0f, 0.0f), new SlimDX.Vector2( 0.0f, 1.0f ) ),
new CommonCubeVertex ( new SlimDX.Vector3( width, -height, -depth ), new SlimDX.Vector3(0.0f, 0.0f, -normal), new SlimDX.Vector3(-tangent, 0.0f, 0.0f), new SlimDX.Vector2( 1.0f, 1.0f ) ),
new CommonCubeVertex ( new SlimDX.Vector3( width, height, -depth ), new SlimDX.Vector3(0.0f, 0.0f, -normal), new SlimDX.Vector3(-tangent, 0.0f, 0.0f), new SlimDX.Vector2( 1.0f, 0.0f ) ),
new CommonCubeVertex ( new SlimDX.Vector3( -width, height, -depth ), new SlimDX.Vector3(0.0f, 0.0f, -normal), new SlimDX.Vector3(-tangent, 0.0f, 0.0f), new SlimDX.Vector2( 0.0f, 0.0f ) ),
new CommonCubeVertex ( new SlimDX.Vector3( -width, -height, depth ), new SlimDX.Vector3(0.0f, 0.0f, normal), new SlimDX.Vector3(-tangent, 0.0f, 0.0f), new SlimDX.Vector2( 1.0f, 1.0f ) ),
new CommonCubeVertex ( new SlimDX.Vector3( width, -height, depth ), new SlimDX.Vector3(0.0f, 0.0f, normal), new SlimDX.Vector3(-tangent, 0.0f, 0.0f), new SlimDX.Vector2( 0.0f, 1.0f ) ),
new CommonCubeVertex ( new SlimDX.Vector3( width, height, depth ), new SlimDX.Vector3(0.0f, 0.0f, normal), new SlimDX.Vector3(-tangent, 0.0f, 0.0f), new SlimDX.Vector2( 0.0f, 0.0f ) ),
new CommonCubeVertex ( new SlimDX.Vector3( -width, height, depth ), new SlimDX.Vector3(0.0f, 0.0f, normal), new SlimDX.Vector3(-tangent, 0.0f, 0.0f), new SlimDX.Vector2( 1.0f, 0.0f ) ),
};
var vertexElements = new VertexElement[]
{
new VertexElement(VertexElement.Format.Position),
new VertexElement(VertexElement.Format.Normal),
new VertexElement(VertexElement.Format.Tangent),
new VertexElement(VertexElement.Format.Texture2D)
};
var invertedIndices = new uint[] { 0,1,3, 3,1,2, 5,4,6, 6,4,7, 8,9,11, 11,9,10, 13,12,14, 14,12,15, 16,17,19, 19,17,18, 21,20,22, 22,20,23 };
var normalIndices = new uint[] { 3,1,0, 2,1,3, 6,4,5, 7,4,6, 11,9,8, 10,9,11, 14,12,13, 15,12,14, 19,17,16, 18,17,19, 22,20,21, 23,20,22 };
this.GeometryBuffer = GeometryBuffer.Create<CommonCubeVertex>(
parameters.IsInverted ? invertedIndices : normalIndices,
vertices,
vertexElements,
false);
}
private ICreationParams creationParams;
public override ICreationParams CreationParams
{
get { return creationParams; }
}
private ObservableCollection<IResource> children;
[ReadOnly]
public override ObservableCollection<IResource> Children
{
get
{
if (children == null)
{
children = new ObservableCollection<IResource>();
children.Add(GeometryBuffer);
}
return children;
}
}
}
}

View File

@@ -0,0 +1,135 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Aiwaz.Contracts;
using Aiwaz.Resources.Attributes;
using System.Collections.ObjectModel;
namespace Aiwaz.Resources.Prefab
{
public struct PingPongBufferDescription
{
public int LoopCount;
public string ShaderFileName;
public string ShaderTechniqueA;
public string ShaderTechniqueB;
public string PreProcessShaderTechnique;
public int TextureWidth;
public int TextureHeight;
public SlimDX.DXGI.Format TextureFormat;
};
[CreationParameters("Standard ping-pong buffer")]
public class PingPongBufferParams : ICreationParams
{
public PingPongBufferDescription Desc;
public Texture InputTexture;
public PingPongBufferParams()
{
}
}
[AiwazResource("PingPong buffer", "Two buffers that alternate each other")]
public class PingPongBuffer : Resource
{
public Texture InputTexture { get; protected set;}
public Texture OutputTexture { get { return textureB.Texture; } }
public RenderCommandNode RootNode { get; protected set; }
public RenderCommandNode PreProcessNode { get; protected set; }
RenderCommandNode renderTargetNodeA;
RenderCommandNode renderTargetNodeB;
Shader shaderA;
Shader shaderB;
Shader shaderPreProcess;
RenderTargetTexture textureA;
RenderTargetTexture textureB;
GeometryBuffer screenQuad;
ShaderParameterSet shaderParameterA;
ShaderParameterSet shaderParameterB;
ShaderParameterSet shaderParameterPreProcess;
public PingPongBuffer(PingPongBufferParams parameters)
{
creationParams = parameters;
if (string.IsNullOrEmpty(parameters.Desc.ShaderFileName))
throw new ArgumentNullException("ShaderFileName");
shaderA = new Shader(new ShaderParams() { FileName = parameters.Desc.ShaderFileName, TechniqueName = parameters.Desc.ShaderTechniqueA } );
shaderB = new Shader(new ShaderParams() { FileName = parameters.Desc.ShaderFileName, TechniqueName = parameters.Desc.ShaderTechniqueB } );
shaderPreProcess = new Shader(new ShaderParams() { FileName = parameters.Desc.ShaderFileName, TechniqueName = parameters.Desc.PreProcessShaderTechnique });
textureA = new RenderTargetTexture(new RenderTargetTextureParams() { width = parameters.Desc.TextureWidth, height = parameters.Desc.TextureHeight, format = parameters.Desc.TextureFormat } );
textureB = new RenderTargetTexture(new RenderTargetTextureParams() { width = parameters.Desc.TextureWidth, height = parameters.Desc.TextureHeight, format = parameters.Desc.TextureFormat } );
shaderParameterA = new ShaderParameterSet();
shaderParameterA.SetParameter("InputTexture", textureB.Texture, ParameterBindType.BindBySemantic);
shaderParameterB = new ShaderParameterSet();
shaderParameterB.SetParameter("InputTexture", textureA.Texture, ParameterBindType.BindBySemantic);
this.InputTexture = parameters.InputTexture;
shaderParameterPreProcess = new ShaderParameterSet();
shaderParameterPreProcess.SetParameter("InputTexture", this.InputTexture, ParameterBindType.BindBySemantic);
var quad = new Quad(new QuadParams() { Width = 2.0f, Height = 2.0f } );
screenQuad = quad.GeometryBuffer;
renderTargetNodeA = new RenderCommandNode();
renderTargetNodeA.Children.Add(textureA);
renderTargetNodeA.Children.Add(shaderA);
renderTargetNodeA.Children.Add(shaderParameterA);
renderTargetNodeA.Children.Add(screenQuad);
renderTargetNodeB = new RenderCommandNode();
renderTargetNodeB.Children.Add(textureB);
renderTargetNodeB.Children.Add(shaderB);
renderTargetNodeB.Children.Add(shaderParameterB);
renderTargetNodeB.Children.Add(screenQuad);
this.RootNode = new RenderCommandNode();
this.PreProcessNode = new RenderCommandNode();
// preprocessing
this.RootNode.Children.Add(textureB);
this.RootNode.Children.Add(shaderPreProcess);
this.RootNode.Children.Add(shaderParameterPreProcess);
this.RootNode.Children.Add(screenQuad);
this.RootNode.Children.Add(this.PreProcessNode);
// real pingpongs
for (int i = 0; i < parameters.Desc.LoopCount; ++i)
{
this.RootNode.Children.Add(renderTargetNodeA);
this.RootNode.Children.Add(renderTargetNodeB);
}
}
private ICreationParams creationParams;
public override ICreationParams CreationParams
{
get { return creationParams; }
}
private ObservableCollection<IResource> children;
[ReadOnly]
public override ObservableCollection<IResource> Children
{
get
{
if (children == null)
{
children = new ObservableCollection<IResource>();
children.Add(InputTexture);
children.Add(OutputTexture);
children.Add(RootNode);
children.Add(PreProcessNode);
}
return children;
}
}
}
}

View File

@@ -0,0 +1,119 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Aiwaz.Contracts;
using SlimDX;
using Aiwaz.Resources.Attributes;
using System.Collections.ObjectModel;
namespace Aiwaz.Resources.Prefab
{
[CreationParameters("Unity-sized one-sided quad")]
public class QuadParams : ICreationParams
{
public float Width;
public float Height;
public bool IsTwoSided;
public QuadParams()
{
Width = 1.0f;
Height = 1.0f;
IsTwoSided = false;
}
}
[AiwazResource("Quad", "A simple 2d non-uniform Quad")]
public class Quad : Resource
{
public struct CommonQuadVertex
{
public CommonQuadVertex(SlimDX.Vector3 pos,
SlimDX.Vector3 normal,
SlimDX.Vector2 tex)
{
this.Pos = pos;
this.Normal = normal;
this.Tex = tex;
}
public SlimDX.Vector3 Pos;
public SlimDX.Vector3 Normal;
public SlimDX.Vector2 Tex;
};
public GeometryBuffer GeometryBuffer { get; protected set; }
public Quad(QuadParams parameters)
{
this.creationParams = parameters;
float width = parameters.Width * 0.5f;
float height = parameters.Height * 0.5f;
CommonQuadVertex[] quadOneSidedVertices = new CommonQuadVertex[]
{
new CommonQuadVertex( new SlimDX.Vector3( -width, height, 0.0f ), new SlimDX.Vector3(0.0f, 0.0f, -1.0f), new SlimDX.Vector2( 0.0f, 0.0f ) ),
new CommonQuadVertex( new SlimDX.Vector3( width, -height, 0.0f ), new SlimDX.Vector3(0.0f, 0.0f, -1.0f), new SlimDX.Vector2( 1.0f, 1.0f ) ),
new CommonQuadVertex( new SlimDX.Vector3( -width, -height, 0.0f ), new SlimDX.Vector3(0.0f, 0.0f, -1.0f), new SlimDX.Vector2( 0.0f, 1.0f ) ),
new CommonQuadVertex( new SlimDX.Vector3( -width, height, 0.0f ), new SlimDX.Vector3(0.0f, 0.0f, -1.0f), new SlimDX.Vector2( 0.0f, 0.0f ) ),
new CommonQuadVertex( new SlimDX.Vector3( width, height, 0.0f ), new SlimDX.Vector3(0.0f, 0.0f, -1.0f), new SlimDX.Vector2( 1.0f, 0.0f ) ),
new CommonQuadVertex( new SlimDX.Vector3( width, -height, 0.0f ), new SlimDX.Vector3(0.0f, 0.0f, -1.0f), new SlimDX.Vector2( 1.0f, 1.0f ) ),
};
CommonQuadVertex[] quadTwoSidedVertices = new CommonQuadVertex[]
{
new CommonQuadVertex( new SlimDX.Vector3( -width, height, 0.0f ), new SlimDX.Vector3(0.0f, 0.0f, -1.0f), new SlimDX.Vector2( 0.0f, 0.0f ) ),
new CommonQuadVertex( new SlimDX.Vector3( width, -height, 0.0f ), new SlimDX.Vector3(0.0f, 0.0f, -1.0f), new SlimDX.Vector2( 1.0f, 1.0f ) ),
new CommonQuadVertex( new SlimDX.Vector3( -width, -height, 0.0f ), new SlimDX.Vector3(0.0f, 0.0f, -1.0f), new SlimDX.Vector2( 0.0f, 1.0f ) ),
new CommonQuadVertex( new SlimDX.Vector3( -width, height, 0.0f ), new SlimDX.Vector3(0.0f, 0.0f, -1.0f), new SlimDX.Vector2( 0.0f, 0.0f ) ),
new CommonQuadVertex( new SlimDX.Vector3( width, height, 0.0f ), new SlimDX.Vector3(0.0f, 0.0f, -1.0f), new SlimDX.Vector2( 1.0f, 0.0f ) ),
new CommonQuadVertex( new SlimDX.Vector3( width, -height, 0.0f ), new SlimDX.Vector3(0.0f, 0.0f, -1.0f), new SlimDX.Vector2( 1.0f, 1.0f ) ),
new CommonQuadVertex( new SlimDX.Vector3( -width, height, 0.0f ), new SlimDX.Vector3(0.0f, 0.0f, 1.0f), new SlimDX.Vector2( 1.0f, 0.0f ) ),
new CommonQuadVertex( new SlimDX.Vector3( width, -height, 0.0f ), new SlimDX.Vector3(0.0f, 0.0f, 1.0f), new SlimDX.Vector2( 0.0f, 1.0f ) ),
new CommonQuadVertex( new SlimDX.Vector3( -width, -height, 0.0f ), new SlimDX.Vector3(0.0f, 0.0f, 1.0f), new SlimDX.Vector2( 1.0f, 1.0f ) ),
new CommonQuadVertex( new SlimDX.Vector3( -width, height, 0.0f ), new SlimDX.Vector3(0.0f, 0.0f, 1.0f), new SlimDX.Vector2( 1.0f, 0.0f ) ),
new CommonQuadVertex( new SlimDX.Vector3( width, height, 0.0f ), new SlimDX.Vector3(0.0f, 0.0f, 1.0f), new SlimDX.Vector2( 0.0f, 0.0f ) ),
new CommonQuadVertex( new SlimDX.Vector3( width, -height, 0.0f ), new SlimDX.Vector3(0.0f, 0.0f, 1.0f), new SlimDX.Vector2( 0.0f, 1.0f ) ),
};
var vertexElements = new VertexElement[]
{
new VertexElement(VertexElement.Format.Position),
new VertexElement(VertexElement.Format.Normal),
new VertexElement(VertexElement.Format.Texture2D)
};
var oneSidedIndices = new uint[] { 0,1,2, 3,4,5 };
var twoSidedIndices = new uint[] { 0, 1, 2, 3, 4, 5, 11, 10, 9, 8, 7, 6 };
this.GeometryBuffer = GeometryBuffer.Create<CommonQuadVertex>(
parameters.IsTwoSided ? twoSidedIndices : oneSidedIndices,
parameters.IsTwoSided ? quadTwoSidedVertices : quadOneSidedVertices,
vertexElements,
false);
}
private ICreationParams creationParams;
public override ICreationParams CreationParams
{
get { return creationParams; }
}
private ObservableCollection<IResource> children;
[ReadOnly]
public override ObservableCollection<IResource> Children
{
get
{
if (children == null)
{
children = new ObservableCollection<IResource>();
children.Add(GeometryBuffer);
}
return children;
}
}
}
}