Bonjour à tous,
J'essai de rendre en temps réel ma scène dans une cube map afin de l'envoyer dans un image effect. Le "post effect" fonctionne très bien avec une cube map statique.
Le résultat est le suivant :
Une cube map vide et avec le bogue suivant :
RenderTexture error: failed to retrieve color surface [invalid call] Erro in file: C:/BuildAgent/work/d9c031b1c154f5ae/Runtime/GfxDevice/d3d/RenderTextureD3D.cpp at line: 278
Peut être que c'est le même problème que dans ce sujet : http://answers.unity3d.com/questions...n-cubemap.html
Voici mon script qui est censé rendre ma cube map en temps réel :
Merci d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107 enum TextureCubeMapSize { Low = 512, Normal = 1024, Best = 2048, //VeryHigh = 4096, } public var m_TextureCubeMapSize : TextureCubeMapSize = TextureCubeMapSize.Normal ; public var m_RenderTexture : RenderTexture = null ; public var m_OneFacePerFrame = false ; //private var m_DummyCam : Camera = null ; function OnDisable() { if( m_RenderTexture ) { DestroyImmediate( m_RenderTexture ) ; m_RenderTexture = null ; } // if( m_DummyCam ) // { // DestroyImmediate( m_DummyCam ) ; // m_DummyCam = null ; // } } function Start () { // render all six faces at startup UpdateCubemap( 63 ) ; } function LateUpdate() { //yield WaitForEndOfFrame() ; UpdateCubemap() ; //yield ; } /* function OnPostRender() {} function OnPreCull() {} function OnPreRender() {} function OnRenderImage( inSource : RenderTexture, inDestination : RenderTexture ) {} function OnRenderObject() {} */ function OnWillRenderObject() { //UpdateCubemap() ; } function OnWillRender() { //UpdateCubemap() ; } function UpdateCubemap( inFaceMask : int ) { // if( !m_DummyCam ) // { // var aDummyCamObject = new GameObject ("CubemapCamera", Camera ) ; // aDummyCamObject.hideFlags = HideFlags.HideAndDontSave; // aDummyCamObject.transform.position = transform.position ; // aDummyCamObject.transform.rotation = transform.rotation ; // m_DummyCam = aDummyCamObject.camera; // m_DummyCam.enabled = false ; // } if( !m_RenderTexture ) { m_RenderTexture = new RenderTexture( m_TextureCubeMapSize, m_TextureCubeMapSize, 16, RenderTextureFormat.RGB565, RenderTextureReadWrite.Default ) ; m_RenderTexture.isCubemap = true ; //m_RenderTexture.hideFlags = HideFlags.HideAndDontSave ; //camera.targetTexture = m_RenderTexture ; } // m_DummyCam.transform.position = transform.position ; // m_DummyCam.transform.rotation = transform.rotation ; camera.RenderToCubemap( m_RenderTexture, inFaceMask ) ; } function UpdateCubemap() { if( m_OneFacePerFrame ) { var aFaceToRender = Time.frameCount % 6 ; var aFaceMask = 1 << aFaceToRender ; UpdateCubemap( aFaceMask ) ; } else { UpdateCubemap( 63 ) ; // all six faces } }
[Unity 3.5.5f3 pro : Windows seven 64bits : Geforce 650M 1Gb ( optimus utilise la geforce pour unity ) : i5 : 8go RAM ]
Partager